《C语言程序设计课件第8章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第8章.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第8章 结构体与共用体返回主目录返回主目录第8章 结构体与共用体 本章主要介绍结构体和共用体的本章主要介绍结构体和共用体的基本知识,让学生学会利用结构体和基本知识,让学生学会利用结构体和共用体编写程序。共用体编写程序。1.1.结构体的概念结构体的概念2.2.结构体类型数组结构体类型数组3.3.指向结构体类型数据的指针指向结构体类型数据的指针4.4.结构体类型数据与函数结构体类型数据与函数5.5.链表链表6.6.共用体共用体第8章 结构体与共用体一、结构体一、结构体如果在程序设计时,需要将不同类型的数据组成一个有机如果在程序设计时,需要将不同类型的数据组成一个有机整体来引用,此时,用数组是无法完
2、成的,整体来引用,此时,用数组是无法完成的,C C语言允许用语言允许用户自己可以定义这种特殊的数据结构,称之为结构体。结户自己可以定义这种特殊的数据结构,称之为结构体。结构体中可以包含若干个类型不同的数据项。构体中可以包含若干个类型不同的数据项。第8章 结构体与共用体二、结构体类型的定义二、结构体类型的定义C C语言中没有现成的结构体类型,如果用户要使用结构体类语言中没有现成的结构体类型,如果用户要使用结构体类型,必须自己定义。结构体类型的一般定义形式如下:型,必须自己定义。结构体类型的一般定义形式如下:struct struct 结构体类型名结构体类型名 类型名类型名1 1 成员名成员名1
3、1;类型名类型名2 2 成员名成员名2 2;.类型名类型名n n 成员名成员名n n;注意:定义结构体类型时,注意:定义结构体类型时,“结构体名结构体名”是结构体类型标志,是结构体类型标志,与与struct共同组成结构体类型名。共同组成结构体类型名。第8章 结构体与共用体说明说明:struct studentstruct student是一个结构体类型名,在是一个结构体类型名,在使用过程中与系统提供的标准类型使用过程中与系统提供的标准类型(如如intint、floatfloat等等)具有同样的地位和作用。具有同样的地位和作用。一个结构体类型可以包含若干个成员,一个结构体类型可以包含若干个成员,
4、每个成员的类型可以不一样。每个成员的类型可以不一样。一个结构体类型数据在存储时所占的内一个结构体类型数据在存储时所占的内存单元字节数相当于每个成员所占内存单存单元字节数相当于每个成员所占内存单元字节数的总和。例如:前面定义的元字节数的总和。例如:前面定义的struct studentstruct student结构体类型数据存储时所占结构体类型数据存储时所占内存单元为内存单元为6969字节。字节。例如:例如:struct studentstruct studentint number;int number;char name10;char name10;char sex;char sex;in
5、t age;int age;float scroce;float scroce;char address50;char address50;第8章 结构体与共用体三、结构体类型变量的定义三、结构体类型变量的定义结构体类型变量通常采取以下三种形式定义:结构体类型变量通常采取以下三种形式定义:1.1.先定义结构体类型,再定义结构体类型变量先定义结构体类型,再定义结构体类型变量结构体类型名结构体类型名 结构体变量名;结构体变量名;例如:例如:struct studentstruct studentint number;int number;char name10;char name10;char s
6、ex;char sex;int age;int age;float scroce;float scroce;char address50;char address50;struct student stud1,stud2;struct student stud1,stud2;第8章 结构体与共用体例如:例如:struct studentstruct studentint number;int number;char name10;char name10;char sex;char sex;int age;int age;float scroce;float scroce;char addres
7、s50;char address50;stud1,stud2stud1,stud2;2.2.在定义结构体类型的同时定义变量在定义结构体类型的同时定义变量struct struct 结构体名结构体名 类型名类型名1 1 成员名成员名1 1;类型名类型名2 2 成员名成员名2 2;.类型名类型名n n 成员名成员名n n;变量名表列;变量名表列;第8章 结构体与共用体例如:例如:struct struct int number;int number;char name10;char name10;char sex;char sex;int age;int age;float scroce;floa
8、t scroce;char address50;char address50;stud1,stud2stud1,stud2;3.3.直接定义结构体类型变量直接定义结构体类型变量struct struct 类型名类型名1 1 成员名成员名1 1;类型名类型名2 2 成员名成员名2 2;.类型名类型名n n 成员名成员名n n;变量名表列;变量名表列;第8章 结构体与共用体注意:注意:结构体类型和结构体类型变量是两结构体类型和结构体类型变量是两 个不同的概念,使用时,先定义类个不同的概念,使用时,先定义类 型,后定义变量。型,后定义变量。在程序中只能对结构体类型变量进在程序中只能对结构体类型变量进
9、 行操作。行操作。结构体中的成员可以单独使用,相结构体中的成员可以单独使用,相 当于一个普通变量,成员名可以和程当于一个普通变量,成员名可以和程 序中的普通变量同名,互不干扰。序中的普通变量同名,互不干扰。结构体中的成员可以是一个结构体变结构体中的成员可以是一个结构体变 量。量。例如:例如:struct datestruct dateint month;int month;int day;int day;int year;int year;struct student1struct student1int number;int number;char name10;char name10;ch
10、ar sex;char sex;struct date struct date birthday;birthday;float scroce;float scroce;char address50;char address50;stu1,stu2;stu1,stu2;第8章 结构体与共用体四、结构体类型变量的引用和初始化四、结构体类型变量的引用和初始化结构体类型变量一旦被定义后,就可以在程序中使用,结构体类型变量一旦被定义后,就可以在程序中使用,与数组相似,与数组相似,在程序中不能直接引用结构体类型变量在程序中不能直接引用结构体类型变量,也不能对结构体类型变量进行整体输入输出,也不能对结构体类
11、型变量进行整体输入输出,只能引只能引用其中的各个成员用其中的各个成员,对其中的各个成员进行输入输出。对其中的各个成员进行输入输出。引用结构体变量成员时,象引用普通变量一样,可以引用结构体变量成员时,象引用普通变量一样,可以进行各种运算。进行各种运算。第8章 结构体与共用体引用结构体变量成员的一般形式如下:引用结构体变量成员的一般形式如下:结构体变量名结构体变量名.成员名成员名例如:前面定义了结构体类型变量例如:前面定义了结构体类型变量stud1stud1和和stud2stud2,可,可以对变量的各个成员进行各种操作以对变量的各个成员进行各种操作,例如:例如:stud1.number=10001
12、;stud1.number=10001;stud2.number=10002;stud2.number=10002;.printf(%d,&d,stud1.number,stud2.number);printf(%d,&d,stud1.number,stud2.number);第8章 结构体与共用体另外,在程序中,还另外,在程序中,还可以用指向结构体变量的指针变量可以用指向结构体变量的指针变量来引用结构体变量成员。来引用结构体变量成员。例如:例如:struct student stud1;struct student stud1;struct student*p1=stud1;struct s
13、tudent*p1=stud1;(*p1).number=10001;(*p1).number=10001;.注意:注意:“-”“-”是指向是指向结构体成员运结构体成员运算符,算符,“.”“.”是是结构体成员运结构体成员运算符,它们的算符,它们的结合方式从左结合方式从左到右,优先级到右,优先级别最高。别最高。上述程序段,还可以写成下面的形式:上述程序段,还可以写成下面的形式:struct student stud1;struct student stud1;struct student*p1=stud1;struct student*p1=stud1;p1-number=10001;p1-nu
14、mber=10001;.第8章 结构体与共用体#include stdio.h#include stdio.h#include string.h#include string.hstruct studentstruct studentint number;int number;char name10;char name10;int age;int age;float score;a;float score;a;main()main()a.number=1001;a.number=1001;strcpy(a.name,liming);strcpy(a.name,liming);a.age=18;
15、a.age=18;a.score=89.5;a.score=89.5;printf(%-8d%s%8d%6.1f,a.number,a.name,a.age,a.score);printf(%-8d%s%8d%6.1f,a.number,a.name,a.age,a.score);例例8-1 利用结构体变量输出学生信息。利用结构体变量输出学生信息。第8章 结构体与共用体#include stdio.h#include stdio.hstruct studentstruct studentint number;int number;char name10;char name10;int age;
16、int age;float score;float score;a=1001,liming,18,89.5;a=1001,liming,18,89.5;main()main()printf(%-8d%s%8d%6.1f,a.number,a.name,a.age,a.score);printf(%-8d%s%8d%6.1f,a.number,a.name,a.age,a.score);例例8-2 利用结构体变量输出学生信息。利用结构体变量输出学生信息。第8章 结构体与共用体一、结构体数组的定义和引用一、结构体数组的定义和引用结构体数组同普通数组一样,所有元素类型相同,是同一个结结构体数组同普通
17、数组一样,所有元素类型相同,是同一个结构体类型。构体类型。要定义一个结构体类型数组,必须先定义结构体类型,要定义一个结构体类型数组,必须先定义结构体类型,定义结构体类型数组的一般形式如下:定义结构体类型数组的一般形式如下:struct struct 结构体名结构体名 数组名数组名 常量表达式常量表达式;例如:例如:struct student a3;struct student a3;同普通数组相似,在程序中不能整体引用结构体数组,也不能同普通数组相似,在程序中不能整体引用结构体数组,也不能引用结构体数组元素,引用结构体数组元素,只能引用结构体数组元素的成员只能引用结构体数组元素的成员。例如:
18、例如:a1.number=10001;a2.number=10002;a1.number=10001;a2.number=10002;第8章 结构体与共用体二、结构体数组初始化和应用二、结构体数组初始化和应用例如:例如:struct sst struct sst int num;int num;char name10;char name10;int age ;int age ;struct sst a3=1001,zhangsan,18,struct sst a3=1001,zhangsan,18,1002,lisi,19,1002,lisi,19,1003,wangwu,20;1003,wa
19、ngwu,20;.结构体数组初始化与普通数组初始化相似,可以先定义结构体结构体数组初始化与普通数组初始化相似,可以先定义结构体类型,再定义结构体数组并初始化。类型,再定义结构体数组并初始化。第8章 结构体与共用体例例8-3 8-3 某班级学生进行学生干部选举,候选人有张三、李四、王五三位同某班级学生进行学生干部选举,候选人有张三、李四、王五三位同学,全班共有学生学,全班共有学生4040名,编写一个程序统计候选人的得票数。名,编写一个程序统计候选人的得票数。#include string.h#include string.h#include stdio.h#include stdio.hstru
20、ct numstruct numchar name10;char name10;int number;int number;main()main()struct num a3=zhangsan,0,lisi,0,wangwu,0;struct num a3=zhangsan,0,lisi,0,wangwu,0;int i,j;int i,j;char inputname20;char inputname20;printf(please input the list of candidate:n);printf(please input the list of candidate:n);for(
21、i=0;i40;i+)for(i=0;i40;i+)scanf(%s,inputname);scanf(%s,inputname);for(j=0;j3;j+)for(j=0;j3;j+)if(strcmp(inputname,aj.name)=0)aj.number+;if(strcmp(inputname,aj.name)=0)aj.number+;printf(n);printf(n);for(i=0;i3;i+)for(i=0;i3;i+)printf(%10s:%2dn,ai.name,ai.number);printf(%10s:%2dn,ai.name,ai.number);第8
22、章 结构体与共用体C C语言规定:在程序中不能直接对结构体类型数组元素进语言规定:在程序中不能直接对结构体类型数组元素进行输入输出,只能对结构体类型数组元素的成员进行输入输行输入输出,只能对结构体类型数组元素的成员进行输入输出。结构体类型数组元素的成员的输入与输出与普通数组元出。结构体类型数组元素的成员的输入与输出与普通数组元素的输入与输出类似,通常利用循环语句来完成。素的输入与输出类似,通常利用循环语句来完成。三、结构体类型数组的输入与输出三、结构体类型数组的输入与输出第8章 结构体与共用体main()main()int n,i,sumSIZE;int n,i,sumSIZE;printf(
23、How many students?n);printf(How many students?n);scanf(%d,&n);scanf(%d,&n);for(i=0;in;i+)for(i=0;in;i+)printf(Name?n);scanf(%s,studi.name);printf(Name?n);scanf(%s,studi.name);printf(No?n);scanf(%d,&studi.num);printf(No?n);scanf(%d,&studi.num);printf(Score1,Score2,Score3?n);printf(Score1,Score2,Score
24、3?n);scanf(%f,%f,%f,&studi.score0,&studi.score1,&studi.score2 scanf(%f,%f,%f,&studi.score0,&studi.score1,&studi.score2););sumi=studi.score0+studi.score1+studi.score2;sumi=studi.score0+studi.score1+studi.score2;studi.ave=sumi/3.0;studi.ave=sumi/3.0;printf(n NAME No.SCORE1 SCORE2 SCORE3 AVEn);printf(n
25、 NAME No.SCORE1 SCORE2 SCORE3 AVEn);printf(-n);printf(-n);for(i=0;in;i+)for(i=0;i成员名成员名 指向结构体类型变量的指针变量引用指向结构体类型变量的指针变量引用注意:注意:“-”是指向结构体成员运算符,是指向结构体成员运算符,“.”是取结构体成员运是取结构体成员运算符,它们的结合方式从左到右,优先级别最高。算符,它们的结合方式从左到右,优先级别最高。在程序中只能将结构体类型变量的地址赋给一个指向结在程序中只能将结构体类型变量的地址赋给一个指向结构体类型的指针变量,一个指向结构体类型的指针变量只能指构体类型的指针变量
26、,一个指向结构体类型的指针变量只能指向结构体类型变量,不能指向变量的成员。向结构体类型变量,不能指向变量的成员。第8章 结构体与共用体例如:例如:struct studentint number;char name10;int age;float score;struct student stud1;.struct student*p1=stud1,*p2=stud1;(*p1).number=10001;(*p2).number=10002;.printf(%d,&d,(*p1).number,(*p2).number);printf(%d,&d,p1-number,p2-number);第
27、8章 结构体与共用体例例 8.8 8.8#include stdio.h#include stdio.hstruct studentstruct student int num;int num;char name20;char name20;char sex;char sex;float score;float score;main()main()struct student stu1=1001,Li Ming,M,95.0;struct student stu1=1001,Li Ming,M,95.0;struct student*p;struct student*p;p=&stu1;p=&
28、stu1;printf(%d,%s,%c,%.1fn,stu1.num,stu1.name,stu1.sex,stu1.score);printf(%d,%s,%c,%.1fn,stu1.num,stu1.name,stu1.sex,stu1.score);printf(%d,%s,%c,%.1fn,(*p).num,(*p).name,(*p).sex,(*p).score);printf(%d,%s,%c,%.1fn,(*p).num,(*p).name,(*p).sex,(*p).score);printf(%d,%s,%c,%.1fn,p-num,p-name,p-sex,p-scor
29、e);printf(%d,%s,%c,%.1fn,p-num,p-name,p-sex,p-score);第8章 结构体与共用体在程序中,如果将一个结构体类型数组的地址赋给一个结构体类型的变量,那么该变量就是一个指向结构体类型数组的指针变量。可以利用该指针变量来引用数组元素的各个成员。3、指向结构体类型数组的指针、指向结构体类型数组的指针对于指向结构体类型数组的指针变量。其引用的方式和指向普通数组的指针变量的引用相类似。第8章 结构体与共用体例例 8.9 8.9#include stdio.h#include stdio.hstruct studentstruct student int nu
30、m;int num;char*name;char*name;char sex;char sex;float score;float score;boy5=101,Zhou ping,M,45,102,Zhang ping,M,62.5,boy5=101,Zhou ping,M,45,102,Zhang ping,M,62.5,103,Liu fang,F,92.5,104,Cheng ling,F,87,103,Liu fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58;105,Wang ming,M,58;main()main()struct
31、 student*ps;struct student*ps;printf(No.tNametttSextScoretn);printf(No.tNametttSextScoretn);for(ps=boy;psboy+5;ps+)for(ps=boy;psnum,ps-name,ps-sex,ps-score);printf(%dt%stt%ct%ftn,ps-num,ps-name,ps-sex,ps-score);第8章 结构体与共用体注意:注意:psps是指向结构体类型数据的指针变量,只能将数组的地是指向结构体类型数据的指针变量,只能将数组的地址或某个数组元素的地址赋给址或某个数组元素的
32、地址赋给psps,不能将数组元素的成员,不能将数组元素的成员或成员的地址赋给或成员的地址赋给psps,否则,程序将会出错。,否则,程序将会出错。例如:例如:ps=boy;/*ps=boy;/*正确正确*/*/ps=&boy0;/*ps=&boy0;/*正确正确*/*/ps=boy0.num;/*ps=boy0.num;/*错误错误*/*/ps=&boy0.num;/*ps=&boy0.num;/*错误错误*/*/第8章 结构体与共用体1、结构体类型数据与函数、结构体类型数据与函数 结构体类型变量的成员作函数参数结构体类型变量的成员作函数参数 在函数调用时,可以将结构体类型变量各成员的值作函数的
33、实在函数调用时,可以将结构体类型变量各成员的值作函数的实参进行数据传递。其用法和用普通变量作函数实参是一样的,参进行数据传递。其用法和用普通变量作函数实参是一样的,属于属于“值传递值传递”方式。方式。注意:注意:在调用函数时,应注意实参与形参的类型保持一致。在调用函数时,应注意实参与形参的类型保持一致。第8章 结构体与共用体main()main()struct student a;struct student a;.f(a.score);f(a.score);.#include stdio.h#include stdio.hstruct studentstruct student int nu
34、m;int num;char name20;char name20;char sex;char sex;float score;float score;void f(float x)void f(float x).例如:例如:第8章 结构体与共用体C语言(语言(ANSI C)允许使用结构体变量作实参进行数据传)允许使用结构体变量作实参进行数据传递,将主调函数中结构体变量所占用内存单元的内容全部顺递,将主调函数中结构体变量所占用内存单元的内容全部顺序传递给形参。这是一种序传递给形参。这是一种“值传递值传递”方式,方式,要求形参也必须要求形参也必须是同类型的结构体变量。是同类型的结构体变量。结构体
35、类型变量作函数参数结构体类型变量作函数参数第8章 结构体与共用体例例 8.10 8.10 有一个结构体变量有一个结构体变量stustu,内含学生学号、姓名和,内含学生学号、姓名和3 3门课的成门课的成绩。要求分别编写两个不同的函数输出学生的学号、姓名和绩。要求分别编写两个不同的函数输出学生的学号、姓名和3 3门课门课的成绩及总成绩。的成绩及总成绩。#include stdio.h#include stdio.h#include string.h#include string.h#define FORMAT%5d%9s%8.1f%8.1f%8.1f#define FORMAT%5d%9s%8.1
36、f%8.1f%8.1fstruct studentstruct student int num;int num;char name20;char name20;float score3;float score3;第8章 结构体与共用体void pri1(struct student stt)void pri1(struct student stt)printf(num name score1 score2 score3 sumscoren);printf(num name score1 score2 score3 sumscoren);printf(FORMAT,stt.num,stt.nam
37、e,stt.score0,stt.score1,stt.score2);printf(FORMAT,stt.num,stt.name,stt.score0,stt.score1,stt.score2);void pri2(float xx)void pri2(float xx)float sum;float sum;sum=xx0+xx1+xx2;sum=xx0+xx1+xx2;printf(%9.1f,sum);printf(%9.1f,sum);main()main()struct student stu=1001,LiMing,67.5,89.0,78.6;struct student
38、stu=1001,LiMing,67.5,89.0,78.6;pri1(stu);pri1(stu);pri2(stu.score);pri2(stu.score);第8章 结构体与共用体 指向结构体类型变量的指针作为函数参数指向结构体类型变量的指针作为函数参数在程序中,如果用指向结构体变量的指针作函数的实参,可以在程序中,如果用指向结构体变量的指针作函数的实参,可以将结构体变量的地址传给形参,使实参和形参共同指向同一段将结构体变量的地址传给形参,使实参和形参共同指向同一段存储单元,得到函数的返回值。存储单元,得到函数的返回值。第8章 结构体与共用体例例8.11 8.11 有一个结构体变量有一
39、个结构体变量stustu,内含学生学号、姓名和,内含学生学号、姓名和3 3门课门课的成绩,利用函数编程按升序输出学生的成绩。的成绩,利用函数编程按升序输出学生的成绩。#include stdio.h#include stdio.h#include string.h#include string.h#define FORMAT%5d%9s%8.1f%8.1f%8.1f#define FORMAT%5d%9s%8.1f%8.1f%8.1f#define N 3#define N 3struct studentstruct student int num;int num;char name20;ch
40、ar name20;float scoreN;float scoreN;第8章 结构体与共用体void pri(struct student*stt)void pri(struct student*stt)int i,j;int i,j;float t;float t;for(i=0;iN;i+)for(i=0;iN;i+)for(j=0;jN-1;j+)for(j=0;jscorejstt-scorej+1)if(stt-scorejstt-scorej+1)t=stt-scorej;t=stt-scorej;stt-scorej=stt-scorej+1;stt-scorej=stt-sc
41、orej+1;stt-scorej+1=t;stt-scorej+1=t;main()main()struct student stu=1001,LiMing,67.5,89.0,78.6;struct student stu=1001,LiMing,67.5,89.0,78.6;struct student*p=&stu;struct student*p=&stu;pri(p);pri(p);printf(FORMAT,stu.num,stu.name,stu.score0,stu.score1,stu.score2);printf(FORMAT,stu.num,stu.name,stu.s
42、core0,stu.score1,stu.score2);第8章 结构体与共用体 结构体类型数组作为函数参数结构体类型数组作为函数参数在程序中也可以使用结构体类型数组作函数的参数,将该结在程序中也可以使用结构体类型数组作函数的参数,将该结构体类型数组的地址传给形参。构体类型数组的地址传给形参。例例8.12 8.12 有一个结构体类型数组有一个结构体类型数组studentstudent,内含几个学生学号、,内含几个学生学号、姓名、性别和成绩。要求编程计算这组学生的平均成绩,并统姓名、性别和成绩。要求编程计算这组学生的平均成绩,并统计不及格的人数。计不及格的人数。#include stdio.h#
43、include stdio.h#define N 5#define N 5struct stustruct stu int num;int num;char*name;char*name;char sex;char sex;float score;float score;第8章 结构体与共用体void ave(struct stu*ps)void ave(struct stu*ps)int c=0,i;int c=0,i;float ave,s=0;float ave,s=0;for(i=0;iN;i+,ps+)for(i=0;iscore;s+=ps-score;if(ps-scoresco
44、re60)c+=1;ave=s/N;ave=s/N;printf(average=%.1fncount=%dn,ave,c);printf(average=%.1fncount=%dn,ave,c);main()main()struct stu studentN=101,Li ping,M,45.0,struct stu studentN=101,Li ping,M,45.0,102,Zhang ping,M,62.5,102,Zhang ping,M,62.5,103,He fang,F,92.5,103,He fang,F,92.5,104,Cheng ling,F,87.0,104,Ch
45、eng ling,F,87.0,105,Wang ming,M,58.0;105,Wang ming,M,58.0;ave(student);ave(student);第8章 结构体与共用体 指向结构体类型数组的指针作为函数参数指向结构体类型数组的指针作为函数参数在程序中,可以用指向结构体类型数组的指针作函数参数,将在程序中,可以用指向结构体类型数组的指针作函数参数,将该结构体类型数组的地址传给形参。该结构体类型数组的地址传给形参。例例8.12中程序的中程序的main函数可以改写为下面程序代码。函数可以改写为下面程序代码。main()main()struct stu studentN=101,
46、Li ping,M,45.0,struct stu studentN=101,Li ping,M,45.0,102,Zhang ping,M,62.5,102,Zhang ping,M,62.5,103,He fang,F,92.5,103,He fang,F,92.5,104,Cheng ling,F,87.0,104,Cheng ling,F,87.0,105,Wang ming,M,58.0;105,Wang ming,M,58.0;struct stu*p=student;struct stu*p=student;ave(p);ave(p);第8章 结构体与共用体函数的返回值可以是某种
47、类型的数据,也可以是指向某种类函数的返回值可以是某种类型的数据,也可以是指向某种类型数据的指针。型数据的指针。C C语言允许函数调用时,返回结构体类型指针值。语言允许函数调用时,返回结构体类型指针值。返回值为结构体类型的函数返回值为结构体类型的函数其函数原型如下:其函数原型如下:struct 结构体类型名结构体类型名*函数名函数名(参数表列);(参数表列);第8章 结构体与共用体例例 8.14 8.14 在一组的学生信息中查找某个学生的信息。如果找到,在一组的学生信息中查找某个学生的信息。如果找到,输出该学生信息,否则输出没有找到。输出该学生信息,否则输出没有找到。#include stdio
48、.h#include stdio.h#define SIZE 100#define SIZE 100#define N 6#define N 6#define FORMAT%-11s%3d%8d%8d%8dn#define FORMAT%-11s%3d%8d%8d%8dnstruct studentstruct student char name30;char name30;int num;int num;int score3;int score3;/*;/*定义结构体类型定义结构体类型*/*/第8章 结构体与共用体struct student*search(struct student*p,
49、int*kk struct student*search(struct student*p,int*kk char nam30;char nam30;struct student*pp;struct student*pp;printf(input the name of the student you want to look forn);printf(input the name of the student you want to look forn);scanf(%s,nam);scanf(%s,nam);for(pp=p;ppN+p;pp+)for(pp=p;ppname,nam)=0
50、)*kk=1;break;if(strcmp(pp-name,nam)=0)*kk=1;break;return pp;return pp;void print(struct student*stu)void print(struct student*stu)printf(n NAME No.SCORE1 SCORE2 SCORE3n);printf(n NAME No.SCORE1 SCORE2 SCORE3n);printf(-n);printf(-n);printf(FORMAT,stu-name,stu-num,stu-score0,printf(FORMAT,stu-name,stu