程序设计1期末复习.ppt_第1页
程序设计1期末复习.ppt_第2页
程序设计1期末复习.ppt_第3页
程序设计1期末复习.ppt_第4页
程序设计1期末复习.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计1期末复习,2,内容提要,3,(1)选择题(每题2分,共20分) (2)程序阅读题(每题4分,共20分) (3)程序填空(每空2分,共20分) (4)程序改错题(共10分) (5)程序设计题(每题15分,共30分),考试试题题型,4,第1章 程序设计和C语言 第2章 算法-程序的灵魂 第3章 最简单的C程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 利用数组处理批量数据 第7章 用函数实现模块化程序设计 第8章 善于利用指针 第9章 用户自己建立数据类型 第10章 对文件的输入输出,考试内容,5,第1章 程序设计和C语言,C语言程序基本构成(1.4.2节),包括:

2、 函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main() 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成 用“;”作为语句终止符 注释 /* */, / 为注释,不能嵌套 不产生编译代码,6,举例,1 以下叙述不正确的是 。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 2 一个C语言程序是由 。 A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成,D,B,

3、7,1 一个C程序的执行是从 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 3 以下叙述正确的是 。 A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 B) 在C程序中,main函数必须位于程序的最前面 C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句,A,C,8,第2章 算法-程序的灵魂,1、计数、求和、求阶乘等简单算法 计数:i+ 求和:s=s+x 求阶乘:p=

4、p*i 2、找出最大数、最小数和平均数 3、判断某一年是否为闰年 4、判断某个数是否为素数 5、冒泡、选择、插入排序 6、求多项式的值,9,第3章 顺序程序设计,常量:整型、实型、字符(普通、转义)、字符串、符号 字符常量:ASCII码存储 空格为32 字符变量: char c1=100; 与c1=e等价 字母小写大写 c=c-32;或c=c-a-A; 变量:先定义,再使用 标识符:掌握标识符的命名规则:以下划线或字母开始,后面跟着数字、字母、下划线。 a_b (合法) a-b (不合法),10,注意: 数据占内存字节数 数据取值范围,11,举例,1下列四组选项中,均是不合法的用户标识符的选项

5、是 A) W P_0 do B) b-a goto int C) float la0 _A D) -123 abc TEMP 2下面正确的字符常量是 A) “c” B) C) “ ” D) K 3已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2A+6-3后,c2中的值为 A) D B) 68 C) 不确定的值 D) C 4 sizeof(float)是 。 A) 一个双精度型表达式 B) 一个整型表达式 C) 一种函数表达式 D) 一个不合法的表达式,B,D,C,12,常见运算符 算术运算符(+ - * / % + -):运算结果为数值。 注意:自增、自减运算符的应用 关

6、系运算符( = 0)?%d0:%d=0,x);,13,常见运算符 逗号运算符(,):运算结果为最右边表达式的值。 指针运算符(*) 求字节 强制类型转换 下标 函数调用运算符() 注意: 运算符的优先级、结合性和目数 隐式类型转换,14,举例,1若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 2 以下叙述不正确的是 。 A) 在C程序中,逗号运算符的优先级最低 B) 在C程序中,MAX和max是两个不同的变量 C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变

7、D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值,C,D,15,3设以下变量均为int类型,则值不等于7的表达式是 A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1) C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1) 4设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 。 A) 0255 B) 032767 C) 065535 D) 02147483647 5设有说明:char w; int x; float y; double z;则表达式w*x+z-y

8、值的数据类型为 。 A) float B) char C) int D) double,C,C,D,16,表达式 不同类型数据间的转换与运算。 例如:int a=123; 则a/100的值为(1),a/10%10的值为(2),a%10的值为( 3 ) 表达式 j=i+/2 的值 注意:两整数相除,结果为整数,17,C语句分类 程序控制语句(9种): 分支:if( )else ;switch 循环:for( );while( );dowhile( ) 辅助控制:continue;break;goto;return 函数调用语句 表达式语句:表达式加分号构成。 空语句: ; 复合语句:用 括起来的

9、一组语句,18,赋值语句 赋值运算符、复合的赋值运算符、赋值表达式、赋值过程中的类型转换 赋值表达式和赋值语句、变量赋初值 例: x=0与x=0的区别 int a=23.6;则a的值为23 x=y=0 的值,19,举例,1若s是int型变量,且s6,则下面表达式的值为_。 s%2+(s+1)%2 2. 若a是int型变量,则下面表达式的值为_。 (a=4*5,a*2),a+6 3. 若a是int型变量,则计算下面表达式后a的值为_。 a=25/3%3 4若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为_ ,n的值为_。 x+=n+ 5. 若有定义:char c=010;则

