C语言程序设计:复习三

上传人:大米 文档编号:569479715 上传时间:2024-07-29 格式:PPT 页数:44 大小:259KB
返回 下载 相关 举报
C语言程序设计:复习三_第1页
第1页 / 共44页
C语言程序设计:复习三_第2页
第2页 / 共44页
C语言程序设计:复习三_第3页
第3页 / 共44页
C语言程序设计:复习三_第4页
第4页 / 共44页
C语言程序设计:复习三_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C语言程序设计:复习三》由会员分享,可在线阅读,更多相关《C语言程序设计:复习三(44页珍藏版)》请在金锄头文库上搜索。

1、C语言期末复习语言期末复习一、一、 C语言基本组成结构及规则语言基本组成结构及规则0.基本数据类型和输入输出基本数据类型和输入输出1.选择选择2.循环循环3.数组数组4.函数函数5.指针指针6.结构体、共用体结构体、共用体7.文件文件8. 编译预处理编译预处理数据类型数据类型1.程序中使用的变量要先定义,后使用;先输入值,后引用。程序中使用的变量要先定义,后使用;先输入值,后引用。2. C语言中变量区分大小写。语言中变量区分大小写。3. 整型、单精度实型、字符型、长整型、双精度、构造类型。整型、单精度实型、字符型、长整型、双精度、构造类型。 八进制整数:八进制整数:以以0 0开头数是八进制数开

2、头数是八进制数十六进制整数:十六进制整数:以以0x0x或或0X0X开头开头字符常量:用字符常量:用单引号单引号括起来的一个字符。括起来的一个字符。字符串常量字符串常量: :括在一对括在一对双引号双引号之内的字符序列或转义字符序列之内的字符序列或转义字符序列. .字符型数据与整型数据之间可以通用字符型数据与整型数据之间可以通用. .整型、实型、和字符型可以混合运算;一般类型的数据先转换为整型、实型、和字符型可以混合运算;一般类型的数据先转换为标准型;不同类型的要先转换为相同类型。标准型;不同类型的要先转换为相同类型。若赋值表达式右边表达式的值的类型与左边变量类型不一致,则若赋值表达式右边表达式的

3、值的类型与左边变量类型不一致,则以左边变量的类型为准,将表达式的类型转换为左边变量的类型。以左边变量的类型为准,将表达式的类型转换为左边变量的类型。“/”除法运算符,当运算对象为整数时,做整除运算。除法运算符,当运算对象为整数时,做整除运算。在逻辑表达式的求解中在逻辑表达式的求解中,并非所有的逻辑运算符都被执行并非所有的逻辑运算符都被执行,当能确当能确定表达式的值时定表达式的值时,就不在继续执行其它的运算就不在继续执行其它的运算.4. 在计算表达式值时:在计算表达式值时: (1)一个逻辑表达式中包含多个逻辑运算符,按)一个逻辑表达式中包含多个逻辑运算符,按 !-&-|顺序顺序 (2)关系运算符

4、优先于逻辑运算符)关系运算符优先于逻辑运算符 (3)括号优先于算术运算符,算术运算符优先于关系运算符。)括号优先于算术运算符,算术运算符优先于关系运算符。 !-算术运算符算术运算符-关系运算符关系运算符-& |-赋值运算符赋值运算符5. 自增、自减运算符为自增、自减运算符为右结合性右结合性(即自右至左)。(即自右至左)。6.6.逗号运算符和表达式逗号运算符和表达式 其值为最后一个表达式的值。其值为最后一个表达式的值。 a=3*5,a*4,a+5a=3*5,a*4,a+5 值?值?7.语言没有逻辑型数据,关系表达式语言没有逻辑型数据,关系表达式的真、假的真、假 是以是以 数值数值“”代表代表“真

5、真”,以以“”代表代表“假假”。8.条件运算符格式:条件运算符格式: 表达式表达式 ?表达式表达式:表达式表达式数据类型数据类型规定:在程序中用到的数据,必须指定数据类型。 阅读下列程序的结果:阅读下列程序的结果: main() int i=2,j=3; printf(“%d %d %dn”,i+j,i+,j+); main() int i=10, j=1; printf(“%d,%dn”,i-,+j); 程序输出结果是:程序输出结果是:A. 9,2 B. 10,2 C. 9,1 D. 10,17 2 3B函数参数的求值顺序是从右向左。函数参数的求值顺序是从右向左。 main() int a=

