某班有5个学生, 每名学生的数据包括学号,姓名,3门课成绩,从键盘上输入5名学生数据,要求打印出3门课的总平均成绩以及最高分的学生数据(包括学号,姓名,3门课成绩)

 1 #define _CRT_SECURE_NO_WARNINGS        //关闭安全检查
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4
 5 //定义结构体类型
 6 struct ST
 7 {
 8     int ID;
 9     char name[20];
10     float score[3];
11 };
12
13 //方法1 : 结构体数组作为函数参数 开销大
14 float avg(struct ST sts[], int n)
15 {
16     float sum = 0, avg;
17     for (int i = 0; i < n; i++)
18     {
19         for (int j = 0; j < 3; j++)
20         {
21             sum += sts[i].score[j];
22         }
23     }
24     avg = sum / n / 3;
25     return avg;
26 }
27
28 //方法2 : 结构体数组指针作为函数参数 开销小
29 float avg1(struct ST *p, int n)
30 {
31     float sum = 0, avg;
32     for (int i = 0; i < n; i++)
33     {
34         for (int j = 0; j < 3; j++)
35         {
36             sum += p[i].score[j];
37         }
38     }
39     avg = sum / n / 3;
40     return avg;
41 }
42
43 //输出最高分数学生信息
44 void high(struct ST *p, int n)
45 {
46     int index = 0;
47     float max = 0, sum = 0;
48     for (int i = 0; i < n; i++)
49     {
50         for (int j = 0; j < 3; j++)
51         {
52             sum = p[i].score[0] + p[i].score[1] + p[i].score[2];
53             if (sum > max)
54             {
55                 max = sum;
56                 index = i;
57             }
58         }
59     }
60     printf("最高学生信息为:\n");
61     //(p+index)->ID 等价于 p[index].ID
62     printf("学号:%d\n", (p+index)->ID);
63     printf("姓名:%s\n", p[index].name);
64     printf("成绩:%.2f, %.2f, %.2f\n", p[index].score[0], p[index].score[1], p[index].score[2]);
65 }
66
67 int main()
68 {
69     int i, j;
70     struct ST sts[5];
71     for (i = 0; i < 5; i++)
72     {
73         printf("请输入第%d个学生信息\n", i+1);
74         scanf("%d", &sts[i].ID);
75         //加不加&都可以
76         scanf("%s", sts[i].name);
77         printf("输入各科成绩\n");
78         for (j = 0; j < 3; j++)
79         {
80             scanf("%f", &sts[i].score[j]);
81         }
82     }
83
84     printf("平均成绩为:%f\n", avg1(sts, 5));
85     high(sts, 5);
86     system("pause");
87     return 0;
88 }

时间: 2024-10-14 10:58:10

某班有5个学生, 每名学生的数据包括学号,姓名,3门课成绩,从键盘上输入5名学生数据,要求打印出3门课的总平均成绩以及最高分的学生数据(包括学号,姓名,3门课成绩)的相关文章

52.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入

//1.建立一个for循环用于输入数据,设置退出条件 //2.算出平均成绩 #include<iostream> using namespace std; int main() { int Score,sum=0,k=0; int a[100]; float Average; cout<<"please input some students's score:"<<endl; for(int i=0;i<100;i++) { cin>&g

【C语言】用定义结构类型的方法,编写程序建立一个具有学生学号、姓名、总分和联系电话的记录文件。编写程序从键盘上输入学号可以查到此人的其他信息。

1.用定义结构类型的方法,编写程序建立一个具有学生学号.姓名.总分和联系电话的记录文件. 2.编写程序从键盘上输入学号可以查到此人的其他信息. 第一部分代码(向文件中添加数据) 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define N 5 4 struct student 5 { 6 int num; 7 char name[10]; 8 float score; 9 char tel[20]; 10 }stu[N]; 11 in

使用文档对象在页面上创建学生信息表。 信息表包括学号、姓名、性别、电子邮件、联系电话、个人主页和联系地址, 信息表内容通过表单输入,提交前先使用正则表达式进行验证,联系地址不能超过20个字符, 每输入一名学生的信息,提交后,表格增加一行,表格不能被选择、复制。

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <!--        描述:使用文档对象在页面上创建学生信息表.        信息表包括学号.姓名.性别.电子邮件.联系电话.个人主页和联系地址,        信息表内容通过表单输入,提交前先使用

输入一个扩展名和一个文件夹名称,显示这个文件夹下的所有这个扩展名的文件名及其大小?

package io; import java.io.File;import java.util.Scanner; public class io_1 { public static void main(String[] args) { System.out.println("请输入文件名和后缀名"); //输入文件夹 Scanner sc=new Scanner(System.in); String s=sc.next(); //输入扩展名 Scanner sa=new Scanne

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

完成一个登陆页面。(用户名:F11;密码:123456)。要求用户输入用户 名和密码,验证是否等于正确值。如果等于告知登陆成功,程序结束;否则告 知用户名密码有误。用户三次输入不正确,告知登陆失败,程序结束 。

#include <stdio.h>#include <string.h> /*完成一个登陆页面.(用户名:F11:密码:123456).要求用户输入用户名和密码,验证是否等于正确值.如果等于告知登陆成功,程序结束:否则告知用户名密码有误.用户三次输入不正确,告知登陆失败,程序结束 .*/ void main(){ char username[20]; char password[20]; int i = 0; for(i = 0; i < 3; i++) { printf(

matlab数据转换为字符串并合并字符串标注到图像曲线上

1.把数字转换为字符串 [函数描述]str=num2str(A):把数组A中元素取小数点后四位,并转换为字符串. [函数实例]把数字转换为字符串,输入语句: str1=num2str(pi) str2=num2str(eps) 输出结果: str1 =3.1416 str2 =2.2204e-016 2.字符串合并 strcat(str1,str2,-.,strn); 将str1,str2,-strn合并成为一个字符串 3.通过 gtext(str);可以把字符串标注到图像上面,注意str一定要

在选定的数据源上未找到名为“TitleSub”的字段或属

在.NET开发过程中时常会遇到“在选定的数据源上未找到名为“TitleSub”的字段或属性”的错误”,导致这类错误的原因有很多,在我的项目中,详细情况是这样:1.有两个控件:DropDownList类型的ddlTbName和DridView类型的gridDetail:2.ddlTbName绑定的是数据表的名称,gridDetail绑定的是每个表对应的字段,二者级联绑定:3.由于两个表的字段不一样,结果在选择不同的表时,老师报上面的错 解决办法:每次在绑定gridDetail前,首先清空gridD

如何在CentOS 7上修改主机名

如何在CentOS 7上修改主机名 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名.“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配.静态主机名和瞬态主机名都遵从作为互联网域名同样的字符限制规则.而另一方面,“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如Linu