void All(struct student stu[N]){ int k; printf("汇总%d个学生信息如下:\n学号\t姓名\t性别\t身份证号\t\t密码\t报到\t宿舍\t班级\n",sum); for(k=0;k<sum;k++){ printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[k].StuID,stu[k].name,stu[k].sex,stu[k].Identity,stu[k].pass,stu[k].isbd,stu[k].dormitory,stu[k].cad); } } 改进上述代码
时间: 2023-07-21 16:31:02 浏览: 68
这段代码可以改进的地方有:
1. 函数参数不应该使用宏定义,应该使用函数参数来指定学生数组的大小。
2. 可以使用const关键字来修饰不会被修改的参数。
3. 在输出格式中,\t 可以替换成固定长度的空格,使输出更加美观。
4. 可以使用更加具有可读性的变量名,如num来表示学生总数,而不是sum。
改进后的代码如下:
```
/**
* 输出所有学生信息
* @param stu 学生数组
* @param num 学生总数
*/
void All(const struct student stu[], int num){
printf("汇总%d个学生信息如下:\n", num);
printf("学号 姓名 性别 身份证号 密码 报到 宿舍 班级\n");
for(int i = 0; i < num; i++){
printf("%-10s%-8s%-8s%-20s%-10s%-8s%-10s%-8s\n",
stu[i].StuID, stu[i].name, stu[i].sex, stu[i].Identity,
stu[i].pass, stu[i].isbd, stu[i].dormitory, stu[i].cad);
}
}
```
改进后的代码使用了更加具有可读性的变量名,修饰了不会修改的参数,使用了固定长度的空格来美化输出格式,使代码更加清晰易懂。
相关问题
void All(struct student stu[N]){ int k; printf("汇总%d个学生信息如下:\n学号\t姓名\t性别\t身份证号\t\t密码\t报到\t宿舍\t班级\n",sum); for(k=0;k<sum;k++){ printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[k].StuID,stu[k].name,stu[k].sex,stu[k].Identity,stu[k].pass,stu[k].isbd,stu[k].dormitory,stu[k].cad); } } 其他语法写出来
这段代码是一个输出所有学生信息的函数,可以加上注释和函数声明,使其更加完整。
```
// 函数声明
void All(struct student stu[N]);
/**
* 输出所有学生信息
* @param stu 学生数组
*/
void All(struct student stu[N]){
int k;
printf("汇总%d个学生信息如下:\n学号\t姓名\t性别\t身份证号\t\t密码\t报到\t宿舍\t班级\n", sum);
for(k = 0; k < sum; k++){
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[k].StuID, stu[k].name, stu[k].sex, stu[k].Identity, stu[k].pass, stu[k].isbd, stu[k].dormitory, stu[k].cad);
}
}
```
在函数声明中,我们指定了函数名、参数类型和返回值类型。在函数注释中,我们解释了函数的作用和参数的含义。这样可以让函数更加规范和易于维护。
#i补全以下代码并求出,有3个学生, 每个学生的数据包括学号、姓名、3门J课程的成绩要求编了个函数input从键备输入3个学生数据,并编了另个函数aver输山最高分的学生的数据(包括学号、娃名、3门]课程成绩、平均分数)。 nclude<stdio.h> Hdefine N 3 struct student long int num,char name[20],int score[3],float aver; intmainO void input(struct student stu(3D;void aver(struct student stu(3D;input(stu); aver(stu);printf("\n");return 0; void input(struct student stu[3p) void aver(strucl student stuf3)
#include <stdio.h>
#define N 3
struct student {
long int num;
char name[20];
int score[3];
float aver;
};
void input(struct student stu[N]) {
int i, j;
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%ld", &stu[i].num);
printf("姓名:");
scanf("%s", stu[i].name);
for (j = 0; j < 3; j++) {
printf("请输入第%d门课程的成绩:", j+1);
scanf("%d", &stu[i].score[j]);
}
}
}
void aver(struct student stu[N]) {
int i, j;
float max_aver = 0;
int max_index = 0;
for (i = 0; i < N; i++) {
float sum = 0;
for (j = 0; j < 3; j++) {
sum += stu[i].score[j];
}
stu[i].aver = sum / 3.0;
if (stu[i].aver > max_aver) {
max_aver = stu[i].aver;
max_index = i;
}
}
printf("最高分的学生信息:\n");
printf("学号:%ld\n", stu[max_index].num);
printf("姓名:%s\n", stu[max_index].name);
printf("成绩:");
for (j = 0; j < 3; j++) {
printf("%d ", stu[max_index].score[j]);
}
printf("\n");
printf("平均分数:%f\n", stu[max_index].aver);
}
int main() {
struct student stu[N];
input(stu);
aver(stu);
return 0;
}
阅读全文
相关推荐

















