结构体指针和结构体数组的示例 た 入场券 2023-07-14 10:36 2阅读 0赞 # 示例: # ### 一、问题描述 ### 编写一个程序,录入每位同学的信息,包括学号,姓名,c语言成绩,数学成绩以及英语成绩。要求: 1. 从键盘上输入N名同学的成绩; 2. 求出每名同学的总成绩和平均分; 3. 输出每名同学的信息,包括学号,姓名,总分,平均分; 4. 按照c语言成绩排序输出 #include <stdio.h> #include <stdlib.h> #define N 2//录入人数 struct student { char num[13];//学号 char name[10];//姓名 int cpp;//c语言成绩 int math;//数学成绩 int english;//英语成绩 int grade;//总成绩 double average;//各科平均成绩 }; /* 功能:统计每名同学的平均成绩和总成绩 */ void aver(struct student *p) { int i; for(i=0;i<N;i++) { (p+i)->grade = (p+i)->cpp + (p+i)->english + (p+i)->math;//总分 (p+i)->average = (p+i)->grade/3;//平均分 } } /* 功能:用冒泡排序对大家c语言成绩进行排序 */ void bubbleSort(struct student *p) { int i,j; struct student temp; for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) if((p+j)->cpp < (p+j+1)->cpp) { temp = *(p+j+1); *(p+j+1) = *(p+j); *(p+j)=temp; } } int main() { struct student stu[N]; int i = 0; do { printf("录入第%d位同学信息中......\n",i+1); printf("学号:"); scanf("%s",stu[i].num); printf("姓名:"); scanf("%s",stu[i].name); printf("c语言:"); scanf("%d",&stu[i].cpp); printf("数学:"); scanf("%d",&stu[i].math); printf("英语:"); scanf("%d",&stu[i].english); printf("\n"); i++; }while(i<N); aver(stu);//平均成绩 bubbleSort(stu);//冒泡排序 for(i=0;i<N;i++) { printf("*----------------------------*\n"); printf("*c语言成绩第%d名如下:\n",i+1); printf("*学号:%s 姓名:%s\n",stu[i].num,stu[i].name); printf("*c成绩%d 总分%d 平均分%.2lf\n",stu[i].cpp,stu[i].grade,stu[i].average); printf("*----------------------------*\n\n"); } return 0; } ### 二、输出结果: ### ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9jaGVueGlhb3Jlbg_size_16_color_FFFFFF_t_70][] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9jaGVueGlhb3Jlbg_size_16_color_FFFFFF_t_70]: /images/20230529/f15ca353aa574674b2f40143deb056b5.png
还没有评论,来说两句吧...