| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2085 人关注过本帖, 1 人收藏
标题:初学者的苦恼
只看楼主 加入收藏
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 25楼 hjx1120
不好意思,我28楼说的那个 ,是我搞错了。但是用它写,无法用getchar()清scanf缓冲区。不知道为什么。

多艰难 都要走下去
2015-06-06 21:01
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 30楼 hjx1120
说的什么话,我脸皮厚我不怕被批评。希望大家心态平和些
程序代码:
#include<stdio.h>
#include<ctype.h>
int main(void)
{
    char ch; 
    int number, largest;

   printf("输入10个整数,第 1 个:");
    ch=getchar();
   if(isdigit(ch))
       largest=ch-48;
   else{
          do{
              printf("输入错误,重新输入:");
              getchar();
            ch=getchar();
            if(isdigit(ch)){
                largest=ch-48;
                printf("##%d##",largest);
                break;
            }
          }while(1);
   }
    for(int i = 2; i <= 10; i++){
        printf("输入10个整数,第 %d 个:", i); 
        getchar();
        ch=getchar();
      if(isdigit(ch)){
          number=ch-48;
         if (largest<number)
         largest = number;
            printf("##%d##",largest);
      }
      else{ 
          printf("输入错误,重新输入:\n");
          i--;
      }
    }
    printf("最大整数是:%d\n", largest);
   return 0;
}

剑栈风樯各苦辛,别时冰雪到时春
2015-06-06 21:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不要乱假定只有一个垃圾字符,也不要乱假定错误情形只有一次。如何处理,我明天告诉你。其实处理的手法在我以前发过的代码中出现多次。

授人以渔,不授人以鱼。
2015-06-06 23:21
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:4 
回复 4楼 hjx1120
人家不是说了才学会一个循环结构么,指针看得懂啊?

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 01:16
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 34楼 你欠我人情
T版主大人不在,我悄悄的回你一句,

我是这么回给楼主大人的:
回复 3楼 openlab
不知道你看不看的懂~!我尽量模块化代码


我没有义务让楼主大人看懂,我也没有当过老师,我只是一个小白,我不知道怎么让楼主大人这个小白看懂我这个小白的代码~!
我现在很后悔给一个伸手党一个示例代码,我错了,我给大家道歉,对不起
2015-06-07 03:04
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
借鉴月儿版主的程序,改了一下我的代码:
不知道是不是过于冗杂?

#include<stdio.h>
int main(void)
{
   int number, largest;

   printf("输入10个整数,第 1 个:");
   if (!scanf_s("%d", &largest)){
      do{
         getchar();
         printf("输入错误,重新输入:");
      } while (!scanf_s("%d", &largest));
   }

   for (int i = 2; i <= 10; i++){
      printf("输入10个整数,第 %d 个:", i);
      if (scanf_s("%d", &number)){
         if (largest < number)
             largest = number;
      }
      else{
         do{
            getchar();
            printf("输入错误,重新输入:");
         } while (!scanf_s("%d", &number));
      }
   }
   printf("最大整数是 %d.\n", largest);
   return 0;
}

多艰难 都要走下去
2015-06-07 14:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 36楼 醉祁今朝
方法:
1.对与用户实时交互的情形,在使用所有流式输入库函数(诸如scanf()、getchar()、gets()等即属于流式输入函数)之前,每次均应调用fflush(stdin)函数重置输入緩衝區。
2.要保持计数准确,是不用for()循环,即不要让循环每次自动递增,自己在需要时递增(即可自由决定某次不递增),这种循环语句是while()或do……while()语句。

授人以渔,不授人以鱼。
2015-06-08 11:01
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 37楼 TonyDeng
万分感谢,受教了。

多艰难 都要走下去
2015-06-08 11:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在结构化编程中,标准的循环形式是while,不是for。在C/C++中,虽然for()循环很灵活,但未必适合所有情形,当你省略第3项时,那个分号后面空白接闭括号,代码相当难看,这个时候,就最好不要用for()了。当然,有人偏好用for(),那是个人风格。

授人以渔,不授人以鱼。
2015-06-08 11:37
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 39楼 TonyDeng
有道理,学习了

剑栈风樯各苦辛,别时冰雪到时春
2015-06-08 11:41
快速回复:初学者的苦恼
数据加载中...
 
   



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

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