10、变量c中包含的字符个数为_。 6若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为_。 (x+y)%2+(int)a/(int)b 7. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+8-3的值为_。,1,26,2,10,6,1,1,102(或f),20,数据的输入与输出 printf(格式控制,输出表列) 例如:printf(i=%d,ch=%cn,i,ch); (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息: 格式说明:由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输

11、出。 普通字符,即需要原样输出的字符。 (2)“输出表列”是需要输出的一些数据,可以是表达式 字符数据的输入输出:putchar() getchar(),21,数据的输入与输出 scanf(格式控制符,地址列表)例如:scanf(“%d%d”, 如希望a=56,b=x.输入格式为:56x 或56 x,22,举例,1 putchar函数可以向终端输出一个 。 A) 整型变量表达式 B) 实型变量值 C) 字符串D) 字符或字符型变量值 2 printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 ;如果字符串长度小于5,则输出按方式 。 A) 从

12、左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息,D,B,C,23,1 以下的输出结果是【1】。 main() short i; i=-4; printf(“ni:dec=%d,oct=%o,hex=%x,unsigned=%un”,i,i,i,i); 2. 以下的输出结果是【2】。 main() char c=x; printf(“c:dec=%d,oct=%o,hex=%x,ASCII=%cn”,c,c,c,c); ,Dec=-4, oct=17774, hex=fffc,unsigned=65532,Dec=120,oc

13、t=170, hex=78,ASCII=x,24,3 以下的输出结果是【3】。 main() int x=1,y=2; printf(“x=%d y=%d * sum * =%dn”,x,y,x+y); printf(“10 Squared is : %dn”,10*10); 4. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。 a+=【4】; b=a-【5】; a-=【6】;,x=1 y=2*sum*=3 10 Squared is :100,b b b,25,第4章 选择结构,用if语句实现选择结构。 用switch语句实现多分支选择结构。根据表达式的具

14、体值进行多分支选择、表达式的类型要求、语句中的break。 选择结构的嵌套 注意:同一程序的等价转换,26,举例,1 逻辑运算符两侧运算对象三数据类型 。 A) 只能是0和1B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何类型的数据 2 判断char型变量ch是否为大写字母的正确表达式是 。 A) A=A)执行(m=ab) A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20,B,B,A,28,第5章 循环结构程序设计,for循环结构。指定次数的循环 while和d

15、o while 循环结构。 循环的嵌套(两层) 循环结束条件 循环控制变量的使用 改变循环执行的状态(break,continue)。 例:编写程序打印码值为33127的ASCII值、字符对照表。,29,举例,1设有程序段 int k=10; while(k=0)k=k-1; 下面描述中,正确的是_. a)while循环执行10次 b)循环是无限循环 c)循环体语句一次也不执行 d)循环体语句执行一次 2语句while(!E);中的表达式!E等价于_. a)E=0 b)E!=1 c)E!=0 d)E=1 3下面程序段的运行结果是_. int n=0; while(n+=2);printf(%d

16、,n); a)2 b)3 c)4 d)有语法错,C,A,C,30,6若有如下语句 int x=3; doprintf(%dn,x-=2);while(!(-x); 则上面程序段_. a)输出的是1 b)输出的是1和-2 c)输出的是3和0 d)是死循环 7下面程序的运行结果是_. #include main() int y=10; doy-;while(-y); printf(%dn,y-); a)-1 b)1 c)8 d)0,B,D,31,8若i为整型变量,则以下循环执行次数是_. for(i=2;i=0;)printf(%d,i-); a)无限次 b)0次 c)1次 d)2次 9执行语句f

