C语言期末考试复习资料-完整版.ppt

上传人:牧羊曲112 文档编号:5426347 上传时间:2023-07-05 格式:PPT 页数:121 大小:391KB
返回 下载 相关 举报
C语言期末考试复习资料-完整版.ppt_第1页
第1页 / 共121页
C语言期末考试复习资料-完整版.ppt_第2页
第2页 / 共121页
C语言期末考试复习资料-完整版.ppt_第3页
第3页 / 共121页
C语言期末考试复习资料-完整版.ppt_第4页
第4页 / 共121页
C语言期末考试复习资料-完整版.ppt_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《C语言期末考试复习资料-完整版.ppt》由会员分享,可在线阅读,更多相关《C语言期末考试复习资料-完整版.ppt(121页珍藏版)》请在三一办公上搜索。

1、,C语言期末复习大纲,考试的主要题型和分数分布:1 单项选择题(10小题,每题2分,共20分)2 填空题(每空1分,共10分)3 阅读程序(每题2分,共10分)4 程序填空(每空2分,共40分)5 编写程序(2小题,每题10分,共20分),第一章,C语言概述,第1章 C语言概述本章包含4项目重点内容:1 简单的C语言程序#include void main()printf(This is a C program.n);,2 VC+6.0 环境:编辑C语言源程序 后缀是.c 或.cpp经过编译产生目标文件,后缀是.obj再经过连接成为可执行文件,后缀 是.exe3 C语言是结构化程序,有三种结构

2、(1)顺序结构;(2)选择结构;(3)循环结构;,4 C语言是由函数组成的,其中必须有一个并且只有一个主函数 main,程序的执行从main 函数开始,到main 函数结束.,第二章,数据类型、运算符与表达式,C的数据类型,C语言提供了以下一些数据类型。,数据类型,构造类型,指针类型,空类型(无值类型)void,常量与变量,常量和符号常量在程序运行过程中,其值不能被改变的量称为常量常量区分为不同的类型:,整型 100,125,-100,0实型 3.14,0.125,-3.1e3字符型 a,057,x3c字符串“a”,“ab”,”1232”定义字符常量:#define PI 3.1415926#

3、define N 20,变量命名的规定:语言规定标识符:1 只能由字母、数字和下划线三种字符组成;(注意不要混淆下划线_和杠号(减号)-)2 第一个字符必须为字母或下划线;3 不能使用关键字.例:sum,_123,m123,Student_name1 12a,Jo-hn,¥123,a#b,int,整型常量的表示方法 整型常量即整常数。在语言中,整常数可用以下三种形式表示:(1)十进制整数。如:123,-456(2)八进制整数。以0开头的数是八进制数。如:0123表示八进制数123,等于十进制数83 0129 非法(每位0-7合法)(3)十六进制整数。以0 x开头的数是16进制数。如:0 x12

4、3,代表16进制数123,等于十进制数291 而 0 x12g 非法(每位0-f合法),字符型数据,字符常量(1)用单引号包含的单个字符(2)用单引号包含的由开始的转义字符,例,a,A,1,037,x2dabc,“a”,082,x5g,字符串常量字符串常量是一对双引号括起来的字符序列.合法的字符串常量:“How do you do.”,“CHINA”,“a”,“$123.45”可以输出一个字符串,如printf(“How do you do.”);,运算符简介 的运算符有以下几类:(1)算术运算符(+-*/%)(2)关系运算符(!)(3)逻辑运算符(!|)(4)位运算符(|)(5)赋值运算符(

5、及其扩展赋值运算符)(6)条件运算符(?:),算术运算符和算术表达式 基本的算术运算符:(加法运算符或正值运算符如:、)(减法运算符或负值运算符,如:、)*(乘法运算符。如:*)(除法运算符,实数相除结果是双精度实数,整数相除结果是整数;两数同号结果是正数,两数异号结果是负数,且舍入得方向不固定,Vc+是“向0取整)(求余运算符,两侧必须为整型数据,结果与被除数一致。),自增、自减运算符 作用是使变量的值增或减如:,(在使用之前,使+1 或-1),(在使用之后,使+1 或-1)就是使用 i 的原值执行本条语句,而在执行下条语句前将 i+1 或-1 int m=5,n=10;printf(%d,

6、%dn,m+,-n);显示5,9 若再有:printf(“%dn”,m);显示6,赋值运算符 赋值符号“”就是赋值运算符,它的作用是将一个数据赋给一个变量,如a=5;(单等号)而 a=5 是判断 a是否等于 5;(双等号)如 int a=3;if(a=2)为假,而 if(a=5)为真。,第三章,最简单的c程序设计-顺序程序设计,C语句概述,C语句概述,控制语句 完成一定的控制功能1 if()else 条件语句 6 break 间断语句 2 for()循环语句 7 switch()开关语句3 while()循环语句 8 goto 转向语句 4 do while();循环语句 9 return 返

