我编程哪里错了(c语言)?一位数和两位数可以,一旦输入三位数以上就无法输出?
360U3193585767 2021-11-25 10:57 优艾设计网_设计百科 你得把程序想要实现的功能写出来。现在只能说你错误的地方,在程序的第8-9行,建议先改为for(u=a;u>=10;i++)u=u/10;
陌桑503 优艾设计网_设计百科 2021-11-25 11:06 scanf那里 或者就是类型问题 溢出了
MikeSuen 优艾设计网_PS论坛 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'优艾设计网_Photoshop论坛;
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 main(){
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;
}
精彩评论