日本平成二十二年:谁能告诉我这道C程序题为什么运行出错

来源:百度文库 编辑:高校问答 时间:2024/05/05 21:23:55
题目的要求是给一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆顺序输出各位数字.例如原数为321应输出123
我写的程序是
#include<stdio.h>
void main()
{
long int num;
int g,s,b,q,w,place;
printf("Please input a number:\n");
scanf("%ld",&num);
if(num<=9&&num>0)
place=1;
else if(num<=99)
place=2;
else if(num<=999)
place=3;
else if(num<=9999)
place=4;
else if(num<=99999)
place=5;
else printf("Error number!");
printf("place=%d\n",place);
printf("Each place is:");
w=num/10000;
q=num%10000/1000;
b=num%1000/100;
s=num%100/10;
g=num/10;
switch(place)
{case1: printf("%d\n",g);
printf("%d\n",g); break;
case2: printf("%d,%d\n",s,g);
printf("%d%d\n",g,s); break;
case3: printf("%d,%d,%d\n",b,s,g);
printf("%d%d%d\n",g,s,b); break;
case4: printf("%d,%d,%d,%d\n",q,b,s,g);
printf("%d%d%d%d\n",g,s,b,q); break;
case5: printf("%d,%d,%d,%d,%d\n",w,q,b,s,g);
printf("%d%d%d%d%d\n",g,s,b,q,w); break;
defult: printf("Error!\n");
}
}

g=num%10;
前面数值的判断没有考虑到负数,如果输入负数的话会出错。
还有default拼写错误,大概是笔误,后面最好带上break;
还有case后要有空格再加1(2 3 4 5)。

我给你一个标程吧!
#include <stdio.h>
int main()
{
int i,n;
scanf ("%d",&n);
while (n)
{
j=n%10;
printf ("%d",j);
n/=10;
}
printf ("\n");
return 0;
}

你的是长整形的,后面“numw=num/10000; q=num%10000/1000;
b=num%1000/100;
s=num%100/10;
g=num/10;”中,q,b,s,g都转化成了长整形了,输出是应用%ld。我认为。