int j,h; char cTemp[10];
printf(\
printf(\ for(h=0;h<20;h++) { studPtr->name[h]=0; }
printf(\
printf(\ printf(\
scanf(\ getchar();
printf(\ for(j=0;j<3;j++){
scanf(\ }
getchar(); }
void stud_input(struct stud_info *stud_arr,const int num) { int i;
struct stud_info *studPtr=stud_arr; printf(\ printf(\
for(i=0;i void stud_output(const struct stud_info *stud_arr,const int num) { int i; struct stud_info *studPtr; studPtr=stud_arr; printf(\ printf(\ for(i=0;i printf(\studPtr->num,studPtr->name,studPtr->sex,studPtr->age,\\ studPtr->score[0],studPtr->score[1],studPtr->score[2]); return; } } void count(const struct stud_info *stud_arr,const int num) { int i,snum,ave,max; char *pt; struct stud_info *studPtr=stud_arr; for(i=0;i snum=studPtr->score[0]+studPtr->score[1]+studPtr->score[2]; ave=snum/3; if(i==0){max=snum;pt=studPtr->name;} else{ if(max printf(\ } printf(\ for(i=0;i<20;i++) { if(pt[i]!=0) printf(\ } return; } int main(void) { struct stud_info studArr[STUD_NUM]; clrscr(); stud_input(studArr,STUD_NUM); stud_output(studArr,STUD_NUM); count(studArr,STUD_NUM); return 0; } 运行结果如下: 分析:程序分成六个模块,分别是结构体,struct stud_info,void stud_gets ,void stud_input,void stud_output,void count,main(void)这六个模块,程序首先声明了一个宏体(学生个数),然后进行了结构体的定义(学生信息结构),然后是构造获得学生信息的程序(输入三个学生信息),然后是输出程序(输出三个学生的信息),最后是主控制模块。此程序要求很高。首先是要熟悉结构的的基本结构其次要有清晰的思路,用模块的思想来完成题目。你还考了一维结构体数组名或指针引用,一维数组元素的地址引用,还有一维结构体数组的成员变量的地址引用。 实验心得: 1、对结构体数据类型,要注意以下问题: (1)成员变量名必须唯一 (2)除声明初始化外,不能对结构体变量作整体输入输出和常量整体赋值 (3)结构体数据类型可以嵌套定义 (4)成员变量有独立的存储空间 2、对共用体数据类型,要注意以下问题: (1)存储空间以存储空间最大的成员变量为准 (2)任何时刻只有一个成员变量有效 (3)共用体及其成员变量共享同一段存储空间,其地址相同但意义不同。 3、枚举类型要注意如下问题: (1)其本质是用符号名代表整数值。一个符号名对应一个整数或反之 (2)枚举符号常量名不能直接输入输出,只能用专门的程序段完成 (3)枚举常量对应的整数值确定后,其后面的符号常量对应的整数值将顺次加1 4、对数据类型取新名要注意以下问题: (1)熟悉结构体类型变量的基本声明方法、结构体类型变量的内存分配原则、初始化和引用结构体变量及其成员变量的基本方法;然后掌握结构体变量的输入、输出方法。 (2)共用体结构类型也要先定义在声明再引用 注: 实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格