| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:变了一个程序,但是不能达到预期结果!大家帮忙看看!
只看楼主 加入收藏
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
结帖率:89.66%
收藏
已结贴  问题点数:20 回复次数:10 
变了一个程序,但是不能达到预期结果!大家帮忙看看!
这个程序,我定义了一个sort函数,就是求各科成绩的最高分,并输出,但是我总是达不到预期的结果,望大侠帮忙。程序运行没问题!!谢谢了!!
程序代码:
 #include <stdio.h>

            #define N  4

            #include <conio.h>

            struct student

             {   long num;

                 char name[20];

                 char sex;

                 float score[5];

                 float sum;

             }stu[N];  /*定义一个结构体数组*/

           void  sum(struct student []); /*求学生总成绩的函数*/

           void  sort(struct student []);/*求总分的排名*/

           void  average(struct student []);/*求各科平均分的函数*/

           void  search(struct student [] );/*求出有不及格的学生成绩*/

           void highest(struct student []);/*求各科最高分的函数*/

           void  asearch(struct student []);/*查询成绩*/

           int main(void)
          {
                 int i=0,j=0;

                 float f;

                 f = 0.0;


 

                 for(i=0;i<N;i++)

                {
                       printf("input ----num----name----sex\n");

                    scanf("%ld,%s,%c",&stu[i].num,stu[i].name,&stu[i].sex); /*输入学生数据*/

                    printf("input score1----score2----score3----score4----score5\n");

                    for(j=0;j<5;j++)

                       {    scanf("%3f", &f);

                            stu[i].score[j] = f;

                        }

                }

                  printf("output----num----name----sex");

                 for(i=0;i<N;i++)

              {
                     printf("%ld,%s,%c",stu[i].num,stu[i].name,stu[i].sex); /*输出学生数据*/

                     printf("output score1----score2----score3----score4----score5\n");

                     for(j=0;j<5;j++)

                     printf("%10f ",stu[i].score[j]);

                     printf("\n");
              }

                 sum( stu );

                 sort(stu);

                 average( stu );  /*函数调用*/

                 search( stu );

                 highest(stu);

                 asearch(stu);

                 getch();

                 return 0;

            }

             void  sum( struct student  stu[])  /*定义求总分的函数*/
       {
             float sum=0.0,saverage=0.0; /*saverage为每个学生的平均分*/

             int i,j;

             for(i=0;i<N;i++)
            {
                  printf("No. %d ",stu[i].num);

                  sum = 0.0;

                  for(j=0;j<5;j++)

                  sum+=stu[i].score[j];

                  saverage=sum/5;

                  printf("%5f,%5f\n",sum,saverage);

                  printf("\n");
            }

       }

          void  sort (struct student stu[])  /**/

        {  int i,j,t;

           for(i=0;i<N;i++)

             {
                for(j=0;j<5;j++)

                stu[i].sum+=stu[i].score[j];

              }

           for(i=0;i<N-1;i++)

            {  for(j=i+1;j<N;j++)

               if(stu[i].sum<stu[j].sum)

                {  t=stu[i].sum;

                   stu[i].sum=stu[j].sum;

                   stu[j].sum=t;

                }

           }

           for(i=0;i<N;i++)

           printf("No.%ld,%3f\n",stu[i].num,stu[i].sum);

        }


            void  average(struct student  stu[ ]) /*定义求各科成绩平均分的函数*/

       {
               float sum=0.0,average=0.0;

               int i,j;

               for(j=0;j<5;j++)
            {
                  printf("the average of %d score:", j+1);

                  sum = 0.0;

                  for(i=0;i<N;i++)

                  sum+=stu[i].score[j];

                  average=sum/N;

                  printf("%f\n",average);
             }

       }

           void search(struct student  stu[]) /*定义求出不及格学生的成绩的函数*/

      {
              int m=0;

              int i,j;

              for(i=0;i<N;i++)
           {
                m=0;

                for(j=0;j<5;j++)

                   {  if(stu[i].score[j]<60)

                          m++;

                   }

              if(m)
                   {
                      printf("%ld,%s,%c",stu[i].num,stu[i].name,stu[i].sex);

                      for(j=0;j<5;j++)

                      printf("%3f ",stu[i].score[j]);   /*输出不及格学生的成绩*/
                   }

               printf("\n");

          }

       }

       void highest(struct student stu[]) /*定义求出各科成绩的最高分函数*/

       {   int i,j,k;

           float high;

           for(j=0;j<5;j++)

           {   for(i=0;i<N-1;i++)

                 for(k=i+1;k<N;k++)

               if(stu[i].score[j]<stu[k].score[j]);

                   {   high=stu[i].score[j];

                       stu[i].score[j]=stu[k].score[j];

                       stu[k].score[j]=high;

                       printf("The highest score of %d is %f\n",j+1,stu[i].score[j]);

                    }

             }

          printf("\n");

       }


       void asearch( struct student stu[]) /*定义查询成绩的函数*/

         {   long num;

             int i,j;

             printf("please input the num:");

             scanf("%ld",&num);

             for(i=0;i<N;i++)

                if( stu[i].num==num)

              {   printf("%ld,%s,%c",stu[i].num,stu[i].name,stu[i].sex);

                  for(j=0;j<5;j++)

                 printf("%6f",stu[i].score[j]);

               }

             printf("\n");

          }

