用C++编写一个程序,满足下面条件:输入5名学生姓名和该生的高等数学、英语、物理课成绩;再输入一个查询学生姓名,如果查到,则输出该生的成绩总分,如果总分大于270分,在总分后面空4格加上“优秀”两个字;否则输出“没有查到该学生”
时间: 2023-09-19 16:05:05 浏览: 121
### 回答1:
好的,我可以帮您解决这个问题。以下是相应的C语言代码:
#include <stdio.h>
#include <string.h>
#define NUM 5
#define SCORE 3
#define MAX_NAME_LEN 20
struct student {
char name[MAX_NAME_LEN];
int score[SCORE];
};
int main() {
struct student students[NUM];
char query_name[MAX_NAME_LEN];
int i, j, sum = 0, flag = 0;
printf("请输入5名学生的姓名和成绩:\n");
for (i = 0; i < NUM; i++) {
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入该生的高等数学、英语、物理课成绩:");
for (j = 0; j < SCORE; j++) {
scanf("%d", &(students[i].score[j]));
sum += students[i].score[j];
}
}
printf("请输入要查询的学生姓名:");
scanf("%s", query_name);
for (i = 0; i < NUM; i++) {
if (strcmp(query_name, students[i].name) == 0) {
flag = 1;
printf("%s的成绩总分为:%d", students[i].name, sum);
if (sum > 270) {
printf(" 优秀\n");
} else {
printf("\n");
}
break;
}
}
if (!flag) {
printf("没有查到该学生\n");
}
return 0;
}
请注意,上述代码仅供参考,并非最佳实践。如果您需要更多细节信息,请参阅相关的C语言开发文档。
### 回答2:
下面是一个满足条件的C程序示例:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char name[20];
float math;
float english;
float physics;
};
int main() {
struct Student students[5];
char queryName[20];
float totalScore = 0.0;
int found = 0;
printf("请输入5名学生的姓名和其高数、英语、物理成绩:\n");
for (int i = 0; i < 5; i++) {
printf("请输入第%d名学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入第%d名学生的高数成绩:", i+1);
scanf("%f", &(students[i].math));
printf("请输入第%d名学生的英语成绩:", i+1);
scanf("%f", &(students[i].english));
printf("请输入第%d名学生的物理成绩:", i+1);
scanf("%f", &(students[i].physics));
}
printf("\n请输入要查询的学生姓名:");
scanf("%s", queryName);
for (int i = 0; i < 5; i++) {
if (strcmp(queryName, students[i].name) == 0) {
totalScore = students[i].math + students[i].english + students[i].physics;
found = 1;
break;
}
}
if (found) {
printf("该生的成绩总分为:%.2f", totalScore);
if (totalScore > 270.0) {
printf(" 优秀");
}
} else {
printf("没有查到该学生");
}
return 0;
}
```
这个程序首先定义了一个结构体`Student`,用于存储学生的姓名和各科成绩。然后创建了一个包含5个`Student`类型的数组`students`。
程序通过`for`循环,分别获取5名学生的姓名和各科成绩。然后用户输入要查询的学生姓名。
接下来,程序使用`for`循环逐个比较用户输入的查询姓名和每个学生的姓名,一旦找到匹配的学生,就计算该生的成绩总分并将`found`标志设置为1。如果在循环结束后`found`标志仍然为0,表示没有查到该学生。
最后,根据`found`的值进行输出,如果找到了该学生,则输出总分,并在总分后面加上`优秀`两个字(如果总分大于270分);否则输出`没有查到该学生`。
### 回答3:
下面是用C编写的满足上述条件的程序:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char name[20];
int math;
int english;
int physics;
};
int main() {
struct Student students[5];
int i;
char queryName[20];
int totalScore = 0;
// 输入学生信息
for (i = 0; i < 5; i++) {
printf("请输入第%d名学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入该生的高等数学成绩:");
scanf("%d", &students[i].math);
printf("请输入该生的英语成绩:");
scanf("%d", &students[i].english);
printf("请输入该生的物理成绩:");
scanf("%d", &students[i].physics);
printf("\n");
}
// 查询学生成绩
printf("请输入要查询的学生姓名:");
scanf("%s", queryName);
for (i = 0; i < 5; i++) {
if (strcmp(students[i].name, queryName) == 0) {
totalScore = students[i].math + students[i].english + students[i].physics;
break;
}
}
if (i < 5) {
printf("该生的成绩总分为:%d", totalScore);
if (totalScore > 270) {
printf(" 优秀\n");
} else {
printf("\n");
}
} else {
printf("没有查到该学生。\n");
}
return 0;
}
```
以上程序首先定义了一个名为`Student`的结构体,用来存储学生的姓名和各科成绩。然后在`main`函数中声明了一个长度为5的`Student`数组,用来存储5名学生的信息。接着使用循环逐个输入学生的信息。查询学生成绩时,使用循环遍历学生数组,使用`strcmp`函数进行姓名比较,如果找到该生则记录总分,并跳出循环。最后根据查询结果给出相应的输出。
阅读全文