1.结构体数组存储学生信息(姓名,年龄,分数),完成输入学生信息,输出学生信息,求学生成绩之和,求最低学生成绩。
#include<myhead.h>
//定义分数结构体
struct score{
float Chinese;
float English;
float Math;
float sum;
};
//定义身份信息结构体
typedef struct {
char name[20];
int age;
struct score sc1;
}stu;
int main (int argc, const char *argv[])
{
stu stu1[5];//申请栈区五个结构体大小的空间
for(int i=0;i<5;i++){//循环输入学生信息
printf("请输入第%d个学生的信息\n",i+1);
printf("请输入姓名:");
scanf("%s",stu1[i].name);
printf("请输入年龄:");
scanf("%d",&stu1[i].age);
printf("请输入语文成绩:");
scanf("%f",&stu1[i].sc1.Chinese);
printf("请输入英语成绩:");
scanf("%f",&stu1[i].sc1.English);
printf("请输入数学成绩:");
scanf("%f",&stu1[i].sc1.Math);
stu1[i].sc1.sum=stu1[i].sc1.Chinese+stu1[i].sc1.English+stu1[i].sc1.Math;
}
for(int i=0;i<5;i++){//循环输出学生信息
printf("姓名:%s 年龄:%d 语文成绩:%.2f 英语成绩:%.2f 数学成绩:%.2f 总成绩:%.2f\n",
stu1[i].name,
stu1[i].age,
stu1[i].sc1.Chinese,
stu1[i].sc1.English,
stu1[i].sc1.Math,
stu1[i].sc1.sum);
}
int i,sub;
float min;
int count=0;
for(i=0;i<5;i++){//循环判断总成绩最小值
count++;
if(count == 1){
min = stu1[i].sc1.sum;
}
if(min>=stu1[i].sc1.sum){
min = stu1[i].sc1.sum;
sub = i;
}
}
printf("最小成绩:\n");//输出最小成绩学生信息
printf("姓名:%s 年龄:%d 语文成绩:%.2f 英语成绩:%.2f 数学成绩:%.2f 总成绩:%.2f\n",
stu1[sub].name,
stu1[sub].age,
stu1[sub].sc1.Chinese,
stu1[sub].sc1.English,
stu1[sub].sc1.Math,
stu1[sub].sc1.sum);
return 0;
}
2.在堆区,申请5个结构体空间,存储学生信息(姓名,分数)
循环输入学生信息,按照输入姓名查找某个学生,修改其成绩为100分。
#include<myhead.h>
typedef struct{
char name[20];
float score;
}stu;
int main (int argc, const char *argv[])
{
stu *p = malloc(sizeof(stu)*5);
strcpy(p[1].name,"张三");
strcpy(p[2].name,"赵四");
strcpy(p[3].name,"王五");
strcpy(p[4].name,"李华");
strcpy(p[0].name,"张丽");
p[1].score = 19;
p[2].score = 29;
p[3].score = 39;
p[4].score = 49;
p[0].score = 90;
for(int i=0;i<5;i++){
printf("姓名:%s 分数:%.2f\n",p[i].name,p[i].score);
}
printf("请输入要查找的姓名:\n");
char na[20];
int sub;
scanf("%s",na);
for(int i=0;i<5;i++){
if(strcmp(na,p[i].name)==0){
p[i].score = 100;
sub = i;
}
}
for(int i=0;i<5;i++){
printf("姓名:%s 分数:%.2f\n",p[i].name,p[i].score);
}
free(p);
return 0;
}