我编程哪里错了(c语言)?一位数和两位数可以,一旦输入三位数以上就无法输出?
陌桑503 2021-11-25 11:06 开发者_StackOverflow中文版 scanf那里 或者就是类型问题 溢出了
MikeSuen 开发者_运维知识库 2021-11-25 11:08 %d换成%4d试试?好久没碰c了
莫忘初_995 2021-11-25 11:09
//直接使用字符串处理无进位运算处理更简单;代码如下
#include<stdio.h>
int main(){
long a,b;
char c[11],d[11],i=0;
scanf("%ld%ld",&a,&b);
sprintf(c,"%10ld",a);
sprintf(d,"%10ld",b);
for(i=0;i<10;i++){
c[i]=c[i]+d[i]-'0';
if(c[i]<'0')
c[i]=' ';
else if(c[i]>'9')
c[i]-=10;
}
for(i=0;
c[i]==' '||c[i]=='0';
i++);
printf(c+i);开发者_运维技巧
return 0;}
Mr.SmartGuy 2021-11-25 11:09
你的程序算法没错,只是计算输入值的位数时有两处问题。
改正的程序如下(改动的地方见注释)
#include <stdio.h>
#include <stdlib.h>
int mai开发者_开发技巧n(){
int a,b,c,d,i=1,u,s=0,k=1,j,p;
scanf("%d%d",&a,&b);
u=a;//这里加一句,为u赋值a
while(u>=10){
u=u/10;//这里把u=a/10改成u=u/10
i=i+1;
}
for(p=1;p<=i;p++){
c=a%10;
d=b%10;
a=(a-c)/10;
b=(b-d)/10;
j=(c+d)%10;
s=s+k*j;
k=k*10;
}
printf("%d",s);
return 0;
}
精彩评论