鱼C论坛

 找回密码
 立即注册
查看: 3121|回复: 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程序就有问题了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

但是我不明白我设定的是大于99999才执行goto啊,为什么退出不了循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

#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程序就有问题了,

//123456
//该数格式不合法,请重新输入5位数:
//12345
//12345:的逆序排列为:54321
//12345的位数为:5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

#include<stdio.h>
void
main()
{
        int m=0,i=0;      /*   对于不同的编译器int的字节数可能不同,所以定义为unsigned会比较安全些  */
        scanf("%d",&m);       /*   如果是unsigned,说明符为%ld     */
        if(m/100000!=0)
        { 
            printf("数字多于5位\n");
            return;
          }
         printf("数字的倒序是:");          
        while(m)
        {
        printf("%d",m%10);
                m/=10;
                 i++;
        }
        printf("\n数字是%d位",i);
        return;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2016-11-1 14:41:04 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-1 16:04:45 | 显示全部楼层
我也运行不起
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 15:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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