以下程序的输出结果是 。 #include <stdio.h> struct STU { char num[10]; float score[3]} ; void main() { struct STU s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}}, *p=s; int i; float sum=0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf("%6.2f\n",sum); } A. 260.00 B. 270.00 C. 280.00 D. 285.00
时间: 2023-12-06 14:43:28 浏览: 157
答案是 B. 270.00。
分析:
首先定义了一个结构体类型 STU,包含学号 num 和三门课程的成绩 score。
然后定义了一个 STU 类型的数组 s,包含 3 个元素,每个元素都是一个 STU 类型的结构体,具体赋值如下:
s[0] = {"20021", 90, 95, 85};
s[1] = {"20022", 95, 80, 75};
s[2] = {"20023", 100, 95, 90};
接着定义了一个 STU 指针变量 p,指向数组 s 的首地址。
然后通过循环遍历数组 s 中的每个元素,将每个元素的 score 数组中的三个成绩累加到变量 sum 中。
最后输出 sum 的值,结果为 270.00。
相关问题
#include<stdio.h> struct stu { long num; char name[12]; float score; }stu1,stu2; main() { scanf("%ld%s%f",&stu1.num,&stu1.name,&stu1.score); stu2=stu1; printf("学号=%ld 姓名=%s 成绩=%5.1f\n",stu1.num,stu1.name,stu1.score); }
这段代码是一个简单的结构体操作示例。定义了一个结构体类型 `stu`,包含学号、姓名和成绩三个成员变量。在 `main` 函数中,通过 `scanf` 函数输入一个学生的学号、姓名和成绩,然后将这个结构体对象赋值给另一个结构体对象 `stu2`,最后输出原始结构体对象 `stu1` 的三个成员变量的值。
需要注意的是,这段代码中有一些潜在的问题:
1. 结构体类型定义中的成员变量 `name` 只有 12 个字节的空间,可能无法存储较长的姓名。
2. `scanf` 函数没有对输入的字符串长度进行限制,可能会导致缓冲区溢出。
3. `printf` 函数中的格式控制符 `%5.1f` 意味着输出浮点数时总共占据 5 个字符宽度,其中小数部分占据 1 个字符宽度,整数部分占据 4 个字符宽度。如果输入的成绩不足 4 个字符宽度,输出结果会对齐到右边,如果超过 5 个字符宽度,会截断输出。
#include <stdio.h> struct STU { char num[10]; float score[3]} ; void main() { struct STU s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}}, *p=s; int i; float sum=0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf("%6.2f\n",sum); }这题怎么做
这是一道C语言的结构体题目,代码中定义了一个名为STU的结构体,其中包含一个学生的学号和三门课程的成绩。然后在main函数中定义了一个数组s,里面存放了3个学生的信息。接着定义了一个指向结构体数组的指针p,并将其指向数组s的首地址。最后计算了每个学生三门课程成绩的总和,并输出结果。
下面是完整的代码及注释解释:
```
#include <stdio.h>
// 定义一个名为STU的结构体,包含学生的学号和三门课程的成绩
struct STU {
char num[10]; // 学号
float score[3]; // 三门课程的成绩
};
void main() {
// 定义一个结构体数组s,里面存放了3个学生的信息
struct STU s[3] = {
{"20021", 90, 95, 85},
{"20022", 95, 80, 75},
{"20023", 100, 95, 90}
};
// 定义一个指向结构体数组的指针p,并将其指向数组s的首地址
struct STU *p = s;
int i;
float sum = 0;
// 计算每个学生三门课程成绩的总和
for (i = 0; i < 3; i++) {
sum = sum + p->score[0] + p->score[1] + p->score[2];
p++; // 指针p指向下一个结构体
}
// 输出总成绩
printf("%6.2f\n", sum);
}
```
需要注意的是,在计算每个学生三门课程成绩的总和时,需要使用指针p来访问结构体数组中每个结构体的成员变量。同时,在每次循环结束后,需要将指针p指向下一个结构体,以便下一次循环访问下一个学生的信息。
阅读全文