C语言刷题系列——17.计算平均成绩 18.找出总分最高的学生19.通讯录排序(一)

简介: C语言刷题系列——17.计算平均成绩 18.找出总分最高的学生19.通讯录排序(一)

🐤计算平均成绩


🏀 题目要求

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。

输出格式:

首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。


🏀 题解

💻step1.定义结构体

struct Student
{
    char xuehao[5];//由5个数字组成的字符串
    char name[10];//长度小于10的非空字符串
    int score;
}stu[10];//因为N <= 10


💻step2.输入N;随后N行 每行给出一位学生的信息

int main()
{
    int N;
    scanf("%d",&N); //输入N
    double sum=0;
    int i;
    for(i = 0;i<N;i++)
    {
        scanf("%s %s %d",&stu[i].xuehao,&stu[i].name,&stu[i].score);
        getchar();//读换行
         sum+=stu[i].score;
    }
    return 0;
 }


💻step3.求平均值

double average = 1.0*sum/N;
    printf("%.2lf\n",average);//保留2位小数


💻step4.输出平均线以下的学生的信息

for(i = 0;i<N;i++)
    {
        if(stu[i].score<average)
            printf("%s %s\n",stu[i].name,stu[i].xuehao);
    }


🐳完整代码

#include<stdio.h>
struct Student
{
    char xuehao[10];
    char name[15];
    int score;
}stu[10];
int main()
{
    int N,i;
    scanf("%d",&N); 
    double sum=0;
    for(i = 0;i<N;i++)
    {
        scanf("%s %s %d",&stu[i].xuehao,&stu[i].name,&stu[i].score);
        getchar();
         sum+=stu[i].score;
    }
    double average = 1.0*sum/N;
    printf("%.2lf\n",average);
    for(i = 0;i<N;i++)
    {
        if(stu[i].score<average)
            printf("%s %s\n",stu[i].name,stu[i].xuehao);
    }
    return 0;
}


🐤找出总分最高的学生


🏀 题目要求

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。

输出格式:

在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。


🏀 题解

💻step1.定义结构体

struct Student
{
    char ID[9];
    char name[15];//定义的比题干要求的大一点,要不PTA不通过
    int score1;//最好定义三个score变量,用数组的话会有问题(亲测)
    int score2;
    int score3;
}stu[10];


💻step2.输入N;随后N行 每行给出一位学生的信息

int main()
{
    int N,i;
    scanf("%d",&N);//输入N
    for(i = 0;i<N;i++)
    {
        scanf("%s%s%d%d%d",stu[i].ID,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
        getchar();//读换行符
    }
    //继续
    return 0;
}


💻step3.筛选总分最高的学生

先假设总分最高(max)的是第一个学生(stu[ 0 ])

再进入循环,计算每一个学生的总分,如果大于max,则max 等于该学生,记录下此时对应数组的下标x

int max=stu[0].score1+stu[0].score2+stu[0].score3;
    int x;
    for(i = 0;i<N;i++)
    {
        int tem = 0;
        tem += stu[i].score1+stu[i].score2+stu[i].score3;
        if(tem>max)
        {
            max = tem;
            x = i;
        }
    }
    printf("%s %s %d",stu[x].name,stu[x].ID,max);
    //打印出下标为x的学生的姓名学号和总分即可


🐳完整代码

#include<stdio.h>
struct Student
{
    char ID[5];
    char name[10];
    int score1;
    int score2;
    int score3;
}stu[10];
int main()
{
    int N;
    scanf("%d",&N);
    int i;
    for(i = 0;i<N;i++)
    {
        scanf("%s%s%d%d%d",stu[i].ID,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
        getchar();
    }
    int max=stu[0].score1+stu[0].score2+stu[0].score3;
    int x = 0;
    for(i = 0;i<N;i++)
    {
        int tem = 0;
        tem += stu[i].score1+stu[i].score2+stu[i].score3;
        if(tem>max)
        {
            max = tem;
            x = i;
        }
    }
    printf("%s %s %d",stu[x].name,stu[x].ID,max);
    return 0;
}


相关文章
|
7天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
45 8
|
7天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
33 7
|
1月前
|
算法 C语言
【C语言】排序查找
【C语言】排序查找
|
1月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
143 0
大学生期末C语言实验(学生成绩和鞍点)
|
1月前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
19 2
|
1月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
13 0
|
1月前
|
NoSQL 算法 Redis
Redis的实现三:c语言实现平衡二叉树,通过平衡二叉树实现排序集
本博客介绍了如何在C语言中实现一个平衡二叉树,并通过这个数据结构来模拟Redis中的排序集功能。
12 0
|
1月前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
32 3
|
JavaScript 算法 前端开发
《C语言程序设计》一3.4 案例学习——计算一年中某月份的总天数
本节书摘来自华章出版社《C语言程序设计》一 书中的第3章,第3.4节,作者:赵宏 陈旭东 马迪芳,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1667 0