鱼C论坛

 找回密码
 立即注册
查看: 3453|回复: 6

2天百思不得骑姐,求助一道C程序题目

[复制链接]
发表于 2016-10-30 20:32:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:给出一个不多余5位的正整数,要求1求出他是几位数2分别输出每一位数3逆序输出各位数





#include <stdio.h>
#include<conio.h>
#include <math.h>
int main()
{
long int i1,i2,i3,i4,i5,a,n=0;

loop:     scanf("%ld",&a);
if(a>=0&&a<=9) n=1;
else if(a<=99) n=2;
else if(a<=999) n=3;
else if(a<=9999) n=4;
else if(a<=99999) n=5;
else if(a>99999) printf("该数格式不合法,请重新输入5位数:\n");goto loop;

i1=a/10000;
i2=a%10000/1000;
i3=a%10000%1000/100;
i4=a%10000%1000%100/10;
i5=a%10000%1000%100%10/1;

printf("%ld:的逆序排列为:%ld%ld%ld%ld%ld\n",a,i5,i4,i3,i2,i1);
printf("%ld的位数为:%ld\n",a,n);





       
        return 0;
}















我调试的问题是输入123456程序检查出不合法,然后我输入12345程序就有问题了,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-30 21:09:25 | 显示全部楼层
我换成do
         {

          }
          while(a>99999)
可以正常运行了

但是我不明白我设定的是大于99999才执行goto啊,为什么退出不了循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-30 21:14:06 | 显示全部楼层
  1. //上面代码,有一个低级错误,少了一对大括号。改了的代码如下,运行结果正确

  2. //题目:给出一个不多余5位的正整数,要求 1求出他是几位数 2分别输出每一位数 3逆序输出各位数
  3. //http://bbs.fishc.com/thread-77995-1-1.html

  4. #include <stdio.h>
  5. #include<conio.h>
  6. #include <math.h>
  7. int main()
  8. {
  9.         long int i1, i2, i3, i4, i5, a, n = 0;

  10. loop:
  11.         scanf("%ld", &a);
  12.         if (a >= 0 && a <= 9) n = 1;
  13.         else if (a <= 99) n = 2;
  14.         else if (a <= 999) n = 3;
  15.         else if (a <= 9999) n = 4;
  16.         else if (a <= 99999) n = 5;
  17.         else if (a > 99999) {printf("该数格式不合法,请重新输入5位数:\n"); goto loop;}

  18.         i1 = a / 10000;
  19.         i2 = a % 10000 / 1000;
  20.         i3 = a % 10000 % 1000 / 100;
  21.         i4 = a % 10000 % 1000 % 100 / 10;
  22.         i5 = a % 10000 % 1000 % 100 % 10 / 1;

  23.         printf("%ld:的逆序排列为:%ld%ld%ld%ld%ld\n", a, i5, i4, i3, i2, i1);
  24.         printf("%ld的位数为:%ld\n", a, n);

  25.         return 0;
  26. }

  27. //我调试的问题是输入123456程序检查出不合法,然后我输入12345程序就有问题了,

  28. //123456
  29. //该数格式不合法,请重新输入5位数:
  30. //12345
  31. //12345:的逆序排列为:54321
  32. //12345的位数为:5
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-31 08:36:51 | 显示全部楼层
本帖最后由 代码农民 于 2016-10-31 09:26 编辑

  1. #include<stdio.h>
  2. void
  3. main()
  4. {
  5.         int m=0,i=0;      /*   对于不同的编译器int的字节数可能不同,所以定义为unsigned会比较安全些  */
  6.         scanf("%d",&m);       /*   如果是unsigned,说明符为%ld     */
  7.         if(m/100000!=0)
  8.         {
  9.             printf("数字多于5位\n");
  10.             return;
  11.           }
  12.         printf("数字的倒序是:");          
  13.         while(m)
  14.         {
  15.         printf("%d",m%10);
  16.                 m/=10;
  17.                  i++;
  18.         }
  19.         printf("\n数字是%d位",i);
  20.         return;
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-1 02:05:25 | 显示全部楼层
不是很建议使用goto 会有莫名其妙的bug,而且就循环来说 用loop:来表示的话有点像汇编语言了,与C有些诧异。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-1 14:41:04 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-1 16:04:45 | 显示全部楼层
我也运行不起
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 14:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表