6、-1,b=6,c; c=(+a=0); printf(“%d,%d,%dn”,a,b,c); 0, 6, 0 main() int a=-1,b=6,c; c=(+a=0); printf(“%d,%d,%dn”,a,b,c); 0, 5, 1有关输入输出注意事项有关输入输出注意事项1. 1. 正确使用各种格式进行输入输出:正确使用各种格式进行输入输出:整型数据:整型数据: 输入:输入:%d %d 输出:输出:%d%d长整型:长整型: 输入:输入:%ld %ld 输出输出: %ld : %ld 实型数据:实型数据: 输入输入: %f : %f 输出输出 %f%f双精度实型:双精度实型: 输入输

7、入: %lf: %lf或或%le%le输出输出 %f %f 单个字符:单个字符: 输入:输入:%c %c 输出输出: %c: %c字符串:字符串: 输入:输入:%s %s 输出输出: %s: %s2. 2. 输入时输入时不能指定精度不能指定精度,不能,不能加换行符,加换行符,普通字符照原样输出。普通字符照原样输出。输入时建议不要在格式符之间加逗号。输入时建议不要在格式符之间加逗号。 数值与字符数据混合输入时不用空格。数值与字符数据混合输入时不用空格。3. 3. 注意格式规定注意格式规定 变量类型与格式符一致;输入加地址符,输出不加。变量类型与格式符一致;输入加地址符,输出不加。4. 4. 在使

8、用在使用getchargetchar()()、gets()gets()输入数据时,注意应清除缓冲区输入数据时,注意应清除缓冲区的内容。的内容。fflush(stdinfflush(stdin);); 或多加一个getchar()。5. e5. e格式输出共格式输出共1313位,其中:整数位,其中:整数1 1位,小数点位,小数点1 1位,小数位,小数6 6位,位,指数部分指数部分5 5位(如:位(如: 1.234680e+002 1.234680e+002 ) )if 语句的三种形式语句的三种形式 . if (表达式表达式) 语句语句 例例: if(xy) printf(“ %d ”, x);

9、else printf(%d,y); 3. if(表达式表达式) 语句序列语句序列 else 语句序列语句序列 2 例例: if(xy) t=x;x=y;y=t; else printf(max=%dn,x);选择结构选择结构switch语语句句 格式:格式:switch(表达式)表达式) case (常量表达式):语句块常量表达式):语句块; case (常量表达式):语句块常量表达式):语句块; case (常量表达式常量表达式m):语句块):语句块m; default :语句块:语句块n; 选择结构选择结构多个if 嵌套时,都为真时才执行。如下例:if(+i%2=0)if(+i%3=0)

10、if(+i%7=0) printf(“%d”,i); 以下程序的输出结果是: ( )main( ) int x , n; for( n=1; n50; n+) x=n; if(+x%2= =0) if(x%3= =0) if(x%7= =0) printf(“%d ”,n); A. 28 B. 27 C. 42 D. 41 41 main() int x; switch(x=1) case 0: x=5;break; case 1: switch(x=1) case 1: x=10;break; case 2: x=20;break; printf(“x%dn”,x); X=10注意:注意:表

11、达式一定要用圆括号括起表达式一定要用圆括号括起 if x*x-4*a*b*c=02. if后边不要加分号后边不要加分号 if(x=A&c=a&c=z) c=c-32; printf(c=%c,c);熟悉三种循环结构:while(表达式)语句(表达式)语句do 语句语句 while(条件表达式)条件表达式);for(表达式表达式1;表达式表达式2;表达式表达式3)语句)语句循环结构循环结构数组数组1.1.数组下标从数组下标从0 0开始;开始; 如:如:intint a10; a10; 在使用时不能出现在使用时不能出现a10a10下标变量下标变量2.2.数组名是地址常量,不能被赋值;其值指向首元素

12、的地址。数组名是地址常量,不能被赋值;其值指向首元素的地址。 如:如:char s10; s+; char s10; s+; 错误错误3.3.只有定义时可以赋初值;只有定义时可以赋初值; char=s18; s1=“abcdefg”; 错误错误4.4.一个字符变量只能存放一个字符,使用字符数组存放字符串。一个字符变量只能存放一个字符,使用字符数组存放字符串。定义字符数组时要比存放的字符多一个位置。定义字符数组时要比存放的字符多一个位置。char s=“This is a string”; 不能对字符变量赋一个字不能对字符变量赋一个字符串;错误符串;错误5.5.数组的输入输出要使用循环,不能整体

