解题思路:
在for循环中用getchar()接收输入的数字字符,并将其ASCII码赋值给temp(temp的数据类型为int),temp==10时(换行“\n”的ASCII码是10)判断输入结束跳出循环,未输入换行前则用count++统计位数,并将temp减48(字符0的ASCII码是48)后赋值给数组储存。
注意事项:
字符0的ASCII码是48,换行“\n”的ASCII码是10,输出第二行时最后一个数特殊处理。
参考代码:
#include <stdio.h> int main() { int i,count=0,x[5]; //count统计位数,x[5]储存数字 for (i=0;i<5;i++) { int temp=0; temp=getchar(); //temp临时储存数字字符的ASCII码 if (temp==10) break; //输入换行\n后跳出for循环 count++; x[i]=temp-48; //字符0的ASCII码是48 } printf("%d\n",count); for (i=0;i<=count-2;i++) printf("%d ",x[i]); printf("%d\n",x[i]); for (i=count-1;i>=0;i--) printf("%d",x[i]); return 0; }
0.0分
235 人评分
#include<stdio.h> int main() { long int number; int a,b,c,d,e,i; scanf("%ld",&number); if(number>9999) i=5; else if(number>999) i=4; else if(number>99) i=3; else if(number>9) i=2; else i=1; e=number/10000; d=(int)(number-e*10000)/1000; c=(int)(number-e*10000-d*1000)/100; b=(int)(number-e*10000-d*1000-c*100)/10; a=(int)(number-e*10000-d*1000-c*100-b*10); switch(i) {case 5:printf("%d %d %d %d %d",e d c b a); printf("%d%d%d%d%d",abcde); break; case 4:printf("%d %d %d %d",d c b a); printf("%d%d%d%d",abcd);
#include<stdio.h> int main() { int a; scanf("%d",&a); if (a>=10000){printf("5\n");} else if(a>=1000){printf("4\n");} else if(a>=100){printf("3\n");} else if(a>=10){printf("2\n");} else {printf("1\n");} if (a/10000>=1){printf("%d %d %d %d %d\n",a/10000,a/1000%10,a/100%10,a/10%10,a%10);} else if(a/1000%10>=1){printf("%d %d %d %d\n",a/1000%10,a/100%10,a/10%10,a%10);} else if(a/100%10>=1){printf("%d %d %d\n",a/100%10,a/10%10,a%10);} else if(a/10%10>=1){printf("%d %d\n",a/10%10,a%10);} else {printf("%d\n",a%10);} if (a/10000>=1){printf("%d%d%
风火雷电 2018-11-28 23:58:13 |
放不下了0.0
我这个错误了请大佬看一下哪里错了 #include<stdio.h> int main() { int a,i,j=0,k,b[5]; while((i=getchar())!='\n') { a++; b[j]=i; j++; if (a=5) i='\n'; } printf("%d\n",a); for(k=0;k<a;k++) printf("%c ",b[k]); printf("\n"); for(k=a-1;k>=0;k--) printf("%c",b[k]); printf("\n"); }
kelen 2018-11-20 11:14:13 |
等等,我好像知道哪里错了
Clearlove7 2018-11-25 20:40:58 |
a没有赋予初始值,for循环后面语句多于一行需要用{}括起来
这个答案错误。这个怎么输才会分别输出每一位数呀 #include<stdio.h> int main() { int n=0,a,b,c=0; scanf("%d",&a); while(a!=0) {b=a%10;n++;c=c*10+b; a=a/10;} printf("the number is %d\n,the changed number is%d\n",c,n); }
Clearlove7 2018-11-25 20:53:09 |
int x,a,b,c,d,e; a=x/10000;b=x/1000%10;c=x/100%10;d=x/10%10;e=x%10; a b c d e即为每一位数
#include<stdio.h> #include<string.h> void main() { char a[6]; int b,c; scanf("%s", &a); b = strlen(a); printf("%d\n", strlen(a)); for (c = 0; c <=b; c++) { printf("%c ",a[c]); } printf("\n"); for (c = 4; c >= 0; c--) { printf("%c", a[c]); } printf("\n"); } 只认个位数,我当字符存储,为啥这个不通过呢,我晕死哟
逸轩 2018-12-04 11:53:57 |
#include<stdio.h> #include<string.h> int main() { char a[10],i; scanf("%s",a); printf("%d\n",strlen(a)); for(i=0;i<strlen(a);i++) printf("%c ",a[i]); printf("\n"); for(i=0;i<strlen(a);i++) printf("%c",a[strlen(a)-i-1]); getchar();getchar(); return 0; }
#include<stdio.h> int main() { int n,a,b1,b2,b3,b4,b5; scanf("%d",&n); a=n; b1=a%10;//b1是个位数 a=a/10; b2=a%10;//b2是十位数 a=a/10; b3=a%10;//b3是百位数 a=a/10; b4=a%10;//b4是千位数 a=a/10; b5=a%10;//b5是万位数 if(b2==0 && b3==0 && b4==0 && b5==0) { printf("1\n"); printf("%d\n",n); printf("%d",n); } else if(b3==0 && b4==0 && b5==0) { printf("2\n%d %d\n%d%d",b2,b1,b1,b2); } else if(b4==0 && b5==0) { printf("3\n%d %d %d\n%d%d%d",b3,b2,b1,b1,b2,b3); } else if(b5==0) { printf("4\n%d %d %d %d\n%d%d%d%d",b4,b3,b2,b1,b1,b2,b3,b4); } else { printf("5\n%d %d %d %d %d\n%d%d%d%d%d",
int a,b,c,d,e,n; scanf("%d",&n); a=n/10000; b=n%10000/1000; c=n%1000/100; d=n%100/10; e=n%10; if(a>=1)printf("5\n%d %d %d %d %d\n%d%d%d%d%d",a,b,c,d,e,e,d,c,b,a); else if(b>=1)printf("4\n%d %d %d %d\n%d%d%d%d",b,c,d,e,e,d,c,b); else if(c>=1)printf("3\n%d %d %d\n%d%d%d",c,d,e,e,d,c); else if(d>=1)printf("2\n%d %d\n%d%d",d,e,e,d); else printf("1\n%d\n%d",e,e); return 0;