17、or(i=1;i+4; );后变量i的值是_. a)3 b)4 c)5 d)不定 10以下正确的描述是_. a)continue语句的作用是结束整个循环的执行 b)只能在循环体内和switch语句体内使用break语句 c)在循环体内使用break语句或continue语句的作用相同 d)从多层循环嵌套中退出时,只能使用goto语句,D,C,D,32,1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空。 int n=0,c; c=getchar(); while(_) if(_)n+; c=getchar(); ,c!=n c=0 scanf(%d%d, ,t=m;

18、m=n;n=t m%n,34,3下面程序的运行结果是_. #include main() int a,s,n,count; a=2;s=0;n=1;count=1; while(count=7) n=n*a;s=s+n;+count; printf(s=%d,s); ,s=254,35,4下面程序段的运行结果是_. i=1;a=0;s=1; doa=a+s*i;s=-s;i+;while(i=10); printf(a=%d,a); 5下面程序段的运行结果是_. i=1;s=3; dos+=i+; if(s%7=0) continue; else +i; while(s15); printf(

19、%d,i);,a=-5,8,36,第6章 利用数组处理批量数据,一维数组 :定义和初始化, 数组元素的引用 二维数组: 定义、存储空间的大小,数组元素的引用。 例:二维数组在定义时,如果有初始化,则可以缺省第一维的长度。 例: int a56:a数组中存放5*6个int类型数据;其占据的内存空间是:sizeof(int)*(5*6) = 120字节;a23表示a数组中第三行第四个元素; 编程: 找出二维数组中每一行的最小值。,37,字符数组的定义和赋值、字符串结束标志0, 字符数组的输入和输出: “%s”格式符 字符串处理函数(puts, gets, strlen,strcpy,strcmp

20、) 例:char s180,s280=”abc”; 则strcpy(s1,s2)和strcmp(s1,s2)的作用,strlen(s1)与sizeof(s1)的区别。strlen(“abcx61”)=4,38,以下程序用以删除字符串中的所有的空格,请填空。 #include main() char s100=“I am a student.”; int i,j; for( i=j=0;si!=0;i+) if(si!= ) sj=si;j+; sj= 【 0 】; printf(%sn,s ); ,39,举例,1.以下为一维整型数组a的正确说明是_. a)int a(10); b)int n=

21、10,an; c)int n; d)#define SIZE 10; scanf(%d, 3若二维数组a有m列,则计算任一元素aij在数组中位置的公式为_.(假设a00位于数组的第一个位置上。) a)i*m+j b)j*m+i c)i*m+j-1 d)i*m+j+1 4若二维数组a有m列,则在aij前的元素个数为_. a)j*m+i b)i*m+j c)i*m+j-1 d)i*m+j+1,D,C,D,B,40,5指出以下程序段的功能 int a=4,0,2,3,1,i,j,t; for(i=1;i=0,将数组a的元素按逆序排列,41,6下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,

22、单词之间用空格分隔,请选择填空。 #include main() char s80,c1,c2=; int i=0,num=0; gets(s); while(si!=0) c1=si; if(i=0)c2=; else c2=si-1; if(_)num+ i+; printf(There are %d words.n,num); a)c1= int k; for(k=2;(c=strk)!=0;k+) switch(c) case I:+k;break; case L:continue; default:putchar(c);continue; putchar(*); a)SSW* b)S

23、W* c)SW*A d)SW,B,43,8. 下面程序的运行结果是_. #include main() char s=ABCCDA; int k;char c; for(k=1;(c=sk)!=0;k+) switch(c) case A:putchar(%);continue; case B:+k;break; default:putchar(*); case C:putchar( ,# int i; for(i=0;i3;i+)gets(stri); strcpy(s,_); if(strcmp(str2,s)0)strcpy(s,str2); printf(%sn,_);,strcmp(

24、str0,str1)0? str0:str1,s,45,第7章 用函数实现模块化程序设计,定义函数: 函数类型 函数名(形参类型说明表) 说明部分 语句部分 调用: 调用形式:函数名(实参表); 说明:实参与形参个数相等,类型一致,按顺序一一对应,注意:当函数返回值为void和int型时,函数类型可以省略。,46,函数返回: 返回语句: return(表达式); 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数

25、调用转换 void型函数,47,函数参数及其传递方式: 函数参数分为两类:形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式 传递方式: 值传递方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点:形参与实参占用不同的内存单元;单向传递 地址传递方式:函数调用时,将数据的存储地址作为参数传递给形参 特点:形参与实参占用同样的存储单元;“双向”传递;实参和形参必须是地址常量或变量,49,局部变量和全局变量 变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。 主要是用

26、static声明的静态局部变量,50,举例,1以下正确的函数定义形式是_. a)double fun(int x,int y) b)double fun(int x; int y) c)double fun(int x, int y); d)double fun(int x,y); 2C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为_. A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式 3C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_. a)float b)int c)long d)double,B,B,B,51,以下程序的正

27、确运行结果是_. #include void num() extern int x,y;int a=15,b=10; x=a-b; y=a+b; int x,y; main() int a=7,b=5; x=a+b; y=a-b; num(); printf(“%d,%dn”,x,y); a)12,2 b)不确定 c)5,25 d)1,12,C,52,以下程序的运行结果是_. #include main() int a=1,b=2,c; c=max(a,b); printf(max is %dn,c); max(int x,int y) int x; z=(xy)?x:y; return(z)