13、输入或输出。数组的输入输出要使用循环,不能整体输入或输出。 intint b10; b10; scanf(scanf(“%d%d”,b,b); ); 错误错误2. main()char s=abcdef;s3=0;printf(%sn,s);输出:abc1. main() char s=141141abct; char r= abc; printf(%d,%dn,strlen(s), strlen(r); A.9 ,7 B.12 ,7 C13,8 D14,9选择:A1.1.函数的类型是函数函数的类型是函数返回值返回值的类型的类型2.2.定义的类型与返回值类型不一致时,定义的类型与返回值类型不一

14、致时,以定义为准以定义为准3.3.不定义函数类型,系统认为是不定义函数类型,系统认为是intint。(VC+6.0(VC+6.0必须必须指定函数类型)指定函数类型)4.4.不需返回任何返回值时,应定义无类型不需返回任何返回值时,应定义无类型voidvoid。5.5.实参与形参需实参与形参需类型类型相同,相同,个数个数, , 顺序相同顺序相同6.6.形参在函数被调用时才分配存储空间形参在函数被调用时才分配存储空间7.7.实参在主调函数内有值,求值顺序是实参在主调函数内有值,求值顺序是从右向左从右向左8.8.实参与形参是实参与形参是单向单向的的值传递值传递9.9.如果实参与形参都是数组名,如果实参

15、与形参都是数组名,是是地址传递地址传递10.10.函数使用在定义之前,需要对函数使用在定义之前,需要对函数声明函数声明。 函数函数程序功能:统计一个字符串中的字母、数字、空格和其它字符的个数。程序功能:统计一个字符串中的字母、数字、空格和其它字符的个数。#include stdio.hmain () char s180;int a4=0; int k; void fun(char s,int b); gets(s1); fun(s1,a); puts(s1); for(k=0;k4;k+) printf(%4d,ak);void fun(char s,int b) int i; for (i=

16、0;si!=0;i+) if (a=si&si=z)|(A=si&si=0 & si=0;i-) printf(%d ,ai); main()int n=5;scanf(%d,&n); transfer(n);值传递例:利用递归方法,编写函数计算例:利用递归方法,编写函数计算x的的n次方。次方。#include “stdio.h”double f(double x,int n)double s; if(n0) s=x*f(x,n-1);else if(n=0) s=1;return s;main()int n;double x,m;printf(Input X:n);scanf(%lf,&x)

17、;printf(Input N:n);scanf(%d,&n);m=f(x,n); printf(Answer=%lfn,m);递归变量的作用域与存储方法变量的作用域与存储方法1.1.局部变量(内部变量)局部变量(内部变量) 定义:在函数内部定义:在函数内部(包括主函数)或复合语句中(包括主函数)或复合语句中定义定义的变量,的变量,作用域作用域只能在本函数只能在本函数或定义它的复合语句或定义它的复合语句内使用。内使用。 如:形参,普通变量。如:形参,普通变量。 2. 2. 全局变量全局变量定义:定义:在函数之外定义的变量。在函数之外定义的变量。使用范围:使用范围:可以为本文件中所有的函数可以为

18、本文件中所有的函数使使用。用。作用域:作用域:从定义变量的位置开始到本文件结束从定义变量的位置开始到本文件结束。在同一个文件中,当全局变量与局部变量同名时,在在同一个文件中,当全局变量与局部变量同名时,在局部变量的作用域内,全局变量不起作用。局部变量的作用域内,全局变量不起作用。3.3.变量的存储方法变量的存储方法 自动变量、自动变量、 静态局部变量、全局变量、寄存器变量静态局部变量、全局变量、寄存器变量例:例:#include staic int x=10;main() int x=3; void f(); f(); x-; printf(“x=%d”,x);void f() x+;A.10

19、 B.2 C.11 D.3x=2例:阅读以下程序,写出程序的运行结果。例:阅读以下程序,写出程序的运行结果。main() int i=3, j=2, k; k=i+j; int k=8; if(i=4) printf(%d, , k); else printf(%d, , j); printf(%d, %d,i,k); 运行结果:2,3,5例:阅读下列程序,给出程序运行结果。例:阅读下列程序,给出程序运行结果。#include stdio.h“int fun(int x, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main()

