用C语言输入5位同学的编号、姓名以及3门课程的成绩。假设学号长度不超过6位,姓名长度不超过8位,且姓名中不包含空格。输出每位同学的姓名及平均分,保留1位小数。每位学生的信息占据一行。姓名和平均分之间以空格间隔。要求全部输入完在输出
时间: 2024-03-02 11:53:14 浏览: 89
好的,以下是可以实现您要求的C语言代码:
```c
#include <stdio.h>
int main() {
int id[5];
char name[5][9];
float score[5][3];
float avg[5];
// 输入学生信息
printf("请依次输入5位同学的学号、姓名和3门课程的成绩:\n");
for (int i = 0; i < 5; i++) {
scanf("%d %s %f %f %f", &id[i], name[i], &score[i][0], &score[i][1], &score[i][2]);
avg[i] = (score[i][0] + score[i][1] + score[i][2]) / 3;
}
// 输出学生平均分
printf("每位同学的姓名及平均分如下:\n");
for (int i = 0; i < 5; i++) {
printf("%s %.1f\n", name[i], avg[i]);
}
return 0;
}
```
代码中使用了一个二维数组来存储每个学生的3门课程成绩,同时使用一个一维数组来存储每个学生的平均分。在输入完所有学生信息后,使用一个循环输出每个学生的姓名和平均分。注意,为了保证姓名不超过8位,我们在定义`name`数组时设置了长度为9,以便存储字符串末尾的`\0`字符。
相关问题
输入5位同学的编号、姓名以及3门课程的成绩。假设学号长度不超过6位,姓名长度不超过8位,且姓名中不包含空格。输出每位同学的姓名及平均分,保留1位小数。每位学生的信息占据一行。姓名和平均分之间以空格间隔。c语言
好的,这里给出一个示例代码,使用结构体来存储每位同学的信息和成绩,并使用循环来输入和输出数据:
```c
#include <stdio.h>
// 定义一个结构体来存储每位同学的信息和成绩
struct Student {
char sid[7]; // 学号,长度不超过6位
char name[9]; // 姓名,长度不超过8位,且姓名中不包含空格
float scores[3]; // 3门课程的成绩
float avg_score; // 平均分
};
int main() {
// 创建一个结构体数组,用于存储每位同学的信息和成绩
struct Student students[5];
// 循环输入每位同学的信息和成绩
for (int i = 0; i < 5; i++) {
// 输入学号、姓名和3门课程的成绩
printf("请输入第%d位同学的信息:\n", i+1);
printf("学号:");
scanf("%s", students[i].sid);
printf("姓名:");
scanf("%s", students[i].name);
printf("第1门课程成绩:");
scanf("%f", &students[i].scores[0]);
printf("第2门课程成绩:");
scanf("%f", &students[i].scores[1]);
printf("第3门课程成绩:");
scanf("%f", &students[i].scores[2]);
// 计算该同学的平均分
students[i].avg_score = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3;
}
// 输出每位同学的姓名及平均分
printf("每位同学的姓名及平均分如下:\n");
for (int i = 0; i < 5; i++) {
printf("%s %.1f\n", students[i].name, students[i].avg_score);
}
return 0;
}
```
这里使用了一个结构体数组来存储每位同学的信息和成绩,循环输入学生信息后,计算每位同学的平均分,然后循环输出每位同学的姓名及平均分。注意在输出时,要使用一个空格来分隔姓名和平均分。
用C语言struct stud { int num; //学号 char name[10]; //姓名 int score[3]; //3门课成绩 int sum; //总分 }; 输入格式: 先输入不超过10的一个正整数N,然后每行输入一个学生的信息(学号、姓名、三门课成绩)。学号在整数范围内,姓名长度小于10个字符。 输出格式: 首先输出每个学生的信息(包括学号、姓名、三门课成绩、总分),数据项之间空1格,每人一行;再输出全部成绩的平均分;最后输出总分最高(假设没有相同总分)同学的学号、姓名、三门
课成绩和总分,数据项之间空1格,一行输出。
以下是实现该需求的C语言代码:
```c
#include <stdio.h>
#include <string.h>
struct stud {
int num; // 学号
char name[10]; // 姓名
int score[3]; // 3门课成绩
int sum; // 总分
};
int main() {
int n;
printf("请输入学生数量:");
scanf("%d", &n);
struct stud students[n]; // 学生数组
int i, j;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息(学号 姓名 3门课成绩):\n", i + 1);
scanf("%d %s %d %d %d", &students[i].num, students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].sum = students[i].score[0] + students[i].score[1] + students[i].score[2]; // 计算总分
}
// 输出每个学生的信息
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总分\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[i].num, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].sum);
}
// 计算平均分
int sum = 0;
for (i = 0; i < n; i++) {
sum += students[i].sum;
}
double avg = (double) sum / n;
printf("平均分:%.2lf\n", avg);
// 找出总分最高的学生
int max_sum = 0;
int max_index = -1;
for (i = 0; i < n; i++) {
if (students[i].sum > max_sum) {
max_sum = students[i].sum;
max_index = i;
}
}
printf("总分最高的学生:\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[max_index].num, students[max_index].name, students[max_index].score[0], students[max_index].score[1], students[max_index].score[2], students[max_index].sum);
return 0;
}
```
运行示例:
```
请输入学生数量:3
请输入第1个学生的信息(学号 姓名 3门课成绩):
1001 Tom 90 80 70
请输入第2个学生的信息(学号 姓名 3门课成绩):
1002 Jerry 85 90 95
请输入第3个学生的信息(学号 姓名 3门课成绩):
1003 Lucy 70 75 80
学号 姓名 成绩1 成绩2 成绩3 总分
1001 Tom 90 80 70 240
1002 Jerry 85 90 95 270
1003 Lucy 70 75 80 225
平均分:245.00
总分最高的学生:
1002 Jerry 85 90 95 270
```
阅读全文