已知学生信息包含:学号、姓名、专业、5门课程成绩,编写程序从键盘输入6个学生的信息,计算学生的平均成绩,并输出这些学生的所有信息。

已知学生信息包含:学号、姓名、专业、5门课程成绩,编写程序从键盘输入6个学生的信息,计算学生的平均成绩,并输出这些学生的所有信息。

说明:

1、结构体类型定义如下:

struct stu{

int num;

char name[20];

char zy[30];

int score[5];

float avg; 

} ;

2、输入格式:除格式说明符外不允许有其它字符

3、输出格式:学号、姓名和专业用"%-8d%s %s"

                      成绩用“%5d”,平均成绩用"%7.2f\n"

4、提示性文字的输出格式:"请输入6名学生的信息\n"

                                           "6名学生的信息如下:\n

#include<string.h>

#include<stdio.h>

struct stu{

	int num;

	char name[20];

	char zy[30];

	int score[5];

	float avg; 

} ;



int main()

{

	struct stu s[6];

	int  i,j,sum;

        printf("请输入6名学生的信息\n");

	for(i=0;i<6;i++)

	{

		scanf("%d%s%s",&s[i].num,s[i].name,s[i].zy);

		sum=0;

		for(j=0;j<5;j++)

		 {

		 	scanf("%d",&s[i].score[j]);

		    sum+=s[i].score[j];

		 }

        s[i].avg=sum/5.0;

	}

       printf("6名学生的信息如下:\n");

	for(i=0;i<6;i++)

	{

		printf("%-8d%s %s",s[i].num,s[i].name,s[i].zy);

		for(j=0;j<5;j++)

		 {

		 	printf("%5d",s[i].score[j]);

		  }

		printf("%7.2f\n",s[i].avg);

   	}

	return  0;

}



 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是程序的中文描述: 1. 首先定义一个学生类,包括姓名成绩两个属性,以及一个获取成绩的方法。 2. 在主函数中,定义一个长度为5的学生数组,循环输入每个学生姓名成绩。 3. 定义一个变量maxScore,用于记录当前最高分数,初始值为。 4. 循环遍历学生数组,如果某个学生成绩比maxScore高,则更新maxScore,并记录该学生姓名。 5. 输出成绩最高者的姓名成绩。 希望这个中文描述能够帮助您理解程序的实现思路。 ### 回答2: 要实现这个功能,可以采用一个比较简单的方法:先定义一个结构体,用于存储每个学生信息,然后在主函数中定义5个该结构体类型的变量,然后通过循环的方式依次从键盘输入每个学生姓名成绩。在输入完5个学生信息后,再比较它们的成绩,找出最高的那个学生输出姓名成绩即可。 下面是代码实现: ``` #include <stdio.h> #include <string.h> struct Student { char name[20]; float score; }; int main() { struct Student s[5]; // 定义5个学生 int i; float max_score = 0; // 最高分初始化为0 // 从键盘输入每个学生信息 for (i = 0; i < 5; i++) { printf("请输入第%d个学生姓名成绩:", i + 1); scanf("%s%f", s[i].name, &s[i].score); } // 找出最高分的学生 for (i = 0; i < 5; i++) { if (s[i].score > max_score) { max_score = s[i].score; } } // 输出最高分的学生姓名成绩 printf("最高分:%f\n", max_score); printf("最高分的学生:"); for (i = 0; i < 5; i++) { if (s[i].score == max_score) { printf("%s ", s[i].name); } } printf("\n"); return 0; } ``` 上述代码中,我们使用了两个循环来实现功能:第一个循环用于输入每个学生信息,而第二个循环则用于找出最高分的学生。在第二个循环中,我们使用了一个变量`max_score`来存储当前找到的最高分数,初值为0。在每次比较成绩时,如果发现有比当前最高分更高的分数,就更新`max_score`的值。找到最高分后,我们再次使用循环来输出该分数的所有学生姓名。 这段代码可以比较完整地体现出了结构体作为数据类型的优势,也展示了循环结构在实现相同逻辑的程序中的重要性。 ### 回答3: 这道题要求我们编写程序输入5个学生信息,其中包含姓名成绩,然后输出其中成绩最高者的姓名成绩。 首先,我们需要定义两个数组来存储这5个学生姓名成绩。可以使用字符串数组来存储姓名,而成绩则可以使用整型数组来存储。同时,我们还需要定义一个变量来记录成绩最高者的下标。初始时,我们可以将该变量的值设为0。 接下来,我们可以使用for循环来输入学生信息,使用cin语句从键盘输入姓名成绩,然后将其分别存储到对应的数组中。在输入的过程中,我们可以使用if语句来比较当前输入成绩是否大于之前记录的最高成绩,如果是,则更新成绩最高者的下标。 最后,我们只需根据成绩最高者的下标,从姓名成绩数组中取出对应的值,即可输出成绩最高者的姓名成绩。 以下是完整的程序代码: ```c++ #include<iostream> #include<string> using namespace std; int main() { string name[5]; //定义存储姓名的数组 int score[5]; //定义存储成绩的数组 int maxIndex = 0; //定义记录成绩最高者下标的变量,并初始化为0 //循环输入5个学生信息 for(int i=0;i<5;i++) { cout<<"请输入第"<<i+1<<"个学生姓名:"; cin>>name[i]; cout<<"请输入学生成绩:"; cin>>score[i]; //如果当前输入成绩高于之前记录的最高成绩,则更新成绩最高者的下标 if(score[i] > score[maxIndex]) { maxIndex = i; } } //输出成绩最高者的姓名成绩 cout<<"成绩最高者的姓名是:"<<name[maxIndex]<<endl; cout<<"成绩最高者的成绩是:"<<score[maxIndex]<<endl; return 0; } ``` 以上就是解决这道题的完整步骤和代码。需要注意的是,题目要求学生信息包括姓名成绩,因此在输入信息时一定要按照这个顺序输入,否则会出现信息错乱的情况。另外,如果有多个学生成绩相同且都是最高成绩,只会输出其中一个学生姓名成绩,这也是需要注意的地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值