20、 int a=2,b=3; printf(%d, , fun(a,b); printf(%dn, fun(b,a); 运行结果8,17定义定义int *p;指向整形量的指针。指向整形量的指针。int *p ;指针数组,每个元素指向整型量。指针数组,每个元素指向整型量。int (*p) ;一个指针,指向一维整型数组。一个指针,指向一维整型数组。int *p( );一个函数,返回指向整型的指针。一个函数,返回指向整型的指针。int (*p)( );一个指针,指向返回值为整型数的函数。一个指针,指向返回值为整型数的函数。int *p;二级指针。二级指针。指针在使用前一定要赋地址值。指针在使用前一定要

21、赋地址值。优缺点:优缺点:快速灵活、可实现动态存储分配;易出大错。快速灵活、可实现动态存储分配;易出大错。指针指针字符数组与字符指针:字符数组与字符指针: 如:如:char s=“This is a string”; char *str= “This is a string”;可以进行如下操作:可以进行如下操作:str=str1; 改变指针改变指针 str 的指向;的指向;str=s; 指针指针str 指向数组指向数组s;strcat(s,str); 将串将串str 连接到连接到s的后面;的后面;char *str; str= “abcdefg”; 指针指针str 指向字符串指向字符串;不能进

22、行的操作:不能进行的操作: s+; 不能对数组名进行自加运算;不能对数组名进行自加运算; char s=“This is a string”; 不能对字符变量赋一个字符串;不能对字符变量赋一个字符串; s=str; 不能对数组名进行赋值;不能对数组名进行赋值; strcpy(str,s); 不能对不能对str进行串复制进行串复制 char=s1; s1=“abcdefg”; 不能对数组名进行赋值;不能对数组名进行赋值;字符数组s,存放了一个字符串定义字符指针str ,同时初始化,使其指向字符串的首地址。例:若有说明:例:若有说明: intint n=2,*p=&n,*q=p; n=2,*p=&

23、n,*q=p;则以下非法的赋值语句是()。则以下非法的赋值语句是()。A.A. * *p=*q;p=*q;B.B. n=*q; n=*q;C.C. p=n; p=n;D.D. p=q; p=q;C1. 程序的输出结果是程序的输出结果是_。(备选答案中备选答案中U表示空格)表示空格) #include #include void fun(char *s) char a10; strcpy(a,string); s=a; main() char *p; fun(p); printf(%sn,p); A.stringUUU B.string C.stringUUUU D.不确定的值不确定的值指针指针

24、D2. 程序的输出结果是程序的输出结果是_。 #include void fun(float *p1, float *p2, float *s) s=(float *)malloc(1,sizeof(float); *s=*p1+*(p2+); main() float a2=1.1,2.2,b2=10.0,20.0,*s=a; fun(a,b,s); printf(%fn,*s); A. 11.100000 B. 12.100000 C. 21.100000 D. 1.100000指针指针D3. main( ) int s10=10,9,8,7,6,5,4,3,2,1, *p=s, sum=

25、0; for( ;p成员名成员名结构体结构体共用体类型变量与结构体类型变量共用体类型变量与结构体类型变量结构体类型变量所占内存长度是各成员占的内存结构体类型变量所占内存长度是各成员占的内存长度之长度之和和。共用体类型变量所占内存长度等于共用体类型变量所占内存长度等于最长的成员的长度最长的成员的长度。每一瞬时只有一个成员起作用每一瞬时只有一个成员起作用 ;共用体变量中起作用的;共用体变量中起作用的成员是最后一次存放的成员;成员是最后一次存放的成员;成员成员分量分量之间是之间是相互联系相互联系的,所进行的操作相互依赖。的,所进行的操作相互依赖。都要先定义类型,再定义变量。都要先定义类型,再定义变量

26、。 union 共用体名共用体名 成员表列成员表列 变量表列;变量表列; 设有以下语句:struct st int num; char s10; a3=5, “How”, 7, “are”, 9, “you!”, *p=a; 则表达式_D_的值是6。A. p+-num B. p-num+ C. (*p).num+D. +p-num结构体、结构体、公用体公用体定义文件类型指针定义文件类型指针: FILE *fp;文件打开文件打开: fp=fopen(文件名文件名,使用文件方式);使用文件方式);从文件读从文件读: fscanf(fp,”格式字符串格式字符串”,输入表列,输入表列); fread(

27、buffer, size, count, fp);向文件写向文件写: fprintf(fp,”格式字符串格式字符串”,输出表列,输出表列); fwrite(buffer,size,count, fp);文件关闭文件关闭: fclose (fp);文件文件/* 编写程序完成菜单功能。提供三种选择编写程序完成菜单功能。提供三种选择*/#include stdio.hvoid narcissus() /* 求水仙花数*/int k,a,b,c,d;for(k=100;k1000;k+) a=k/100; b=k%100/10; c=k%10; d=a*a*a+b*b*b+c*c*c*c; if(d=

28、k) printf(“%5dn”,k); void prime() /* 求素数 */int m, i, k; scanf(%d,&m); k=m-1; for(i=2; i=k+1) printf (%d is a prime numbern, m); else printf(%d is not a prime numbern, m);void fabonacci() /* 求费波那切数列的前n项*/ long f1,f2; int k,n;printf(“请输入一个数:); scanf(%d,&n); f1=f2=1; for(k=1;k=n;k+) printf(“%8d%8d”,f1,

29、f2); if(k%20) printf(“n”); f1=f1+f2; f2=f1+f2; main() int choice; do printf( =功能选项=n); printf(“ 1求水仙花数 n); printf(“ 2求素数n); printf(“ 3求Faibonacci数列 n); printf( 0-退 出 n); printf(请选择: ); scanf(%d,&choice); switch(choice) case 1: narcissus(); break; case 2: prime(); break; case 3: fabonacci(); break; c

