C语言初学者碰到的问题!

来源:百度知道 编辑:UC知道 时间:2024/06/16 05:07:44
一道题 是这样的。
给一个不多于5位的正整数,要求;
1:写出它是几位数
2:分别输出每一位数字
3:按照逆序输出各位数字。
下面是我的程序 出现21个错误(大部分是同样的错误,请帮我指出错误及知识点)
#include<stdio.h>
void main()
{
int a,b,c,d,e,;
long g,h;
scanf("%d,%d,%d,%d,%d\n",&a,&b,&c,&d,&e);
g=e+10*d+100*c+1000*b+10000*a;
if (g<10) printf("It's a 1 wei shu");
if (g<100&&g>9) printf("It's a 2 wei shu");
if (g<1000&&g>99)printf("It's a 3 wei shu");
if (g<10000&&g>999)printf("It's a 4 wei shu");
if (g<100000&&g>9999)printf("It's a 5 wei shu");
}
printf("The gewei is %d\n",e); ( 从这里出错 指着The 报警 expected)
printf("The shiwei is %d\n",d);
printf("The baiwei is %d\n",c);
printf("The qianwei is %d\n",b);
printf("The wanwei is %d\n",a);
h=a+10*b+100*c+1000*d+10000*e;

既然有问不多于5位数 那么这个数就是在1到5之间徘徊
那么 你的scanf("%d,%d,%d,%d,%d\n",&a,&b,&c,&d,&e);
是否已经确定输入这个数为5位? 不然的话 a或b或c或d之间有0的话如何
比如一个4位数 你能0****这样代表吗?
应该只输入一位来判断
再有 It's a 2 wei shu 类似这样的 每个里面你加个a的输出干什么
后面 判断各个位的数字
来使用if语句 首先前面已经测试出它是个几位数
前面的1,2,3,4,5得拿一个名称来代替 比如l 让那个判断之后l=一个数值 而不是看你去写
然后通过if语句做判断 比如l=1 那么只用判断个位
l=2 就从十位判断起 比如十位=g/10 然后个位=g%10 不够位的高位附初值都为0
大概就是这个意思 这样就把各个位的数字给定出来了
最后 逆序输出这个数字.. 不知道你怎么想的
打个比方吧 比如这个数是12345 反输出就是54321
按你的方法算就是 h=5+4*10+3*100+2*1000+1*10000 等于多少... 是吧
直接printf("%d%d%d%d%d",a,b,c,d,e);不就得了被.
自己想想 大体就这样 好久没有看过了 一时也写不了那么规范的 参考下吧 意思就这样 学语言不容易啊

long g,h;
应该为long int g,h;
这样你再试试
以上,小白见解

两个小错误,具体的看一下注释:
void main()
{
int a,b,c,d,e; ////这儿,在原来代码中e后面多了一个逗号
long g,h;
scanf("%d,%d,%d,%d,%d\n",&a,&b,&c,&d,&e);
g=e+10*d+100*c+1000*b+10000*a;
if (g<10) printf(&