开发者

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

360U319358576开发者_运维百科7 2021-11-25 10:57

你得把程序想要实现的功能写出来。现在只能说你错误的地方,在程序的第8-9行,建议先改为for(u=a;u>=10;i++)u=u/10;


陌桑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;

}


0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