30、ase 0: break; while(choice!=0); printf(谢谢使用! n);二、考试注意事项1.认真审题,完整答题。认真审题,完整答题。2.程序填空题在指定的空中填写。删除标记横线,注程序填空题在指定的空中填写。删除标记横线,注意保存,编译,运行。意保存,编译,运行。3.程序改错题在程序改错题在*error*行下一行修改,注意保行下一行修改,注意保存,编译,运行。存,编译,运行。4.程序设计题在答题区编写,不要删除答题区标记。程序设计题在答题区编写,不要删除答题区标记。注意保存,编译,运行。要使用函数的参数。注意保存,编译,运行。要使用函数的参数。5.调试过程中发生死机,结

31、束调试过程中发生死机,结束VC任务,继续答题或任务,继续答题或重答。重答。6.出现问题请监考老师输入密码重新进入。出现问题请监考老师输入密码重新进入。7.交卷后提交成功并看到成绩后离开。交卷后提交成功并看到成绩后离开。8.最终成绩为:期末成绩最终成绩为:期末成绩80%+平时成绩。平时成绩。/* 程序填空题目:本程序的功能是输入一段数字后,将输入的数字颠倒输出。 请填空。-*/#include stdio.hmain() int numb,rdigit; scanf(%d,&numb); /* fill*/ while() rdigit=numb%10; /*fill*/ printf(%d,)

32、; numb/=10; printf(n);/*【程序改错】功能:求1到30的阶乘的和。-*/#include stdio.hvoid fun() int n,j; float s=0.0,t=1.0; for(n=1;n=30;n+) /*error*/ s=1; for(j=1;j=n;j+) /*error*/ t=t*n; /*error*/ s+t=s; /*error*/ printf(jiecheng=%dn,s);main() fun();/*-【程序设计】-功能:统计出若干个学生的平均成绩,最高分以及得最高分的人数。例如:输入10名学生的成绩分别为 92 87 68 56 9

33、2 84 67 75 92 66 则输出平均成绩为77.9, 最高分为92,得最高分的人数为3人。-*/#include stdio.hfloat max=0;int j=0;float fun(float array,int n) /*Program*/ /* End */yzj() FILE *IN,*OUT; float iIN10,iOUT; int iCOUNT; IN=fopen(in.dat,r); if(IN=NULL) printf(Please Verify The Currernt Dir.It May Be Changed); OUT=fopen(out.dat,w);

34、 if(OUT=NULL) printf(Please Verify The Current Dir. It May Be Changed); for(iCOUNT=0;iCOUNT10;iCOUNT+) fscanf(IN,%f,&iINiCOUNT); iOUT=fun(iIN,10); fprintf(OUT,%f %fn,iOUT,max); fclose(IN); fclose(OUT);main( ) float a10,ave; int i=0; for(i=0;i10;i+) scanf(%f,&ai); ave=fun(a,10); printf(ave=%fn,ave); printf(max=%fn,max); printf(Total:%dn,j); yzj();祝同学们期末复习愉快,取得好成绩!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号