| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1235 人关注过本帖
标题:关于数组和函数的一个实验题目。老是弄不对。大神,给看看
只看楼主 加入收藏
ili
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
关于数组和函数的一个实验题目。老是弄不对。大神,给看看
二维数组和函数程序设计
1、实验目的
熟悉二维数组和函数的综合编程方法
进一步熟悉排序、查找等基本算法。
2、实验内容
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过5人参加考试。考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
2、实验要求
用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
(1)用函数编程实现计算每个学生的总分;
(2)用函数编程实现按总分由高到低对学生成绩排序,注意:排序时,一维数组sum元素的变化应连同二维数组score和一维数组num和aver一起变化;
(3)用函数编程实现打印名次表
(4)用函数编程实现查找学号为k的学生在班级中的排名名次及相关成绩等信息,找不到时返回-1值。
搜索更多相关主题的帖子: 考试科目 学生 实验目的 
2013-05-28 21:15
火雨流星泪
Rank: 2
等 级:论坛游民
帖 子:65
专家分:78
注 册:2013-5-12
收藏
得分:3 
这个题建议用自定义的结构数据类型做,具体程序可以自己先想下。
2013-05-28 22:33
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:3 
又是作业?互联网真是好啊,有事都可以百度解决。
2013-05-28 22:40
火雨流星泪
Rank: 2
等 级:论坛游民
帖 子:65
专家分:78
注 册:2013-5-12
收藏
得分:0 
那个我试了下,结构体我不好加二维数组,我没用结构体做了一个,你看下。
# include <stdio.h>
main()
{
    float max=0;
    int p=0,x,k;
    float score[5][3]={0},sum[5]={0}, aver[5]={0},t,b[5]={1};
    int num[5]={0},i,j;
    printf("输入学生学号:\n");
    printf("输入学生成绩:\n");
    for (i=0;i<5;i++)                               //数据输入
    {
        scanf("%d",&num[i]);
        for (j=0;j<3;j++)
        {
            printf("\t");
            scanf("%f",&score[i][j]);
        }
        printf("\n");
    }                                                //计算总分、平均分
    for (i=0;i<5;i++)
        for (j=0;j<3;j++)
        {
            sum[i]+=score[i][j];
        aver[i]=sum[i]/3;
        }
    max=sum[0];                                      //名次
    for (i=0;i<5;i++)                                    
        b[i]=sum[i];
    for(i=0;i<5;i++)
    {
        for (j=i+1;j<5;j++)
        {
            t=1;
            if (b[i]<b[j])
            {
                t=b[i];
                b[i]=b[j];
                b[j]=t;
        
            }
        }
    }
    for(i=0;i<5;i++)
    printf("%.2f",b[i]);
    for (i=0;i<5;i++)                             //输出表格
    {
        for(k=0;k<5;k++)
            if(sum[i]==b[k])
                printf("名次:%d\t",k+1);
            printf("学号:%d\t",num[i]);
            for(j=0;j<3;j++)
                printf("成绩:%.2f\t",score[i][j]);
            printf("总分:%.2f\t",sum[i]);
            printf("平均分:%.2f\n",aver[i]);
    }
    printf("输入学号:");                            //学号查询
    scanf("%d",&x);
    for (i=0;i<5;i++)
    {
        if (x==num[i])
        for (k=0;k<5;k++)
            if(sum[i]==b[k])
            {
                printf("名次:%d\t",k+1);
                for (j=0;j<3;j++)
                {
                        printf("成绩:%f",score[i][j]);
                }
            }
    }
}
我也是初学者,程序应该会显得比较冗杂,多多包涵
2013-05-29 13:03
火雨流星泪
Rank: 2
等 级:论坛游民
帖 子:65
专家分:78
注 册:2013-5-12
收藏
得分:0 
上面的 int p=0  ,float max=0,max=sum[0]这几句可以去掉
2013-05-29 13:05
扬州笑哈哈
Rank: 2
等 级:论坛游民
帖 子:26
专家分:34
注 册:2013-3-1
收藏
得分:3 
cxj?

很多事不是看你做没做,而是看你能做多久
2013-05-29 18:39
火雨流星泪
Rank: 2
等 级:论坛游民
帖 子:65
专家分:78
注 册:2013-5-12
收藏
得分:0 
把输出表格部分改下就可以令输出的结果是名次表了
 
程序代码:
    for(i=0;i<5;i++)
    printf("%.2f",b[i]);
    for (k=0;k<5;k++)                             //输出表格
    {
        for(i=0;i<5;i++)
            if(b[k]==sum[i])
            {    printf("名次:%d\t",k+1);
                printf("学号:%d\t",num[i]);
                for(j=0;j<3;j++)
                    printf("成绩:%.2f\t",score[i][j]);
                printf("总分:%.2f\t",sum[i]);
                printf("平均分:%.2f\n",aver[i]);
            }
            else continue;
    }

     
2013-05-29 22:22
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
收藏
得分:3 
用结构体比较好
2013-05-30 08:36
猫小喵
Rank: 2
来 自:计算机专业
等 级:论坛游民
帖 子:29
专家分:77
注 册:2013-5-12
收藏
得分:3 
# include <stdio.h>


 main()
 {
     float max=0;
     int p=0,x,k;
     float score[5][3]={0},sum[5]={0}, aver[5]={0},t,b[5]={1};
     int num[5]={0},i,j;

     for (i=0;i<5;i++)                               //数据输入
     {
         printf("输入学生学号:");
         scanf(" %d",&num[i]);
         for (j=0;j<3;j++)
         {
             printf("请输入第%d科成绩:",j+1);
             scanf("%f",&score[i][j]);
         }
         printf("\n");
     }                                                //计算总分、平均分
     for (i=0;i<5;i++)
         for (j=0;j<3;j++)
         {
             sum[i]+=score[i][j];
         aver[i]=sum[i]/3;
         }
     max=sum[0];                                      //名次
     for (i=0;i<5;i++)                                    
         b[i]=sum[i];
     for(i=0;i<5;i++)
     {
         for (j=i+1;j<5;j++)
         {
             t=1;
             if (b[i]<b[j])
             {
                 t=b[i];
                 b[i]=b[j];
                 b[j]=t;
         
             }
        }
     }

     for (i=0;i<5;i++)                             //输出表格
     {
         for(k=0;k<5;k++)
             if(sum[i]==b[k])
             printf("名次:%d\t",k+1);
             printf("学号:%d\t",num[i]);
             for(j=0;j<3;j++)
                 printf("成绩:%.2f\t",score[i][j]);
             printf("总分:%.2f\t",sum[i]);
             printf("平均分:%.2f\n",aver[i]);
     }
     printf("输入学号:");                            //学号查询
     scanf("%d",&x);
     for (i=0;i<5;i++)
     {
         if (x==num[i])
         for (k=0;k<5;k++)
             if(sum[i]==b[k])
             {
                 printf("名次:%d\t",k+1);
                 for (j=0;j<3;j++)
                 {
                         printf("成绩:%.2f",score[i][j]);
                 }
             }
     }
 }
改良版

做一个爱编程得女生
2013-05-30 20:14
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:3 
飘过
2013-05-31 13:03
快速回复:关于数组和函数的一个实验题目。老是弄不对。大神,给看看
数据加载中...
 
   



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

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