| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1337 人关注过本帖
标题:新手求助
只看楼主 加入收藏
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册: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
快速回复:新手求助
数据加载中...
 
   



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

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