7、回语句5 continue 继续语句,格式输入与输出,(一).格式输出函数函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。一般格式:printf(格式控制,输出表列),%d:以带符号的十进制形式输出整数%o:以八进制无符号形式输出整数%x:以十六进制无符号形式输出整数,格式输入与输出,%u:以无符号十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数%g:选用%f或%e格式中输出宽度较短的一种格式,不输 出无意义的0,格式输入与输出,用printf 和scanf函数输出和输入数据。

8、#includeint main()int a,b,c;scanf(“%d,%d,%d”,表示a在内存中的地址其中,&是地址运算符,在格式输入与输出中格式控制是用双引号包括的,其中一般带有%d,%c,%f,%s等各种对数据类型的要求.,第四章,选择结构程序设计,关系运算符和关系表达式,1.关系运算符及其优先次序(大于)=(大于或等于)=(等于)!=(不等于),说明:关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符,关系运算符和关系表达式,2.关系表达式用关系运算符将两个表达式(可以是算术表达式或 关系表达式,逻辑表达式,赋值表达式,字符表达式)接起来的式子,称关系表达式例:ab

9、,a+bb+c,(a=3)(b=5),ab)(bb”的值为“真”,表达式的值为1。,C语言中没有专用的逻辑值,1代表真,0代表假,逻辑运算符和逻辑表达式,1.逻辑运算符及其优先次序(1)&(逻辑与)(2)|(逻辑或)(3)!(逻辑非),优先次序:逻辑非!算术运算符 关系运算符 逻辑与或 赋值运算符 或运算中有1,值为1,与运算中有0,值为0,if语句,2.If语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。形式:if()if()语句1else 语句2elseif()语句3else 语句4,内嵌if,if语句,如 int a=3,b=4,c=5;if(ab)a=b;b=c;c=

10、a;第1个,因为ab,所以a=b;b=c;c=a;都执行,第2个,因为a不大于b,所以不执行a=b;只执行 b=c;c=a;,那么a,b,c 是 4,5,4,那么a,b,c 是 3,5,3,条件运算符格式:表达式?表达式表达式 功能:判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3max=(ab)?a:b;min=(ab)?a:b;,if语句,例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#include void main()char ch;scanf(“%c”,/注意:不能用 A=ch=Z,它永远为真,如果字符变量

11、ch的值为大写字母,则条件表达式的值为(),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为,即不进行转换。,几个典型的判断:判断大写字母:if(A=c&c=Z)判断小写字母:if(a=c&c=z)判断数字:if(0=c&c=9)判断闰年:if(year%4=0&year%100!=0)|year%400=0),注意:例如在判断数字中:if(0=c&c=9)不可以没有&,也不能没有 即不能用 if(0=c=9)也不能用 if(0=c&c=9)但可以用 if(48=c&c=57)(想想为什么?),用switch语句实现(若a是整数)按照考试成绩输出等级百分制分数段switch(a/

12、10)case 10:case 9:grade=A;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;default:grade=E;,第五章,循环结构程序设计,用while语句实现循环,while语句用来实现“当型”循环结构。一般形式:while(表达式)语句 当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。,求正整数m和n的最大公约数和最小公倍数:#include void main()int p,r,n,m;printf(请输入两个正整数n,m:);scanf(

