优艾设计网

我编程哪里错了(c语言)?一位数和两位数可以,一旦输入三位数以上就无法输出?

我编程哪里错了(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;

}


0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