| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2085 人关注过本帖, 1 人收藏
标题:初学者的苦恼
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用醉祁今朝在2015-6-6 13:59:49的发言:

嗯嗯 我刚刚在想负数的问题 已经解决了 largest别初始化为0 将输入的第一个数据赋给largest 然后循环里边的话循环9次 这样负数的话也可以比较

嗯,那么可以把要求提高点,你觉得这样够了吗?如果在输入的过程中,敲了字母呢?试试看!如果你找到了解决办法,必须维持输入10个数据的量才行哦。

授人以渔,不授人以鱼。
2015-06-06 15:22
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 21楼 TonyDeng
输了字母居然会这样  后边只执行了printf语句 不给机会再输入了  试了其他的  = 也是这样的状况 而 + 和 - 不会  更多的就没有再试了 但是像 + 和 - 输入进去 也用掉了次数 实际输入数字就没有10次。

多艰难 都要走下去
2015-06-06 16:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你尝试一下找资料解决,做出来怎样到时会指点你。

授人以渔,不授人以鱼。
2015-06-06 18:09
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 23楼 TonyDeng
求大神提点。

我从那个时候想到现在还是没解决……我看到有说这个输入字母的问题.输入数字的话scanf返回值是1,输入字母的话返回值是0,如果输入字母的话scanf就一直读取那个字母,所以也就无法让我输入数字了。

部分代码:
   for (int i = 2; i <= 10; i++){
      printf("输入10个整数,第 %d 个:", i);
      if (scanf_s("%d", &number)){
         if (largest < number)
             largest = number;
    }
      else{
         printf("输入错误,重新输入:");
     scanf_s("%d", &number);
}
这样写问题还是没解决,输入字母之后会报错,但是由于上面所说的原因,循环执行printf语句。

多艰难 都要走下去
2015-06-06 19:04
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 24楼 醉祁今朝
用if语句判断输入的值是不是数字
条件可以用上isdigit();函数
真就是数字,假就是其它字符
2015-06-06 20:19
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 23楼 TonyDeng
#include<stdio.h>
int main(void)
{
   int number, largest;

   printf("输入10个整数,第 1 个:");

   if (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{
         printf("输入错误,重新输入:");
         getchar();/*清空scanf缓冲区*/
         scanf_s("%d", &number);
      }
    }
    printf("最大整数是:%d\n", largest);
   }
   else{
      printf("输入错误.\n");
   }
   return 0;
}
还有问题没有解决,输入第一个数据,如果输入的是数字,就可以执行if结构里的语句。但是如果第一个数据就输入成字母,这个程序就没法再循环了。只能重新开始。不知道这个怎么来处理?
还有就是虽然知道了getchar()能够清空scanf函数的缓冲区,但是并不明白它的原理。

多艰难 都要走下去
2015-06-06 20:21
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
不好意思,上面那个代码格式的缩进没调整好。

多艰难 都要走下去
2015-06-06 20:23
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 25楼 hjx1120
isdigit()函数不会用,直接写成if(isdigit(number))是不是不行,我按照这样来写 输入数字就显示 输入错误。代码就是用的我楼上上写的那个代码,当然,头文件已经调用了。

多艰难 都要走下去
2015-06-06 20:38
醉祁今朝
Rank: 2
等 级:论坛游民
威 望:1
帖 子:48
专家分:76
注 册:2015-5-18
收藏
得分:0 
回复 23楼 TonyDeng
对于我26楼写的代码 又发现了问题。如果连续输错的话,那个次数就被减掉了,这样最终输入数字的数量就不足10个。

多艰难 都要走下去
2015-06-06 20:43
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 28楼 醉祁今朝
其实,我很想把代码发给你,当是这个问题你是问T版主的,
T版主对我的评价,让我觉得,我还没有发代码的资格
T版主大人跟的帖子,我这个小白还是开启潜水模式的好

2015-06-06 20:57
快速回复:初学者的苦恼
数据加载中...
 
   



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

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