ACM 简单A+B
Problem Description
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即A+B的值或者是-1。
Sample Input
1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
Sample Output
3
-1
-1
100
Source
浙大计算机研究生复试上机考试-2006年
#include<stdio.h>
int main(){
int A,B,K,sum,flag;
while(scanf("%d%d%d",&A,&B,&K)!=EOF){
if( !A && !B)
break;
sum=0;
flag=0;
sum=A+B;
while(K--){
if((A%10) != (B%10)){
flag=1;
break;
}
A/=10;
B/=10;
}
if(flag)
printf("%d\n",sum);
else
printf("-1\n");
}
return 0;
}/*#include<iostream>
using namespace std;
int main()
{
int a,b,c,k,tag;
while(1)
{
cin>>a>>b>>k;
if(!a&&!b)
break;
tag=0;
c=a+b;
while(k--)
{
if(a%10!=b%10)
{
tag=1;
break;
}
a/=10;
b/=10;
}
if(tag)
cout<<c<<endl;
else
cout<<"-1"<<endl;
}
return 0;
}
*/
第一段代码是我写的,第二段代码是网上的,为什么我把代码从C++修改成C就无法调试?放到ACM上也AC不了?
[解决办法]
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。
[解决办法]
什么叫无法调试?
目测代码无问题啊