13、%d,%d,其中用下面的辗转相除法求出最大公约数n while(m!=0)r=n%m;n=m;m=r;把它独立出来就是一个函数int hcf(int m,int n)int r;while(m!=0)r=n%m;n=m;m=r;return(n);用 p/n 得到最小公倍数,用do-while语句实现循环,do-while语句的特点:先执行循环体,然后判断循环条件是否成立。一般形式:do 循环体语句 while(表达式);,执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。,例如:为了

14、保证输入成绩的正确,可以使用语句:printf(请输入学生成绩a(0-100):);scanf(%d,我们更简洁地用do-while语句do printf(“请输入成绩 a(0-100):”);scanf(“%d”,号,用do-while语句计算 10!i=1;s=1;do s=s*i;i+;while(i=10);不是:i=1;s=0;do s=s*i;i+;while(i=10);也不是:doi=1;s=1;s=s*i;i+;while(i=10);doi=1;s=0;s=s*i;i+;while(i=10);,while语句和用do-while语句的比较:while 是先判断条件,再决定

15、是否执行,所以可能一次也不执行;do-while 是先执行再判断条件,决定是否还执行,所以至少执行一次.,用for 语句实现循环,C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。一般形式:for(表达式1;表达式2;表达式3)语句,注意:for中用两个分号隔开,不能省略;for只对其后第一个语句有效,如果要求对多条语句有效,必须用花括号括之成为复合语;for()后通常没有分号,有分号将不执行任何语句,只执行自己的循环;,下面是用for语句显示数组a中的最小值的程序#include void

16、 main()int a5=4,2,8,9,5,i,min;min=a0;for(i=1;iai)min=ai;printf(%dn,min);,break语句和continue语句,break语句 break语句可以用来从循环体内跳出循环体,即提前结束循环.一般形式:break;注意:break语句只能用于循环语句或switch语句中。,continue语句 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次循环的判定.一般形式:continue;,例 把100200之间的不能被3整除的数输出。#include void main()int n;for(n=100;n=20

17、0;n+)if(n%3=0)continue;printf(%d,n);注意是把能被3整除的跳过.不能用 n%3!=0,判断m是否素数。#include#include void main()int m,i,k;scanf(%d,,也可以是:#include#include void main()int m,I,k,flag=1;scanf(%d,,第六章,数组,一维数组,所谓数组就是一组具有相同数据类型的数据的有序集合。,一维数组的定义格式为:例如:int a10;或者是:#define N 10;int aN;(方括号中必须是常数)注意:1 此数组有10个元素.分别是a0-a9 注意:从0

18、开始编号,没有数组元素a102 元素个数必须是常量.所以不可以:int n=10,an;/这里n是变量不可以用圆括号:int a(n);也不可是:int n,an;scanf(“%d”,字符数组的定义,例如:char c10=I,a,m,h,a,p,p,y;c0=I;c1=;c2=a;c3=m;c4=;c5=h;c6=a;c7=p;c8=p;c9=y;,对字符串初始化,最好的方法是:例如:Char c=“I am a boy”;,字符串的初始化,字符串和字符串结束标志,为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”0。,字符数组的输入输出,字符数组的输入输出可以有两种方法:逐个字

19、符输入输出。用格式符“%c”输入或输出一个字符。将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。,如果利用一个scanf函数输入给多个字符串,则在输入时以空格分隔。例如:char strl5,str25,str35;scanf(%s%s%s,str1,str2,str3);输入数据:How are you?数组中未被赋值的元素的值自动置0。,1.puts函数其一般形式为:puts(str);,字符串处理函数,2.gets函数其一般形式为:gets(str);,说明:用scanf(“%s”,str);只能输入单词(不包含空格),而gets(str);可以输入句子(即可以包

20、含空格);注意不是 gets(“%s”,str);也不是 gets(,3.strcat函数其一般形式为:strcat(字符数组1,字符数组2)Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,4.strcpy函数 其一般形式为:strcpy(字符数组1,字符串2)strcpy是“字符串复制函数”。作用是将字符串2复制到字符数组1中去。例如:char str110,str2=China;strcpy(str1,str2);,关于strcpy函数的几点说明,(1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。,(2)“字符数

21、组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。如strcpy(str1,China);,(3)复制时连同字符串后面的0一起复制到字符数组1中。,(4)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如:str1=China;不合法 str1=str2;不合法用strcpy函数只能将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋给一个字符型变量,5.strcmp函数 其一般形式为:strcmp(字符串1,字符串2)例如:strcmp(str1,str2);strcmp(China,Korea);strcmp(str1,B

22、eijing);,比较的结果由函数值返回(1)如果字符串1=字符串2,函数值为0。(2)如果字符串1字符串2,函数值为1。(3)如果字符串1str2)只能用if(strcmp(str1,str2)0),6.strlen函数 其一般形式为:strlen(字符数组)strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括0在内)。例如:char str10=China;printf(%d,strlen(str);输出结果不是10,也不是6,而是5,即有效字符数.,strlwr(字符串)strlwr函数7.strlwr函数 其一般形式为:的作用是将字符串中大写字母换成小写字母。,8.

23、strupr函数 其一般形式为:strupr(字符串)strupr函数的作用是将字符串中小写字母换成大写字母。,使用字符串函数时,必须包括字符串函数库:#include,我们可以不使用字符串函数编写程序:例如:不使用strcat 连接两个字符串;不使用strcpy 拷贝字符串;不使用strcmp 比较字符串;,不使用strcpy 拷贝字符串:1 用数组:For(i=0;i=strlen(s2);i+)S1i=s2i;2 用指针:p1=s1;p2=s2;while(*p1+=*p2+);寻找字符串尾:while(s1i)i+;i 就是字符串尾的下标,再拷贝就是连接。,第七章,函数,简单的C语言函

24、数,#include/*文件包含*/void main()/*主函数*/*函数体开始*/printf(“This is a C program.n”);/*函数体语句*/*函数体结束*/,说明:main是主函数名,void 是函数类型每个C程序是由若干函数组成的,其中必有一个并且只能有一个主函数 main()每个C程序从main函数开始执行,到main函数结束,即执行的是主函数的函数体,与主函数main在程序中的位置无关;,是函数开始和结束的标志,不可省略;每个C语句以分号结束;在主函数中直接或间接调用其他函数;使用标准输入出库函数时应写:#include 使用数学库函数和字符串函数时应写:#

25、include#include,一个函数由两部分组成:函数的首部:例1.3中的max函数首部 int max(int x,int y)函数体:花括号内的部分。若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。,函数定义的一般形式,类型标识符函数名(形式参数表列)声明部分 语句部分 其中类型标识符是函数返回值的数据类型,如:int,charfloat,double 等,也可以是无返回值,写为void.也可以没有形式参数表列,称为无参函数.,例如:int max(int,int)int;/*函数体中声明部分*?;/*函数体中语句部分*return();/*返回值*/,函数参数和函数的值形

26、式参数和实际参数,形式参数:函数名后面括弧中的变量名称为“形式参数”(简称“形参”);实际参数:主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”);函数返回值:return后面的括弧中的值作为函数带回的值(称函数返回值)。,说明:1.函数的返回值是通过函数中的return语句获得的。一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。,函数的调用 对被调用函数的声明和函数原型,在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢?,1.首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函

27、数)。,3.如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面,应该在主调函数中对被调用的函数作声明,即写上函数的原型。用函数首部加上;号表示函数声明.,2.如果使用库函数,还应该在本文件开头用#include 命令将调用有关库函数时所需用到的信息“包含”到本文件中来。如#include#include#include,函数调用的实例(求两整数的最大公约数):#include void main()int hcf(int u,int v);/函数声明 int u,v,h;scanf(%d,%d,局部变量和全局变量 局部变量,在一个函数内部定义的变量是内部变量,它只在本

28、函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。这称为“局部变量”。,全局变量,在函内定义的变量是局部变量,而在函数外定义的变量称为外部变量,也称全局变量.静态局部变量是函数中保持最近值不释放的变量在函数中用下面方式定义:static int c=7;,考察静态局部变量的值#include void main()int(int a);,;(;)(,();int(int)int;3;2;();3次调用函数f 后,c 的值是 9,第八章,指针,地址和指针的概念,内存区的每一个字节有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就

29、会给这个变量分配内存单元。,一个变量的地址称为该变量的“指针”。例如,地址2000是变量的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。,指针和指针变量的定义:,指针变量的引用,注意:指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量。,例 通过指针变量访问整型变量,#include voidmain()int;int*p;p;/*把变量的地址赋给 p*/printf(“%d,%dn”,a,*p);,对“”和“*”运算符说明:如果已执行了语句 p 那么:那么 a 和*p 是相同的值所以,如果 a=3;Printf(“%

30、d,%d”,a,*p);显示是 3,3 所以,如果*p=6;Printf(“%d,%d”,a,*p);显示是 6,6,指针变量作为函数参数,例10.3 对输入的两个整数按大小顺序输出,#include void main()void swap(int*,int*);int,;int*p,*p;scanf(,);p;p2;if()swap(p,p2);printf(,);,void swap(int*,int*)int temp;temp*1;*;*temp;,下面的函数:void swap(int a,int b)int temp;tempa;a=b;b=temp;/*只在函数中交换了局部变量

