我编程哪里错了(c语言)?一位数和两位数可以,一旦输入三位数以上就无法输出
生活随笔
收集整理的這篇文章主要介紹了
我编程哪里错了(c语言)?一位数和两位数可以,一旦输入三位数以上就无法输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
你得把程序想要實現的功能寫出來。現在只能說你錯誤的地方,在程序的第8-9行,建議先改為for(u=a;u>=10;i++)u=u/10;
scanf那里 或者就是類型問題 溢出了
%d換成%4d試試?好久沒碰c了
//直接使用字符串處理無進位運算處理更簡單;代碼如下#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;}
你的程序算法沒錯,只是計算輸入值的位數時有兩處問題。改正的程序如下(改動的地方見注釋)#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賦值awhile(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;}
scanf那里 或者就是類型問題 溢出了
%d換成%4d試試?好久沒碰c了
//直接使用字符串處理無進位運算處理更簡單;代碼如下#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;}
你的程序算法沒錯,只是計算輸入值的位數時有兩處問題。改正的程序如下(改動的地方見注釋)#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賦值awhile(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;}
總結
以上是生活随笔為你收集整理的我编程哪里错了(c语言)?一位数和两位数可以,一旦输入三位数以上就无法输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求那年夏天宁静的海歌词!
- 下一篇: 樱舞奇迹一套换城主一套亏吗?