大家指点一下!谢了!!
搜索更多相关主题的帖子: 结果 
2010-09-25 13:54
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
看这一句:stu[i].sum+=stu[i].score[j];
stu[i].sum没有初始化。
改为:
程序代码:
for(i=0;i<N;i++)
                {
                stu[i].sum=0; 

                for(j=0;j<5;j++)

                stu[i].sum+=stu[i].score[j];

              }

 

********多贴代码,少说空话*******
2010-09-25 13:59
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
行,我试试,大侠,又是你啊!!嘿嘿!那天我也考虑这个问题,只是没找到好的解决办法!

付出终将有回报!Ibelieve!
2010-09-25 14:02
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
程序代码:
还有,你的sort函数干嘛呀,下面这两部分代码有意义吗?

for(i=0;i<N-1;i++)

            {  for(j=i+1;j<N;j++)

               if(stu[i].sum<stu[j].sum)

                {  t=stu[i].sum;

                   stu[i].sum=stu[j].sum;

                   stu[j].sum=t;

                }

           }

           for(i=0;i<N;i++)

           printf("No.%ld,%3f\n",stu[i].num,stu[i].sum);

********多贴代码,少说空话*******
2010-09-25 14:04
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
排序啊!

付出终将有回报!Ibelieve!
2010-09-25 14:07
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
对了,刚才弄错了,是highest函数有问题,达不到结果!sorry!搞糊涂了!

付出终将有回报!Ibelieve!
2010-09-25 14:08
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
程序代码:
   void highest(struct student stu[]) /*定义求出各科成绩的最高分函数*/

       {   int i,j,k;

           float high;

           for(j=0;j<5;j++)

           {   for(i=0;i<N-1;i++)

                 for(k=i+1;k<N;k++)

               if(stu[i].score[j]<stu[k].score[j]);

                   {   high=stu[i].score[j];

                       stu[i].score[j]=stu[k].score[j];

                       stu[k].score[j]=high;

                       printf("The highest score of %d is %f\n",j+1,stu[i].score[j]);

                    }

             }

          printf("\n");

       }
这个函数有点问题!!

付出终将有回报!Ibelieve!
2010-09-25 14:10
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:20 
有必要这么麻烦吗?
程序代码:
void highest(struct student stu[]) /*定义求出各科成绩的最高分函数*/
{
    int i,j,k;
    float high;
    for(j=0;j<5;j++)
    {
        high=stu[0].score[j];
        for(i=1;i<N;i++)
        {
            if(high<stu[i].score[j])
                    high=stu[i].score[j];
        }
        printf("The highest score of %d is %f\n",j+1,high);
    }
    printf("\n");
}



[ 本帖最后由 ppfly 于 2010-9-25 14:21 编辑 ]

********多贴代码,少说空话*******
2010-09-25 14:19
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
还是没用啊,它输出的是最后一次输入的数据!!

付出终将有回报!Ibelieve!
2010-09-25 15:55
jaedong
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2010-9-23
收藏
得分:0 
C初学者飘过,感觉好复杂。。。。。
2010-09-25 17:44
快速回复:变了一个程序,但是不能达到预期结果!大家帮忙看看!
数据加载中...
 
   



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

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