28、; ,max is 2,53,函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。 gongyu(int num1,int num2) int temp,a,b; if(num1(_) num2) temp=num1;num1=num2;num2=temp; a=num1;b=num2; while(_) temp=a%b;a=b;b=temp; return(a);,b!=0,54,以下程序的运行结果是_. int a=5;int b=7; main() int a=4,b=5,c; c=plus(a,b); printf(A+B=%dn,c); plus(in

29、t x,int y) int z; z=x+y; return(x); ,A+B=9,55,第8章 指针,讲到指针,必然和变量联系在一起,变量是对程序中数据存储空间的抽象 指针:一个变量的地址 指针变量:专门存放变量地址的变量 两个运算符: int *i_pointer; i_poinnter= i_pointer-指针变量,它的内容是地址量 *i_pointer-指针的目标变量,它的内容是数据 a)* a)元素a5的地址 b)元素a5的值 c)元素a6的地址 d)元素a6的值,B,C,A,B,59,1以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 #include s

30、tdlib.h main() int *a,*b,*c,num,x,y,z; a= ,Num=*b,Num=*c,60,2下面程序的运行结果是_. #include #include fun(char *w,int n) char t,*s1,*s2; s1=w;s2=w+n-1; while(s1s2)t=*s1+;*s1=*s2-;*s2=t; main()char *p; p=1234567; fun(p,strlen(p); puts(p); a)7654321 b)1714171 c)1711717 d)7177171,A,61,3下面程序的功能是将两个字符串s1和s2连接起来。请填

31、空。 #include main() char s180,s280; gets(s1); gets(s2); conj(s1,s2); puts(s1); conj(char *p1,char *p2) char *p=p1; while(*p1)_; while(*p2)*p1=_;p1+;p2+; *p1=0; _; ,p1+,*p2,p1=p;,62,4以下程序将数组a中的数据按逆序存放,请填空。 #define M 8 main() int aM,i,j,t; for(i=0;iM;i+)scanf(%d,a+i); i=0;j=M-1; while(ij) t=*(a+i);_;*(

32、_)=t; i+;j-; for(i=0;iM;i+)printf(%3d,*(a+i);,*(a+i)=*(a+j) a+j,63,第9章 用户自己建立数据类型,结构体struct 把不同类型的数据组合成一个整体。 struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . ; 在声明结构体变量时分配内存。 其对score成员的引用为:stu1.score;或者stu2.score; 或者pm-score 或者(*pm).score 结构体数组和结构体指针,struct score int num; char name20; float score; char addr30; s

33、tu1,stu2,*pm;,64,用指针和结构体构成链表,单向链表的建立、输出。 用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name; typedef 没有创造新数据类型,65,举例,1.下面对typedef的叙述中不正确的是_. a)用typedef可以定义各种类型名,但不能用来定义变量 b)用typedef可以增加新类型 c)用typedef只是将已存在的类型用一个新的标识符来代表 d)使用typedef有利于程序的通用和移植 2C语言结构体类型变量在程序执行期间_. a)所有成员一直驻留在内存中 b)只有一个成员驻留在内存中 c)部分成员驻留在内存中

34、d)没有成员驻留在内存中,B,A,66,1以下程序的运行结果是_. struct n int x; char c; ; main() struct n a=10,x; func(a); printf(%d,%c,a.x,a.c); func(struct n b) b.x=20; b.c=y; ,10,x,67,2若有定义: struct num int a; int b; float f; n=1,3,5.0; struct num *pn= 则表达式pn-b/n.a*+pn-b的值是_,表达式(*pn).a+pn-f的值是_.,12,6.00,68,3. 以下程序的运行结果是_. stru

35、ct ks int a; int *b; s4,*p; main() int n=1; printf(n); for(i=0;ia,(p+)-a);,5,3,69,4.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请在_内填入正确内容。 stati struct man char name20; int age; person=li=ming,18, wang-hua,19, zhang- ping,20 ; main() struct man *p,*q; int old=0 p=person; for( ;p_;p+) if(oldage) q=p;_; prin

36、tf(%s %d,_);,age q-name,old,70,5. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表不带头结点)。请在_内填入正确内容。 struct link char data ; struct link *next; ; . struct link *p,*first; int c=0; p=first; while(_) _; p=_; ,PNULL C+; p-next,71,第10章 对文件的输入输出,文件的打开和关闭 FILE *fp; fp=fopen(文件名,使用方式r+、w+、a+);fclose(fp); 文件的基本读写操作 常用函数有:fscanf(从指定文件按格式读出数据)、fprintf(按格式向指定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论