| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3269 人关注过本帖
标题:一个重新输入问题
只看楼主 加入收藏
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
一个重新输入问题
我想问的是当我重新输入一个数时却输出错误的结果呢?
#include<stdio.h>
void main()
{
    int i,j,k,b,h;
    printf("输入一个四位数:");
    scanf("%d",&i);
    if(i>1000&&i<9999)
    {
        k=i/1000;
    h=i/100-k*10;
    b=i/10-k*100-h*10;
    j=i%10;
    }
    else
    {
        printf("输入有误重新输入:");
        fflush(stdin);
        scanf("%d",&i);
    }
    printf("k=%d  h=%d  b=%d  j=%d\n",k,h,b,j);

}
2013-04-09 22:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
“重新输入”,你哪里有重新处理数据的指令?

授人以渔,不授人以鱼。
2013-04-09 22:57
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:10 
  你至少套个循环,或者用个goto语句啊...   不然你重新输入后,程序怎么重头开始啊?

三十年河东,三十年河西,莫欺少年穷!
2013-04-09 23:01
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
加上红色部分就OK了

#include<stdio.h>
void main()
{
    int i,j,k,b,h;
    printf("输入一个四位数:");
    scanf("%d",&i);
loop:if(i>1000&&i<9999)
    {
        k=i/1000;
    h=i/100-k*10;
    b=i/10-k*100-h*10;
    j=i%10;
    }
    else
    {
        printf("输入有误重新输入:");
        fflush(stdin);
        scanf("%d",&i);
       goto loop;
    }
    printf("k=%d  h=%d  b=%d  j=%d\n",k,h,b,j);

}

三十年河东,三十年河西,莫欺少年穷!
2013-04-09 23:03
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:0 
回复 2楼 TonyDeng
说错了 不好意思啊
是判断一个数输入错误后重新输入一个正确的数后输出的结果有问题
else
    {
        printf("输入有误重新输入:");
        fflush(stdin);
        scanf("%d",&i);
    }
2013-04-09 23:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你要让程序指令序列有重复处理数据的机制才行啊,你在头脑中逐行执行一次自己的代码看看——这是最基本的写程序的方法,最好学会,否则以后很难进步。

授人以渔,不授人以鱼。
2013-04-09 23:12
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:0 
回复 4楼 韶志
刚查了一下你那loop语句的用法  书上没有找到loop的用法和作用
2013-04-09 23:14
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 5楼 czzdcn123
结果当然会有问题,你else重新输入以后,又没有将进程跳转到if里的代码,只能顺序执行printf,
然而,此时你的k,h,b,j 都没有赋值,只能输出乱码喽~

三十年河东,三十年河西,莫欺少年穷!
2013-04-09 23:17
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 7楼 czzdcn123
那你可以套个循环,就像这样

#include<stdio.h>
void main()
{
    int i,j,k,b,h;
    printf("输入一个四位数:");
    scanf("%d",&i);
    while(1)
    {
    if(i>1000&&i<9999)
    {
        k=i/1000;
    h=i/100-k*10;
    b=i/10-k*100-h*10;
    j=i%10;
    break;
    }
    else
    {
        printf("输入有误重新输入:");
        fflush(stdin);
        scanf("%d",&i);
      
    }
    }
    printf("k=%d  h=%d  b=%d  j=%d\n",k,h,b,j);

}

三十年河东,三十年河西,莫欺少年穷!
2013-04-09 23:19
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:0 
回复 6楼 TonyDeng
菜鸟 受教了
2013-04-09 23:19
快速回复:一个重新输入问题
数据加载中...
 
   



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

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