31、*/同样不可用函数:void swap(int*p,int b)或 void swap(int a,int*p)只能用函数 void swap(int*p1,int*p2)处理主调用函数中的变量,定义一个指向数组元素的指针变量的方法例如:int a10,*p;p=a;(a是数组的首地址,注意a前没有地址符)或 p=而p是指针变量,是可以改变的.所以 a+是错误的,而p+是正确的.,指向数组元素的指针,10.通过指针引用数组元素,如果 int a6,*p=a;引用一个数组元素,可以用:()下标法,如ai形式;()地址或指针法,如*(a+i)或*(p+i)注意:a0-a5合法,a6非法;*(a)-

32、*(a+5)合法,*(a+6)非法;*(p)-*(p+5)合法,*(p+6)非法;,字符串与指针,字符串的表示形式,例 定义一个字符数组,对它初始化,然后输出该字符串,#include void main()char*sabcdefg;printf(%n,s);输出 abcdefg,(1)用字符数组存放一个字符串,然后输出该字符串。,输出 cdefg 的语句是:printf(%n,s+2);s+2 是指针输出 efg 的语句是:printf(%n,s+4);s+4是指针输出字符 f 的语句是:printf(%cn,*(s+5));*(s+5)是字符注意:输出字符串用%s 和指针;输出字符用%c

