写程序,定义学生结构体STU(至少包含三个成员),主函数中定义一个STU类型的局部变量s。(1)自定义一个函数Input,给主函数中的学生变量s赋值;(2)自定义一个函数Output,输出主函数中的s的值。运行程序,并输出结果
时间: 2023-03-10 13:30:06 浏览: 200
示例代码:struct STU{
int id;
char name[30];
float score;
};void Input(STU &s){
printf("请输入学生的id:");
scanf("%d", &s.id);
printf("请输入学生的姓名:");
scanf("%s", &s.name);
printf("请输入学生的成绩:");
scanf("%f", &s.score);
}void Output(STU s){
printf("学生的id: %d\n", s.id);
printf("学生的姓名: %s\n", s.name);
printf("学生的成绩: %f\n", s.score);
}int main(){
STU s;
Input(s);
Output(s);
return 0;
}
相关问题
编写以input函数形参:函数返回类型:struct student函数功能:定义struct student类局部变量通过scanf函数输入以上结构体变量成员num、name、c、oop、db的值计算其中avg成员(平均成绩)的值返回成员值输入、计算后的结构体变量,包含output函数以及形参:共2个形参,第1个形参表示要输出的学生人数,第2个参数是struct student数据类型返回值:无功能:通过for循环用printf函数逐一显示每个学生的学号、姓名、3门课的成绩及平均成绩,共2个形参,第1个形参表示要输出的学生人数,第2个参数是struct student数据类型返回值:无功能:使用选择法对结构体数组进行降序排序,排序依据为结构体数组元素中的avg成员(平均成绩),成绩高的排在前面定义能保存多达10个学生成绩资料的struct student类型数组。通过printf、scanf提示并要求用户输入要录入成绩资料的学生人数通过for循环调用前面定义的input()函数逐一输入学生成绩资料并保存到结构体数组元素内调用前面定义的sort()函数对结构体数组进行降序排序调用前面定义output()函数显示输出每个学生的成绩资料(结构体数组各元素的成员值)
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 10
struct student {
int num;
char name[20];
float c;
float oop;
float db;
float avg;
};
void input(struct student *stu) {
printf("请输入学号:");
scanf("%d", &stu->num);
printf("请输入姓名:");
scanf("%s", stu->name);
printf("请输入C语言成绩:");
scanf("%f", &stu->c);
printf("请输入OOP成绩:");
scanf("%f", &stu->oop);
printf("请输入数据库成绩:");
scanf("%f", &stu->db);
stu->avg = (stu->c + stu->oop + stu->db) / 3.0f;
}
void output(int n, struct student *stu) {
printf("学号\t姓名\tC语言\tOOP\t数据库\t平均成绩\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].num, stu[i].name, stu[i].c, stu[i].oop, stu[i].db, stu[i].avg);
}
}
void sort(int n, struct student *stu) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (stu[i].avg < stu[j].avg) {
struct student temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
int main() {
int n;
struct student stu[MAX_STUDENT_NUM];
printf("请输入要录入成绩资料的学生人数(最多%d人):", MAX_STUDENT_NUM);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的成绩资料:\n", i+1);
input(&stu[i]);
}
sort(n, stu);
printf("按平均成绩降序排列后的学生成绩资料:\n");
output(n, stu);
return 0;
}
```
样例输出:
```
请输入要录入成绩资料的学生人数(最多10人):3
请输入第1个学生的成绩资料:
请输入学号:1001
请输入姓名:张三
请输入C语言成绩:80
请输入OOP成绩:90
请输入数据库成绩:85
请输入第2个学生的成绩资料:
请输入学号:1002
请输入姓名:李四
请输入C语言成绩:85
请输入OOP成绩:90
请输入数据库成绩:80
请输入第3个学生的成绩资料:
请输入学号:1003
请输入姓名:王五
请输入C语言成绩:90
请输入OOP成绩:80
请输入数据库成绩:85
按平均成绩降序排列后的学生成绩资料:
学号 姓名 C语言 OOP 数据库 平均成绩
1001 张三 80.00 90.00 85.00 85.00
1003 王五 90.00 80.00 85.00 85.00
1002 李四 85.00 90.00 80.00 85.00
```
#include <stdio.h> struct STU { char name[10]; int num; }; void f(char *name,int num) { struct STU s[2]={ {"SunDan",20044},{"Penghua",20045}}; 1 num=s[0].num; strcpy(name,s[0].name); } int main(void) { struct STU s[2]={{"YangSan",2004},{"LiSiGuo",20042}},*p; p=&s[1];f(p->name,p->num); printf("%s %d\n",p->name,p->num); return 0; }这个程序我在一标记了个1,请问标记出STU结构是什么样的,它变了吗,
标记1后面的语句是 `num=s[0].num;`,这句话将 `s[0]` 中的 `num` 值赋给了 `num` 变量。因此,`f()` 函数中的 `num` 参数只是一个局部变量,不会对 `STU` 结构体产生任何影响。
`STU` 结构体的定义为:
```c
struct STU {
char name[10];
int num;
};
```
它在整个程序中没有发生任何变化。
阅读全文