| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 715 人关注过本帖
标题:代码错误在哪里?
只看楼主 加入收藏
zbsilent
Rank: 2
等 级:论坛游民
帖 子:23
专家分:16
注 册:2010-11-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
代码错误在哪里?
#include"stdio.h"
int main()
{
int score[10],max=0,min=100,i,temp,sum=0;
double avg;
for(i=0;i<10; )
{  
   printf("Please input the score:");
   scanf("%d",&temp);
   if(temp<0 || temp>100)
   {
     printf("输入有误!\n");
     continue;
 }
score[i++]=temp;
if(temp>max)
max=temp;
if(temp<min)
min=temp;
sum=sum+temp;
avg=(double)sum/10;
    }
printf("max=:%2d min=:%2d vag=:%lg\n",max,min,avg);
return 0;
}
这段是用来编写输入十个人的成绩,然后求最大和最小成绩,以及平均值的,我是一个初学者,老师说其中还存在一定问题,我想请高手给我指出,我会虚心学习,谢谢。
搜索更多相关主题的帖子: 代码 
2010-11-11 11:37
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:5 
#include"stdio.h"
int main()
{
int score[10],max=0,min=100,i,temp,sum=0;
double avg;
for(i=0;i<10; )  //i不做运算,永远小于10,那就死循环了,所以后加i++,
{  
   printf("Please input the score:");
   scanf("%d",&temp);               //temp不是数组,只能存一个值,这里不需要temp变量
   if(temp<0 || temp>100)
   {
     printf("输入有误!\n");          //输入有误,就应该break;
     continue;
}
score[i++]=temp;              //这里就没意义了,数组可以循环遍历比较,
if(temp>max)
max=temp;
if(temp<min)
min=temp;
sum=sum+temp;
avg=(double)sum/10;
    }
printf("max=:%2d min=:%2d vag=:%lg\n",max,min,avg);
return 0;
}
以下改正后:
#include"stdio.h"
int main()
{
int score[10],max=0,min=100,i,sum=0;
double avg;
printf("Please input the score:\n");
for(i=0;i<10;i++ )
    {  
      
       scanf("%d",&score[i]);
       if(score[i]<0 || score[i]>100)
       {
         printf("输入有误!\n");
         break;
       }
    }
for(i=0;i<10;i++ )
    {
    //score[i++]=temp;
    if(score[i]>max)
    max=score[i];
    if(score[i]<min)
    min=score[i];
    sum=sum+score[i];
    }

avg=(double)sum/10;
   
printf("max=:%2d min=:%2d vag=:%lg\n",max,min,avg);
return 0;
}
2010-11-11 12:03
zbsilent
Rank: 2
等 级:论坛游民
帖 子:23
专家分:16
注 册:2010-11-11
收藏
得分:0 
回复 2楼 自由战士89
以下是引用自由战士89在2010-11-11 12:03:45的发言:

#include"stdio.h"
int main()
{
int score[10],max=0,min=100,i,temp,sum=0;
double avg;
for(i=0;i<10; )  //i不做运算,永远小于10,那就死循环了,所以后加i++,
{  
   printf("Please input the score:");
   scanf("%d",&temp);               //temp不是数组,只能存一个值,这里不需要temp变量
   if(temp<0 || temp>100)
   {
     printf("输入有误!\n");          //输入有误,就应该break;
     continue;
}
score=temp;              //这里就没意义了,数组可以循环遍历比较,
if(temp>max)
max=temp;
if(tempmin=temp;
sum=sum+temp;
avg=(double)sum/10;
    }
printf("max=:%2d min=:%2d vag=:%lg\n",max,min,avg);
return 0;
}
以下改正后:
#include"stdio.h"
int main()
{
int score[10],max=0,min=100,i,sum=0;
double avg;
printf("Please input the score:\n");
for(i=0;i<10;i++ )
    {  
      
       scanf("%d",&score);
       if(score<0 || score>100)
       {
         printf("输入有误!\n");
         break;
       }
    }
for(i=0;i<10;i++ )
    {
    //score=temp;
    if(score>max)
    max=score;
    if(score    min=score;
    sum=sum+score;
    }

avg=(double)sum/10;
   
printf("max=:%2d min=:%2d vag=:%lg\n",max,min,avg);

if(score[i]>50 && score[i]<60)//我想在这里将限定范围内的成绩改为60分,并且全部输出,但是输出后分数没有改变,希望前辈指出错误在哪里。//
score[i]=60;
for(i=0;i<10;i++)
printf("%3d",score[i]);
return 0;
return 0;
}
2010-11-11 12:16
zbsilent
Rank: 2
等 级:论坛游民
帖 子:23
专家分:16
注 册:2010-11-11
收藏
得分:0 
回复 3楼 zbsilent
并且那个continue那里不能改,break直接跳出,以后无法继续输入了。
2010-11-11 12:20
pizilong
Rank: 2
来 自:安徽
等 级:论坛游民
帖 子:11
专家分:15
注 册:2010-10-10
收藏
得分:5 
avg=(double)sum/10;把这个句子放在for循环外面就行了。
2010-11-11 13:43
luoyang2404
Rank: 2
等 级:论坛游民
帖 子:19
专家分:27
注 册:2010-11-8
收藏
得分:0 
5楼正解
2010-11-11 15:33
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:5 
把那个要改60分的if语句放到上面的for循环中.你还是没有掌握住这些基础,那个c0ntinue是不能那样用的,错一个这组数就不能用了,这样把,还用continue,再加个i--;就可以了,条件有限.
2010-11-11 18:07
lin630784732
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2010-11-11
收藏
得分:0 
应该把||该成&&这个吧
2010-11-11 18:38
火龙果
Rank: 2
等 级:论坛游民
帖 子:42
专家分:79
注 册:2010-6-26
收藏
得分:5 
#include <stdio.h>
int main()
{
int score[10],max=0,min=100,i,temp,sum=0;
double avg;
for(i=0;i<10; )
{  
   printf("Please input the score:");
   scanf("%d",&temp);
   if(temp<0 || temp>100)
   {
     printf("输入有误!\n");
     continue;
    }       //你这里用的花括号没有对齐,对齐了就没事了
    score[i++]=temp;
    if(temp>max)
    max=temp;
    if(temp<min)
    min=temp;
    sum=sum+temp;
    avg=(double)sum/10;
 }//这里也是(以后要多注意格式问题)
printf("max=:%2d min=:%2d vag=:%lg\n",max,min,avg);
return 0;
}
收到的鲜花
  • zbsilent2010-11-12 17:18 送鲜花  1朵   附言:我很赞同
2010-11-12 00:04
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
这里的 continue 使用是正确的,如果使用break反而错了。因为楼主把for()总的第三个语句放在了循环提中: score[i++]=temp.那么,如果使用continue就可以让程序的输入忽略掉错误输入,继续输入。如果像别人说的使用break,反而会是程序退出循环,得不到应该有的结果。还有,建议楼主以后编程的时候注意规范,让同一对中的{}尽量,让别人好阅读,才不至于出现老师看错的情况
2010-11-12 00:34
快速回复:代码错误在哪里?
数据加载中...
 
   



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

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