33、 和*(指针),指针运算与数据:#include void main()int a5=2,4,6,8,10,*p;p=a;printf(%d,*(p+2);printf(%d,*+p);printf(%d,*p+);printf(%dn,*+p);显示 6,4,4,8注意 1 p+2 没有改变p 的值;注意 2+p,和 p+的区别.,调用函数实现数组的相反顺序存放:#include void main()void inv(int x,int n);/函数声明 int i,a10=3,7,9,11,0,6,7,5,4,2;printf(The original array:n);for(i=0;

34、i10;i+)printf(%d,ai);printf(n);inv(a,10);/调用函数 printf(The array has been inverted:n);for(i=0;i10;i+)printf(%d,ai);printf(n);,/用数组元素:void inv(int x,int n)int temp,i,j,m=(n-1)/2;for(i=0;i=m;i+)j=n-1-i;temp=xi;xi=xj;xj=temp;,/或用指针:void inv(int*x,int n)int*p,temp,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i

35、=p;i+,j-)temp=*i;*i=*j;*j=temp;这时函数声明要改成:void inv(int*x,int n);,用选择法实现数组从大到小排序的函数:void sort(int x,int n)int i,j,k,t;for(i=0;ixk)k=j;if(k!=i)t=xi;xi=xk;xk=t;,第九章,用户建立的数据类型-结构体,问题定义:有时需要将不同类型的数据组合成一个有机的整体,以便于引用。如:一个学生有学号/姓名/性别/年龄/地址等int num;char name20;char sex;int age;char addr30;,声明一个结构体类型的一般形式为:str

