标题:新手求助
只看楼主
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
结帖率:96.43%
已结贴  问题点数:20 回复次数:5 
新手求助
程序代码:
#include<stdio.h>
void main()
{
    long m;
    int a,b,c,d,e,n;
    printf("请输入一个不多于5位的正整数:    ");//现在还没有学goto语句,应去掉loop:
    scanf("%ld",&m);
    while(m!=(long)m||m<1||m>99999)
    {
        printf("    输入有误\n\n\n请重新输入:                     ");
        scanf("%ld",&m);
    }
    if(m<=9)n=1;
    else if(m<=99)n=2;
    else if(m<=999)n=3;
    else if(m<=9999)n=4;
    else n=5;
    printf("    它是%d位数\n",n);
    printf("    分别输出每一位数字:");
    a=m/10000;
    b=m/1000%10;
    c=m/100%10;
    d=m/10%10;
    e=m%10;
    switch(n)
    {
        case 1:printf("%d\n    按逆序输出各位数字:%d\n",e,e);break;
        case 2:printf("%d,%d\n    按逆序输出各位数字:%d%d\n",d,e,e,d);break;
        case 3:printf("%d,%d,%d\n    按逆序输出各位数字:%d%d%d\n",c,d,e,e,d,c);break;
        case 4:printf("%d,%d,%d,%d\n    按逆序输出各位数字:%d%d%d%d\n",b,c,d,e,e,d,c,b);break;
        case 5:printf("%d,%d,%d,%d,%d\n    按逆序输出各位数字:%d%d%d%d%d\n",a,b,c,d,e,e,d,c,b,a);
    }
}




运行结果
搜索更多相关主题的帖子: printf 位数 输出 case 逆序 
2018-09-23 16:43
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
回复 楼主 lxk1732942
为什么不提示错误
2018-09-23 16:44
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:3 
因为没有发现错误。
scanf是这样想的:
你要我输入一个%ld,那我就从头开始搜集一下能够解释成%ld的东西。
好的,找到一个1,接下来的.5显然和%ld没啥关系,不理它,没准儿接下来还有别的scanf需要处理它呢。

于是接下来没有别的语句来处理.5,但这不是人家scanf的责任啊,你让人家处理啥人家就处理啥了嘛。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-09-23 19:15
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
程序代码:
#include<stdio.h>
void main()
{
    long m;
    int a,b,c,d,e,n;
    printf("请输入一个不多于5位的正整数:    ");//现在还没有学goto语句,应去掉loop:
    scanf("%ld",&m);
    while(m<1||m>99999)我改了这一行的判断条件
    {
        printf("    输入有误\n\n\n请重新输入:                     ");
        scanf("%ld",&m);
    }
    if(m<=9)n=1;
    else if(m<=99)n=2;
    else if(m<=999)n=3;
    else if(m<=9999)n=4;
    else n=5;
    printf("    它是%d位数\n",n);
    printf("    分别输出每一位数字:");
    a=m/10000;
    b=m/1000%10;
    c=m/100%10;
    d=m/10%10;
    e=m%10;
    switch(n)
    {
        case 1:printf("%d\n    按逆序输出各位数字:%d\n",e,e);break;
        case 2:printf("%d,%d\n    按逆序输出各位数字:%d%d\n",d,e,e,d);break;
        case 3:printf("%d,%d,%d\n    按逆序输出各位数字:%d%d%d\n",c,d,e,e,d,c);break;
        case 4:printf("%d,%d,%d,%d\n    按逆序输出各位数字:%d%d%d%d\n",b,c,d,e,e,d,c,b);break;
        case 5:printf("%d,%d,%d,%d,%d\n    按逆序输出各位数字:%d%d%d%d%d\n",a,b,c,d,e,e,d,c,b,a);
    }
}


还是有问题


运行结果

2018-09-23 19:43
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:5 
输入就是整数型啊
2018-09-24 19:34
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
得分:12 
#include<stdio.h>

int main()
{
    long m;
    scanf("%ld" , &m);
    printf("%ld\n", m);
    return 0;
}

你可以查看你的输入,和它的输入,了解这个关系。    666666.5 已经是大于 99999
2018-09-24 21:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489960-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.639031 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved