| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2144 人关注过本帖
标题:输入成绩求每位同学的总成绩和每科的平均分,并按总成绩由大到小排序
只看楼主 加入收藏
向阳1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-12-14
收藏
 问题点数:0 回复次数:5 
输入成绩求每位同学的总成绩和每科的平均分,并按总成绩由大到小排序
要以列表的形式输出,求的平均分一直是0,也不会排序...(排序时要整行一起移动)
# include <stdio.h>
int main()
{
    int i,j;
    float a[6][4]={0};
    for(i=1;i<6;i++)
        for(j=1;j<4;j++)
        {scanf("%f",&a[i][j]);}
        for(i=1;i<6;i++)
        {
          for(j=1;j<4;j++)
              a[i][4]=a[i][4]+a[i][j];//求学生总成绩
        }
        for(j=1;j<4;j++)
        {
          for(i=1;i<6;i++)
              {a[6][j]=a[6][j]+a[i][j];}
          a[6][j]=a[6][j]/5;//求每科平均分
        }
        for(i=1;i<=6;i++)
            for(j=1;j<=4;j++)
        {
            printf("%10.2f",a[i][j]);
            if(j%4==0){printf("\n");}
        }
return 0;
}
大佬帮帮我吧,刚学不懂啊
搜索更多相关主题的帖子: 平均分 for i++ 排序 总成绩 
2019-12-29 19:53
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
你试试这个 五个人的三科成绩
#include<stdio.h>
struct stu
{
    double a,b,c;
    double sum;
}s[5],temp;
int main ()
{
    double ave[4]={0};
    for(int i=1;i<6;i++)
    {
        scanf("%lf%lf%lf",&s[i].a,&s[i].b,&s[i].c);
        s[i].sum=s[i].a+s[i].b+s[i].c;
        ave[0]+=s[i].a;
        ave[1]+=s[i].b;
        ave[2]+=s[i].c;
        ave[3]+=s[i].sum;
    }
    for(int i=1;i<5;i++)
    {
        for(int j=i+1;j<6;j++)
        {
            if(s[i].sum<s[j].sum)
            {
                temp=s[i];
                s[i]=s[j];
                s[j]=temp;
            }
        }
    }
    for(int i=1;i<6;i++)
    {
        printf("%10.2lf%10.2lf%10.2lf%10.2lf\n",s[i].a,s[i].b,s[i].c,s[i].sum);
    }
    printf("%10.2lf%10.2lf%10.2lf%10.2lf",ave[0]/5,ave[1]/5,ave[2]/5,ave[3]/5);
    return 0;
}
2019-12-29 21:11
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
回复 2楼 Sky_
先别用 有点问题 我再改改 主要是帖子删不掉
2019-12-29 21:14
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
#include<stdio.h>
struct stu
{
    double a,b,c;
    double sum;
}s[6],temp;
int main ()
{
    double ave[4]={0};
    for(int i=1;i<6;i++)
    {
        scanf("%lf%lf%lf",&s[i].a,&s[i].b,&s[i].c);
        s[i].sum=s[i].a+s[i].b+s[i].c;
        ave[0]+=s[i].a;
        ave[1]+=s[i].b;
        ave[2]+=s[i].c;
        ave[3]+=s[i].sum;
    }
    for(int i=1;i<=4;i++)
    {
        for(int j=i+1;j<=5;j++)
        {
            if(s[i].sum<s[j].sum)
            {
                temp=s[i];
                s[i]=s[j];
                s[j]=temp;
            }
        }
    }
    for(int i=1;i<=5;i++)
    {
        printf("%10.2lf%10.2lf%10.2lf%10.2lf\n",s[i].a,s[i].b,s[i].c,s[i].sum);
    }
    printf("%10.2lf%10.2lf%10.2lf%10.2lf",ave[0]/5,ave[1]/5,ave[2]/5,ave[3]/5);
    return 0;
}
2019-12-29 21:21
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:0 
输入形式:

193401060128 小小龙 89 78 73 79

程序代码:
/*代码末尾有成绩单,其中成绩可以任意改动,数据虚拟,不针对任何全体或个人*/
/*                                        这是一个简单的成绩分析程序
                                        文件存储位置默认为: 
                                                             D:\\1.txt
                                        注意:1.成绩虚拟 不针对任何团体或个人 特此声明
                                              2.目前只支持30名同学学生成绩统计
                                              3.如有任何疑问或问题 请联系作者
                                              4.感谢使用
*/                                    
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"windows.h"
#include"time.h"
#define N 4
double fun(int x, int y, int z, int q);
void menu();
void caishu();
struct student
{
    char xuehao[30];//学号
    char name[30];//姓名
    int a, b, c, d;//高数 英语 离散 程序
    double zongce;//综测
    int sum;//总分
}p[30];//调用结构体,结构体中包含三种类型
int main()
{
    char h[10];//储存检索的学号和姓名
    int i, j, k = 0, n;//用于控制循环
    double jidian[30];//绩点的计算
    FILE* fp;
    struct student temp, temp1, temp2, temp3, temp4, temp5;//定义结构体 用于交换数据
    if ((fp = fopen("D:\\1.txt", "r")) == NULL)//打开文件 打开方式为读取 如果为空则输出
    {
        printf("无法打开文件\n");
        getchar();
        exit(1);//结束进程
    }
    for (i = 0; i < 30; i++)
    {
        fscanf(fp, "%s%s%d%d%d%d", p[i].xuehao, p[i].name, &p[i].a, &p[i].b, &p[i].c, &p[i].d);//学生信息的读取
        p[i].sum = p[i].a + p[i].b + p[i].c + p[i].d;//总分的计算
        jidian[i] = fun(p[i].a, p[i].b, p[i].c, p[i].d);//绩点的计算
        if (jidian[i] > 5.99 && p[i].a > 60 && p[i].b > 60 && p[i].c > 60 && p[i].d > 60)//奖学金的评定 满足条件则进行综测成绩的计算
        {
            p[i].zongce = (jidian[i] * 5 + 50) * 0.75 + (N * 0.25);//综测
            k++;
        }
        else
        {
            p[i].zongce = 0;//不满足绩点条件的 综测成绩为0 不参与奖学金的评定
        }
    }
    printf("");
    Sleep(1000);
    printf("");
    Sleep(1000);
    printf("使");
    Sleep(1000);
    printf("");
    system("cls");
    while (1)
    {
        menu();//调用菜单选项
        printf("请选择一个执行项:");
        scanf("%d", &n);//功能选择 1-5
        system("cls");
        if (n == 1)//总成绩的输出
        {
            printf("\t\t\t\t*总成绩单*\n");
            printf("………………………………………………………………………………………………………………\n");
            printf("学号        姓名        高数        英语        离散        程序\n\n");
            for (i = 0; i < 30; i++)
            {
                printf("%s    %s        %d        %d        %d        %d\n", p[i].xuehao, p[i].name, p[i].a, p[i].b, p[i].c, p[i].d);
            }
            system("pause");
            system("cls");
        }else
        if (n == 2)//学生信息的检索
        {
            printf("请输入学号或姓名:");//输入学号或姓名
            scanf("%s", &h);
            for (i = 0; i < 30; i++)
            {
                if (strcmp(p[i].xuehao, h) == 0 || strcmp(p[i].name, h) == 0)//字符串的比较 相同时输出学生信息
                {
                    printf("学号        姓名    高数    英语    离散    程序    总分\n\n");
                    printf("%s    %s    %d    %d    %d    %d    %d\n", p[i].xuehao, p[i].name, p[i].a, p[i].b, p[i].c, p[i].d, p[i].sum);
                }
            }
            system("pause");
            system("cls");
        }else
        if (n == 3)//总成绩的排名
        {
            for (i = 0; i < 30; i++)
            {
                for (j = 0; j < 30 - 1 - i; j++)
                {
                    if (p[j].sum < p[j + 1].sum)
                    {
                        temp1 = p[j];
                        p[j] = p[j + 1];
                        p[j + 1] = temp1;
                    }
                }
            }//冒泡排序 30组数据的排名
            printf("\t\t\t\t*总成绩排序*\n");
            printf("………………………………………………………………………………………………………………\n");
            printf("学号        姓名        高数        英语        离散        程序        总分        排名\n\n");
            for (i = 0; i < 30; i++)
            {
                printf("%s    %s        %d        %d        %d        %d        %d        %d\n", p[i].xuehao, p[i].name, p[i].a, p[i].b, p[i].c, p[i].d, p[i].sum, i + 1);
            }
            system("pause");
            system("cls");
        }else
        if (n == 4)//奖学金的判定
        {
            for (i = 0; i < 30; i++)
            {
                for (j = 0; j < 30 - i - 1; j++)
                {
                    if (p[j].zongce < p[j + 1].zongce)
                    {
                        temp = p[j];
                        p[j] = p[j + 1];
                        p[j + 1] = temp;
                    }
                }
            }//冒泡排序
            printf("\t*满足奖学金要求的名单*\n");
            printf("………………………………………………\n");
            printf("学号        姓名           排名\n\n");
            for (i = 0; i < k; i++)
            {
                printf("%s    %s           %2d\n", p[i].xuehao, p[i].name, i + 1);//满足奖学金要求的前 10 名学生的信息
            }
            printf("………………………………………………\n");
            printf("一等奖学金:\n");
            printf("………………………………\n");
            printf("学号        姓名\n\n");
            for (i = 0; i < 1; i++)
            {
                printf("%s    %s    \n", p[i].xuehao, p[i].name);//综一成绩学生信息
            }
            printf("………………………………\n");
            printf("二等奖学金:\n");
            printf("………………………………\n");
            printf("学号        姓名\n\n");
            for (i = 1; i < 4; i++)
            {
                printf("%s    %s    \n", p[i].xuehao, p[i].name);//综二学生信息
            }
            printf("………………………………\n");
            printf("三等奖学金:\n");
            printf("………………………………\n");
            printf("学号        姓名\n\n");
            for (i = 4; i < k; i++)
            {
                printf("%s    %s    \n", p[i].xuehao, p[i].name);//综三学生信息
            }
            printf("………………………………\n");
            system("pause");
            system("cls");
        }else
            if (n == 5)
            {
                printf("        学号        姓名    成绩\n");
                for (i = 0; i < 30; i++)
                {
                    for (j = 0; j < 30 - i - 1; j++)
                    {
                        if (p[j].a < p[j + 1].a)
                        {
                            temp2 = p[j];
                            p[j] = p[j + 1];
                            p[j + 1] = temp2;
                        }
                    }
                }
                printf("高数最高分\n");
                printf("        %s    %s    %d\n\n", p[0].xuehao,p[0].name,p[0].a);
                for (i = 0; i < 30; i++)
                {
                    for (j = 0; j < 30 - i - 1; j++)
                    {
                        if (p[j].b < p[j + 1].b)
                        {
                            temp3 = p[j];
                            p[j] = p[j + 1];
                            p[j + 1] = temp3;
                        }
                    }
                }
                printf("英语最高分\n");
                printf("        %s    %s    %d\n\n", p[0].xuehao, p[0].name, p[0].b);
                for (i = 0; i < 30; i++)
                {
                    for (j = 0; j < 30 - i - 1; j++)
                    {
                        if (p[j].c < p[j + 1].c)
                        {
                            temp4 = p[j];
                            p[j] = p[j + 1];
                            p[j + 1] = temp4;
                        }
                    }
                }
                printf("离散最高分\n");
                printf("        %s    %s    %d\n\n", p[0].xuehao, p[0].name, p[0].c);
                for (i = 0; i < 30; i++)
                {
                    for (j = 0; j < 30 - i - 1; j++)
                    {
                        if (p[j].d < p[j + 1].d)
                        {
                            temp5 = p[j];
                            p[j] = p[j + 1];
                            p[j + 1] = temp5;
                        }
                    }
                }
                printf("程序最高分\n");
                printf("        %s    %s    %d\n\n", p[0].xuehao, p[0].name, p[0].d);
                system("pause");
                system("cls");
            }else
                if (n == 6)
                {
                    caishu();
                }else
                {
                    printf("没有该选项\n");//没有选择的功能 输出提示
                    system("pause");
                    system("cls");
                }
    }
    fclose(fp);//关闭文件 释放内存
    getchar();
    return 0;
}/*主函数*/
double fun(int x, int y, int z, int v)
{
    double jidian1, jidian2, jidian3, jidian4;//每门成绩的绩点
    double jidian;//总绩点
    if (x >= 60)
    {
        jidian1 = (x - 60) * 0.2 + 2;//高数成绩绩点
    }
    else
    {
        jidian1 = 0;
    }
    if (y >= 60)
    {
        jidian2 = (y - 60) * 0.2 + 2;//英语成绩绩点
    }
    else
    {
        jidian2 = 0;
    }
    if (z >= 60)
    {
        jidian3 = (z - 60) * 0.2 + 2;//离散成绩绩点
    }
    else
    {
        jidian3 = 0;
    }
    if (v >= 60)
    {
        jidian4 = (v - 60) * 0.2 + 2;//程序成绩绩点
    }
    else
    {
        jidian4 = 0;
    }
    jidian = (jidian1 * 5 + jidian2 * 6 + jidian3 * 4 + jidian4 * 3) / 18;//总绩点计算
    return jidian;//返回主函数 返回值为总绩点
}/*绩点的计算*/
void menu()
{
    printf("\t\t\t||--------SHENG YANG HONG KONG HANG TIAN DA XUE--------------||\n");
    printf("\t\t\t||\t               1.显示总成绩单                        ||\n");
    printf("\t\t\t||\t               2.查找学生信息                        ||\n");
    printf("\t\t\t||\t               3.按总成绩排序                        ||\n");
    printf("\t\t\t||\t               4.输出奖学金信息                      ||\n");
    printf("\t\t\t||\t               5.输出最高分 最低分                   ||\n");
    printf("\t\t\t||\t               6.猜数游戏                            ||\n");
    printf("\t\t\t||-----------------------------------------------------------||\n\n");
}/*选择菜单*/
void caishu()//猜数游戏
{
    int g, m1;
    printf("输入0-10的数:");
    scanf("%d",&m1);
    srand((unsigned)time(NULL));
    g = rand() % 10;//生成0-10的随机数
    if (g == m1)//判断它们是否相同
    {
        printf("你猜对了\n");
    }
    else
    {
        printf("你猜错了\n");
        printf("正确答案为:%d\n", g);
    }
    system("pause");
    system("cls");
}

2019-12-29 23:09
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:0 
实现了基本的几个,你可以节选的。
2019-12-29 23:10
快速回复:输入成绩求每位同学的总成绩和每科的平均分,并按总成绩由大到小排序
数据加载中...
 
   



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

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