| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:高手帮忙看看哪错了
只看楼主 加入收藏
itmen
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2010-4-1
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:4 
高手帮忙看看哪错了
第二次循环就输入不了name (红色部分)!!谢谢指导!1
=========================================================================================================================================


#include <stdio.h>
#include <string.h>
struct zl
{long num;
 char name[20];
 float c,e,m;
};
main ()
{
 struct zl p[3];
 int i;
 float z=0,pj,max,s[3];
 for (i=0;i<3;i++)
  {
    printf ("xue sheng %d\n",i+1);
    printf ("name\n");
    gets (p[i].name);
    printf ("No.,Chinese,English,Match\n");
    scanf ("%ld,%f,%f,%f",&p[i].num,&p[i].c,&p[i].e,&p[i].m);
    s[i]=p[i].c+p[i].e+p[i].m;
    z=z+s[i];

  }

  printf ("ping jun fen:%f\n",z/3);

  max=s[0];
  for (i=1;i<3;i++);
   {
    if (max<s[i])

       max=s[i];


   }
  for (i=0;i<3;i++)
   {
    if (max==s[i])
     {
       pj=s[i]/3;
       printf ("name:");
       puts (p[i].name);
       printf ("\nNo.:%ld\nChinese:%f\nEnglish:%f\nMatch:%f\nping jun fen:%f\n",p[i].num,p[i].c,p[i].e,p[i].m,pj);
      }
    }
getche ();
}



[ 本帖最后由 itmen 于 2010-6-26 15:48 编辑 ]
搜索更多相关主题的帖子: long max Chinese include sheng 
2010-06-26 15:47
a8979595
Rank: 2
等 级:论坛游民
帖 子:34
专家分:54
注 册:2010-5-31
收藏
得分:0 
这个事什么意思啊,你求20个学生的成绩平均数,也不是这样的啊
2010-06-26 15:59
itmen
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2010-4-1
收藏
得分:0 
回复 2楼 a8979595
    有3个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
2010-06-26 16:02
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
收藏
得分:0 
for (i = 0; i < 3; i++)
    {
        printf ("xue sheng %d\n",i+1);
        printf ("name\n");
        while(scanf("%s",&p[i].name) != 0)
        {
            printf ("No.,Chinese,English,Match\n");
            scanf ("%ld,%f,%f,%f",&p[i].num,&p[i].c,&p[i].e,&p[i].m);
            s[i]=p[i].c+p[i].e+p[i].m;
            z=z+s[i];
            break;
        }
    }
改成这样就行了
2010-06-27 14:41
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:50 
先说一下,你最后的"getche ()"写错了,改是"getchar()"吧!
要解你的问题很简单,
你的代码如下:

for (i=0;i<3;i++)       
  {
    printf ("xue sheng %d\n",i+1);
    printf ("name\n");
  fflush(stdin);     //在"gets(p[i].name)"上加"fflush(stdin);".
    gets (p[i].name);



fflush(stdin);是起到清空输入缓冲区的作用,凡是输入字符变量的时候 一般都要用到它
我测试过,能用!
还有个问题:
不论输入学生的成绩怎么样,输出的最高成绩都是输入第一个学生的成绩;
问题代码;
max=s[0];
  for (i=1;i<3;i++);
   {
    if (max<s[i])
       max=s[i];
   }

我能力有限;找不不问题错在那里.只有用别的代码 代替;如下;

  max=((s[0]<s[1])?s[1]:s[0]);
  max=((max<s[2])?s[2]:max);




亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2010-06-27 23:41
快速回复:高手帮忙看看哪错了
数据加载中...
 
   



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

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