C语言刷题系列——14.(结构)计算两个复数之积15.按等级统计学生成绩16.根据成绩高低将学生记录排序

简介: C语言刷题系列——14.(结构)计算两个复数之积15.按等级统计学生成绩16.根据成绩高低将学生记录排序

14.计算两个复数之积


🐳题目要求

要求实现一个计算复数之积的简单函数

函数接口定义:
struct complex multiply(struct complex x, struct complex y);

struct complex是复数结构体,其定义如下:

struct complex
{
    int real;
    int imag;
};


裁判测试程序样例:
#include <stdio.h>
struct complex{
    int real;
    int imag;
};
struct complex multiply(struct complex x, struct complex y);
int main()
{
    struct complex product, x, y;
    scanf("%d%d%d%d", &x.real, &x.imag, &y.real, &y.imag);
    product = multiply(x, y);
    printf("(%d+%di) * (%d+%di) = %d + %di\n", 
            x.real, x.imag, y.real, y.imag, product.real, product.imag);
    return 0;
}
/* 你的代码将被嵌在这里 */


🐳题解

🌨step1:先看这个函数的返回类型:struct complex

因此,函数内部声明一个结构体变量

struct complex co;

🌨step2:根据复数相乘的规则,计算real、imag

real——实部 = 两数的实部的乘积 - 两数虚部的乘积(因为i方 = -1)


imag——虚部 = 两个实部*虚部,相加


🌨step3:完整代码:

struct complex multiply(struct complex x, struct complex y)
{
    struct complex co;
    co.real = x.real * y.real - x.imag * y.imag;
    co.imag = x.real * y.imag + x.imag * y.real;
    return co;
}


15.按等级统计学生成绩


🐤题目要求

要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数


函数接口定义:
int set_grade( struct student *p, int n );

其中p是指向学生信息的结构体数组的指针,该结构体的定义为:

struct student
{
    int num;
    char name[20];
    int score;
    char grade;
};


n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。

裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
struct student{
    int num;
    char name[20];
    int score;
    char grade;
};
int set_grade( struct student *p, int n );
int main()
{   struct student stu[MAXN], *ptr;
    int n, i, count;
    ptr = stu;
    scanf("%d\n", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}
/* 你的代码将被嵌在这里 */


🐤题解

🏀step1

根据各个等级满足的条件,令p[i].grade 等于相应的ABCD


🏀step2

返回不合格(D等级)的人数:每个满足D的if中n++即可


🏀step3:完整代码

int set_grade( struct student *p, int n )
{
    int i = 0;
    int n = 0;
    for(i = 0; i<n; i++)
    {
        if(p[i].score >=85)
            p[i].grade = 'A';
        else if(p[i].score >=70)
            p[i].grade = 'B';
        else if(p[i].score >=60)
            p[i].grade = 'C';
        else if(p[i].score <60)
        {
            p[i].grade = 'D';
            n++;
        }
    } 
    return n;
}


16.结构体数组排序-根据成绩高低将学生记录排序


⌛题目要求

定义函数处理结构体数组,按成绩从高到低降序排列

函数接口定义:
struct stu {
    int num;
    char name[20];
    int score;  };
void  fun ( struct stu *p, int n );


p是结构体数组的起始地址,n是结构体单元个数。


结构体成员:num是学号,name是姓名,score是成绩。


裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
struct stu{
    int num;
    char name[20];
    int score;
};
void fun( struct stu *p, int n );
int main()
{   struct stu a[10];
    int n, i;
    scanf("%d", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &a[i].num, a[i].name, &a[i].score);
    } 
   fun(a,n);
   for(i = 0; i < n; i++)
       printf("%d %s %d\n", a[i].num, a[i].name, a[i].score);
    return 0;
}
/* 请在这里填写答案 */


⌛题解:选择排序

大致思路:结构体数组从左到右依次遍历(从下标i = 0到i = n - 1),找到最大值对应数组的下标,存储到变量max中,如果max == i,说明最大值对应的下标就是i,不用再处理;如果max != i , 说明最大元素的下标不是i,因此要把这俩结构体变量交换

void  fun ( struct stu *p, int n )
{
    int i,j;
    int max = 0; 
    for(i = 0;i<n-1;i++)
    {
        max = i;
        for(j = i+1;j<n;j++)
        {
            if(p[j].score>p[max].score)
                max = j;
        }
        if(i!=max)
        {
            struct stu tem = p[i];
            p[i] = p[max];
            p[max] = tem;
        }
    }
}
相关文章
|
1月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
52 13
|
1月前
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
71 10
|
1月前
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
40 10
|
1月前
|
存储 编译器 C语言
【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
本任务要求根据求根公式计算并输出一元二次方程的两个实根,精确到小数点后两位。若方程无实根,则输出提示信息。主要内容包括: - **任务描述**:使用求根公式计算一元二次方程的实根。 - **相关知识**:掌握 `sqrt()` 函数的基本使用方法,判断方程是否有实根。 - **编程要求**:根据输入的系数,计算并输出方程的根或提示无实根。 - **测试说明**:提供两组测试数据及预期输出,确保代码正确性。 - **通关代码**:包含完整的 C 语言代码示例,实现上述功能。 通过本任务,你将学会如何处理一元二次方程的求解问题,并熟悉 `sqrt()` 函数的使用。
32 5
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
36 4
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】
本任务要求输入x的值,计算并输出特定阶跃函数的结果。主要内容包括: 1. **选择结构基本概念**:介绍if、if-else、switch语句。 2. **主要语句类型**:详细解释if、if-else、switch语句的使用方法。 3. **跃迁函数中变量的取值范围**:说明如何根据条件判断变量范围。 4. **计算阶跃函数的值**:通过示例展示如何根据给定条件计算函数值。 编程要求:在右侧编辑器Begin-End之间补充代码,实现阶跃函数的计算和输出。测试说明提供了多个输入及其预期输出,确保代码正确性。最后提供通关代码和测试结果,帮助理解整个过程。
33 0
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】判断一个数是不是5和7的倍数(头歌实践教学平台习题)【合集】
本任务要求输入一个正整数,判断其是否同时是5和7的倍数,若是输出&quot;Yes&quot;,否则输出&quot;No&quot;。内容涵盖选择结构的基本概念、主要语句类型(if、if-else、switch)及条件判断逻辑,帮助理解编程中的分支执行与条件表达式。测试用例包括正数、负数及非倍数情况,确保代码逻辑严谨。通关代码示例如下: ```cpp #include &quot;stdio.h&quot; int main(){ int a; scanf(&quot;%d&quot;, &a); if (a &lt;= 0){ printf(&quo
48 0
|
C语言
《C语言及程序设计》实践参考——成绩处理
返回:贺老师课程教学链接   项目要求 【项目2- 成绩处理】在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:(1)输入小组人数及成绩,要保证成绩在0-100之间;(2)输出该小组的最高成绩、最低成绩、平均成绩;(3)输出考得最高成绩和最低成绩的同学的人数;(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。(5)(选做)求出所有同学成绩的
1214 0
|
1月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
63 23
|
1月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
68 15

热门文章

最新文章