36、uct 结构体名 成员表列;如:struct student int num;char name20;char sex;int age;float score;char addr30;,结构体名,类型名,成员名,定义结构体类型变量的方法,可以采取以下3种方法定义结构体类型变量:先声明结构体类型再定义变量名例如:struct student student1,student2;|结构体类型名 结构体变量名 定义了student1和student2为struct student类型的变量,即它们具有struct student类型的结构.,引用结构体变量中成员的方式为结构体变量名.成员名例如,st

37、udent1.num表示student1变量中的num成员,即student1的num(学号)项。可以对变量的成员赋值和运算 student1.num=10010,但不能用以下语句整体读入结构体变量,例如:scanf(%d,s,c,d,f,s,student1);结构体变量的地址主要用作函数参数,传递结构体变量的地址。,对结构体变量初始化.#include void main()struct student long int num;char name20;char sex;char addr20;a=10101,LiLin,M,123 Beijing Road;/*对结构体变量a赋初值*/p

38、rintf(No.:%ldnname:%snsex:%cnaddress:%sn,a.num,a.name,a.sex,a.addr);,结构体数组,一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组不同之处在于每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。,定义结构体数组 和定义结构体变量的方法相仿,只需说明其为数组即可。例如:struct studentint num;char name20;char sex;int age;float score;c

39、har addr30;struct student stu3;,以上定义了一个数组stu,数组有个元素,均为struct student类型数据。,结构体数组的初始化 与其他类型的数组一样,对结构体数组可以初始化。例如:struct studentint num;char name20;char sex;int age;float score;char addr30;;stu210101,LiLin,M,18,87.5,103 BeijingRoad,10102,Zhang Fun,M,19,99,130 Shanghai Road;,例 指向结构体变量的指针的应用#include#inclu

40、de void main()struct studentlong num;char name20;char sex;float score;struct student s;struct student*p;p=,定义指针变量p,指向struct student 类型的数据,指向的结构体变量中的成员,9.3.2 指向结构体数组的指针,11.6.2 指向结构体数组的指针,例9.4 指向结构体数组元素的指针的应用#include struct studentint num;char name20;char sex;int age;struct student stu3=10101,Li Lin,M

41、,18,10102,Zhang Fun,M,19,10104,WangMing,F,20;void main()struct student*p;printf(No.Name sex age);for(str;str;p)printf(%5d%-20s%2c%4dn,p-num,p-name,p-sex,p-age);,运行结果:LiLin 18 Zhang Fun 19 WangMing 20,所以 s.num,(*p).num,p-num都表示学生 s 的学号,是正确的.而(*s).num,p.num,(*p)-num,p-.num 都是错误的!,常见错误举例,1 多写了分号void main();for(i=0;i10;i+);while(m!=0);2 把分号写成了逗号for(i=0,i10,i+);3 写错了/应该是str,多了&,4 缺少函数体前后的花括号 5 printf,scanf 中把双引号”写成 单引号 6 语句后缺少分号c=a+b7 数据声明中把逗号写成分号:把 int a,b,c;写成:int a;b;c;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号