C语言程序设计复习-有答案_第1页
C语言程序设计复习-有答案_第2页
C语言程序设计复习-有答案_第3页
C语言程序设计复习-有答案_第4页
C语言程序设计复习-有答案_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设复习2009年3月目 录第一章 概 述1第二章 基本数据类型和运算2第三章 基本结构程序设计5第四章 数 组11第五章 指 针17第六章 函 数23第七章 结构型、共用型和枚举型29第八章 文 件35第九章 编译预处理和带参数的主函数41附 典型程序设计例题43附 模拟试题48第一章 概 述一、基本概念1.程序:程序是用某种计算机能理解并执行的计算机语言描述解决问题的方法步骤。2.程序的特点:有始有终、每个步骤都能操作、所有步骤执行完对应问题就能得到解决。3.程序设计:分析解决问题的方法步骤,并将其记录下来的过程。4.计算机语言:用来书写计算机程序的语言。可分为:机器语言汇编语言高

2、级语言。5.机器语言:计算机能直接识别和执行的二进制代码指令的集合,又称为指令系统。6.汇编语言:用符号来代表二进制代码,又称为符号语言。用这种语言编写的程序需要通过一种称为汇编程序的翻译后才能执行。不同的计算机提供不同的机器指令或汇编语言,所以机器语言和汇编语言是面向机器的语言。统称为低级语言。7.高级语言:描述算法过程很方便,同时脱离了对机型的要求,能在任何计算机上运行的计算机语言。是一种面向问题的语言。8.高级语言的执行:高级语言编写的程序称为“源程序”,它不能在计算机上直接运行,必须将其翻译成二进制代码指令程序后才能执行。翻译方式又两种:一种是“解释方式”;另一种是“编译方式”。通过解

3、释方式完成翻译工作的程序称为“解释程序”,通过编译方式完成翻译工作的程序称为“编译程序”,编译后的二进制程序称为“目标程序”。C语言是一种编译语言。9.C语言的特点:比其它高级语言更接近硬件,比低级语言更接近算法数据类型和运算符十分丰富语法结构简单是一种结构化程序设计语言,提供了完整的程序控制语句是一种模块化程序设计语言,适合大型软件的研制的调试提供了大量的库函数供调用,简化了程序设计工作。10.字符集:在C语言程序中允许出现的所有基本字符的集合。也就是ASCII字符集。11.保留字:C语言中有特殊含义的英语单词,主要用于构成语句、进行存储类型和数据类型的定义。如:int,float,doub

4、le,char,static,auto,if,switch,while,do,for等。12.标识符:用来标识程序中需要辨认的对象名称。如:符号常量,变量,函数等的名字。13.标识符的命名规则:是由字母或下划线开头的字母、数字、下划线组成的一串符号。注意:标识符不能是保留字C语言标识符是区分大小写的,即abc和Abc是不同的标识符。14.C程序的基本结构 C程序是由若干个函数构成的。每个C程序有且仅有一个主函数,其名字为main。除主函数外可以没有其它函数,也可以有一个或多个其它函数。每个函数的定义分为两个部分:函数说明部分和函数体。函数说明部分的格式如下: 返回值的类型 函数名(形式参数1,

5、形式参数2,) 形式参数的说明函数体的格式如下: 变量定义部分 实现函数功能的语句串 C程序的每个语句都是以分号“;”结束的。用/* 注释内容 */为程序加注释。C程序书写格式灵活,一行上可以写多个语句,一个语句也可以写在多行上。程序的执行总是从主函数开始,并在主函数中结束。主函数的位置是任意的,可以在程序的开头,可以在程序的结尾,也可以在两个函数之间。其它函数总是通过函数调用语句来执行的。主函数可以调用任何非主函数;任何非主函数都可以互相调用,但不能调用主函数。二、习题解答 (一)单项选择题 1.二进制语言是属于。 面向机器语言 面向过程语言 面向问题语言 面向汇编语言 2.下列语言中不属于

6、面向问题的语言是。 高级语言 低级语言 C语言 ALGOL语言 3.下列字符中属于键盘字符的是 n t b 4.下列不正确的转义字符是 074 0 5.不是C语言提供的合法关键字是 switch cher case default 6.正确的标识符是 ?a a=2 a.3 a_3 7.下列说法中错误的是 主函数可以分为两个部分:函数说明部分和主函数体 主函数可以调用任何非主函数的其它函数 任何非主函数可以调用其它任何非主函数 程序可以从任何非主函数开始执行 (二)填充题 1.汇编语言属于面向 机器 语言,高级语言属于面向 问题 语言 2.用高级语言编写的程序称为 源 程序,它可以通过 解释 程

7、序翻译一句执行一句的方式执行,也可以通过 编译 程序一次翻译产生 目标 程序,然后执行。 3.转义字符是由 反斜杆 符号开始的单个字符或若干个字符组成的。 4.C语言的词类主要分为 常量 、 变量 、 运算符 、 函数调用 、 表达式 和 保留字等6类。 5.C语言的语句主要分为 数据定义 语句、 赋值 语句、 函数调用 语句、 表达式 语句、 流程控制 语句、 复合 语句、 空 语句和 其它 语句。 6.C程序是由函数构成的。其中有并且只能有 一 个主函数。C语言程序的执行总是由 主或main() 函数开始,并且在 主或main() 函数中结束。 7.C语言程序的注释可以出现在程序中的任何地

8、方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。第二章 基本数据类型和运算一、基本概念1.使用高级语言编写程序时需做好的两件事:一是数据描述,二是描述数据的加工方法。2.数据类型:是指数据的内在表现形式。通俗地说,数据在加工计算中的特征就是数据的类型。C语言的数据类型详见教材。整型和实型合称为“数值型”,数值型和字符型合称为“基本数据类型”。不同类型数据所占用的内存字节数(数据长度)是不同的,因此C语言规定每使用一个数据之前,必须对数据的类型加以定义,以便为其分配长度合适的内存(即:先定义,后使用)。3.常量:是程序运行过程中其值不改变的数据。C语言规定常量的类型有四种:整型

9、常量、实型常量、字符常量和字符串常量。4.各种常量的表示形式 整型常量:有三种书写形式 十进制整数。如 -123,+15等 八进制整数。如 0144,015等, 100,13。 十六进制整数。如 0x64,0x15等,分别表示十进制数 100,21。 另:在整数后加后缀L或l,表示长整型常量,如 0L,0123L,0x64L等。 实型常量:有两种书写形式 一般形式的实数。如 12.345,-123.456等。 指数形式的实数。如 -1.2345E3,-123e-3等 字符常量:如 a、1、A、n、101、x41、等。 字符串常量:如 abc、ABCD、101102x43x44等5.变量:是程序

10、运行过程中其值可以发生变化的量。用来保存程序运行过程中的输入数据、中间结果和最终结果。6.变量的定义: 存储类型符 数据类型符 变量名1=初值1,变量名n=初值n; 其中:存储类型符有 auto(自动型),register(寄存器型),static(静态型), extern (外部参照型) 数据类型有 int,short,long,unsigned int,unsigned short,unsigned long, float,double,char7.内部变量:在函数内定义的变量。8.外部变量:在函数外定义的变量。9.变量的生存期:变量从开始分配内存单元到分配的内存单元被收回的期间。10.变

11、量的作用域:在变量的生存期中,变量可以使用的程序区域。11.全局变量:生存期覆盖了定义点到整个程序结束的变量。12.局部变量:生存期只覆盖某个函数(或某个复合语句)的变量。13.变量生存期和作用域的确定:可由两方面确定变量的定义点(内部变量或外部变量)变量的存储类型。如下表所示:变 量允许的存储类型生存期作 用 域外部变量省略(称无存储类型)全局变量定义点到程序结束静态型(static)内部变量省略(默认为自动型auto)局部变量定义该变量的函数或复合语句内部自动型(auto)寄存器型(register)静态型(static)全局变量14.运算符和表达式:用来表示各种运算的符号称为运算符;用运

12、算符将运算对象连接起来所组成的运算式称为表达式。运算符的优先级和结合性详见教材附录。15.变量赋值及表达式计算时的数据类型转换原则表达式计算中数据类型的自动转换原则参加运算的各个数据都转换为数据长度最长的数据类型,然后计算,计算结果是数据长度最长的数据类型。运算结果存入变量是数据类型的自动转换原则先将运算结果的数据类型自动转换成变量的数据类型,然后再赋予该变量。强制数据类型转换原则用如下的形式 (数据类型符)(表达式) 将表达式的值强制转换成指定的数据类型。二、习题解答(一)单项选择题1.下列数据中属于“字符串常量”的是 ABC ABC abc a2.在PC机中,n在内存占用的字节数是 1 2

13、 3 43.字符串ABC在内存占用的字节数是 3 4 5 64.在C语言中,合法的长整型数是 0L 0. 2.1869e105.char型常量在内存中存放的是 ASCII代码值 BCD代码值 内码值 十进制代码值6.设m,n,a,b,c,d均为零,执行(m=a=b)|(n=c=d)后,m,n的值是 0,0 0,1 1,0 1,17.设a为5,执行下列语句后,b的值不为2的是 b=a/2 b=6-(-b) b=a%2 b=a3?2:28.执行语句 x=(a=3,b=a-);后,x,a,b的值依次为 3,3,2 3,2,2 3,2,3 2,3,29.设整型变量m,n,a,b,c,d均为1,执行(m

14、=ab)&(n=ab);后,m,n的值是 0,0 0,1 1,0 1,110.设有语句 int a=3;则执行了语句 a+=a-=a*a;后,变量a的值为 3 0 9 -1211.在以下一组运算符中,优先级最高的运算符是 = = % &12.设整型变量i的值为3,则计算表达式 i-i 后,表达式的值为 0 1 2 表达式出错13.设整型变量a,b,c均为2,表达式:a+b+c+ 的结果是 6 9 8 表达式出错14.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值为 1 2 2.0 2.515.设a=1,b=2,c=3,d=4,则表达式:ab?a:cd?a:d的值为 4

15、3 2 116.设a为整型变量,不能正确表达数学关系:10a15的C语言表达式是 10a10&a15 !(a=15)17.下列表达式中,符合C语言语法的赋值表达式是 a=7+b+c=a+7 a=7+b+=a+7 a=(7+b,b+,a+7) a=7+b,c=a+718.若有以下定义:char a;int b;float c;double d;则表达式a*b+d-c值的类型为 float int char double19.表达式 10!=9 的值是 true 非零值 0 120.用十进制数表示表达式“12|012”的运算结果是 1 0 14 1221.设字符变量a=3,b=6,计算表达式c=(

16、ab)2后,c的二进制是 22.设a,b和c都是int 型变量,且a=3,b=4,c=5,则下面的表达式中值不为0的是 a&b a=b a|b+c&b-c !(a=A&ch3”后,k的值是 06 066 (二)填充题1.在内存中存储A要占用 2 个字节,存储A要占用 1 个字节。2.C语言中的逻辑值“真”是用 非0 表示的,逻辑值“假”是用 0 表示的。逻辑表达式值为“真”是用 1 表示的,逻辑表达式值为“假”是用 0 表示的,3.符号常量的定义方法是 #define 符号常量 常量 4.说明变量时,若省略存储类型符,系统默认为 自动型 存储类别,该存储类别的类型符为 auto 。5.无符号基

17、本整型的数据类型符为 unsigned int ,双精度实型数据类型符为 double ,字符型数据类型符为 char 。6.定义变量的完整语句格式是 存储类型符 数据类型符 变量名1=初值1,变量名n=初值n;7.设有下列运算符:、+、+、&、b的值为 0 ,abc 的值为 0 。10.若已知a=10,b=20,则表达式!az)?x+2:x-2,3,2”后x= 3 13.能表述“20x30或x20&x30|x=,= (共11个) 举例:x=1;y=1;z=x+y;z%=x+y;等4.系统函数(库函数):系统提供了大量的函数,这些函数存储在函数库中,在程序中使用这些函数时,要先说明。对库函数的

18、说明都保存在“头文件”中。即只要在程序开始写上: #include 头文件 或 #include 如:#include stdio.h #include string.h5.字符输入函数: getchar() 从键盘上读取一个字符。 举例:ch=getchar();6.字符输出函数: putchar(ch) 输出字符ch到显示器上。 举例:putchar(A);putchar(n);putchar(x41);7.格式输入函数:scanf(格式字符串,变量地址表) 依据格式串的格式要求输入若干个数据,按“变量地址表”中变量的顺序,依次存入对应的变量。常用的格式说明如下:%d、%o、%x、%u、%

19、md、%mo、%mx、%mld、%mlo、%mlx、%f、%e、%c、%s 等 举例:scanf(%d,&n) 输入一个整数保存在变量n中。 scanf(%d%d%d,&a,&b,&c) 输入三个整数(空格或回车分隔)保存在变量a,b,c中。 scanf(%f,%f,&x,&y) 输入两个实数(逗号分隔)保存在变量x,y中。8.格式输出函数:printf(格式字符串,表达式表) 按自右向左的顺序计算各表达式的值,然后按“格式字符串”中规定的格式输出到显示器上。输出格式字符详见教材。9.程序调试:包括输入源程序清单,编辑修改源程序,编译和连接源程序生成可执行的程序,运行程序,从运行结果判断程序的

20、正确性。10.选择控制语句: if(表达式) 语句; if(表达式) 语句1; else 语句2; if(表达式1) 语句1; else if(表达式2)语句2; else if(表达式n)语句n; else 语句n+1; switch(表达式) case 常量表达式1:语句组1;break; case 常量表达式2:语句组2;break; case 常量表达式n:语句组n;break; default :语句组n+1; 11.循环控制语句: while(表达式)语句 do 语句 while(表达式); for(表达式1;表达式2;表达式) 语句 break 和 continue12.多重循环

21、:是由嵌套的循环结构组成的,是指在某个循环语句的循环体中含有另一个循环语句。外面的循环语句称为“外层循环”, 外层循环语句的循环体中的循环语句称为“内层循环”。二、习题解答(一)单项选择题1.设a=3,b=4,执行printf(%d,%d,(a,b),(b,a);的输出是 3,4 4,3 3,3 4,42.使用scanf(x=%f,y=%f,&x,&y);要使x,y均为1.25,正确的输入是 1.25,1.25 1.25 1.25 x=1.25,y=1.25 x=1.25 y=1.253.设有int i=010,j=10;则printf(%d,%dn,+i,j-);的输出是 11,10 9,1

22、0 010,9 10,94.执行scanf(a=%c,b=%c,&a,&b);后使a为A, b为B,从键盘上的正确输入是 AB A,B A=A,B=B a=A,b=B5.设x,y,z,t均为int型变量,则执行以下语句后,t的值为 x=y=z=1;t=+x|+y&+z; 不定值 2 1 06.启动Turbo C的命令是 TC C TURBO-C TURBOC7.假定所有变量均已正确定义,下列程序段运行后x的值是a=b=c=0;x=35;if(!a) x-; else if(b); if(c) x=3; else x=4; 34 4 35 38.下面的程序片段所表示的数学函数关系是y=-1;if

23、)x!=0) if(x0) y=1; else y=0 9.下列语句中,错误的是 while(x=y) 5; do x+ while(x=10); while(0); do 2; while(a=b);10.循环语句for(x=0,y=0;(y!=123)|(x4);x+);的循环执行 无限次 不确定次 4次 3次11.若i,j已定义为int类型,则以下程序段中内循环体的执行次数是for(i=5;i;i-) for(j=0;j4;j+) 20 24 25 3012.假定a和b为int型变量,则执行以下语句后b的值为a=1;b=10;do b-=a;a+; while(b-0); 9 -2 -1

24、 813.设x和y均为int型变量,则执行下面的循环后y的值为for(y=1,x=1;y=10) break; if(x%2=1) x+=5;continue; x-=3; 2 4 6 814.在C语言中,下列说法正确的是 不能使用“do 语句 while(条件)”的循环 “do 语句 while(条件)”的循环必须使用“break”语句退出循环 “do 语句 while(条件)”的循环中,当条件为非0时将结束循环 “do 语句 while(条件)”的循环中,当条件为0时将结束循环15.若有以下程序段,w和k都是整型变量,则不能与左边程序段等价的循环语句是 for(w=k;w!=0;w-) p

25、rintf(*);w=k; w=k;LB:if(w=0) goto LE; dow-; printf(*); w-; while(w!=0); printf(*); w=k; goto LB; while(w-!=0) printf(*);w+;LE: for(w=k;w;-w) printf(*);(二)填充题1.结构化程序设计规定的三种基本结构是 顺序 结构、选择结构和 循环 结构。2.若有定义语句int a=25,b=14,c=19; 以下语句的执行结果是 #a=26,b=13,c=19if(a+=25&b-=2&c+) printf(*a=%d,b=%d,c=%dn,a,b,c);el

26、se printf(#a=%d,b=%d,c=%dn,a,b,c);3.以下两条if语句可合并为一条if语句为 if(a=b)x=1;printf(#x=%dn,x); if(ab) printf(*y=%dn,y); else printf(#x=%dn,x);4.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 10 for(i=0,j=10;i=j;i+,j-) k=i+j;5.下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0,请为程序填空。main()int i,x,y=1; scanf(%d,&x); for(i=2;i=x/2;i+) i

27、f (x%i=0) y=0;break; printf(%dn,y);(三)程序分析题1.阅读程序,学出运行结果。程序的运行结果是:10,4,3main() int a=10,b=4,c=3; if(ab) a=b; if(ac) a=c; printf(%d,%d,%d,a,b,c);程序的输出结果是:-12.阅读下列程序,写出程序的输出结果。main() int x=100,a=10,b=20,ok1=5,ok2=0; if(a0;y-) if(y%3=0) printf(%d,-y);continue;(四)程序设计题1.编一个程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度

28、(C)。 C=5(F-32)/9解:C语言源程序如下:main()float f,c; printf(输入华氏温度(F); scanf(%f,&f); c=5*(f-32)/9; printf(F=%7.2f,C=%7.2fn,f,c);2.编一个程序,输入一个整数,输出其符号(若0,输出1;若=0) y=1; else y=-1; printf(%dn,y);3.编一个程序,输入x的值,按下列公式计算并输出y值。解:C语言源程序如下:main()float x,y; scanf(%f,&x); if(x=1) y=x; else if(x10) y=2*x-1; else y=3*x-11;

29、 printf(x=%7.2f,y=%7.2fn,x,y);4.编一个程序,输入三个单精度数,输出其中最小数。解:C语言源程序如下:main()float x,y,z,min; scanf(%f,%f,%f,&x,&y,&z); if(xz) min=z; printf(%f,min);5.编一个程序,求出所有各位数字的立方和等于1099的3位数。解:C语言源程序如下:main()int a,b,c,x,y; for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=0;c=9;c+) x=100*a+10*b+c; y=a*a*a+b*b*b+c*c*c; if(y=109

30、9) printf(%dn,x); 6.编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。解:C语言源程序如下:main()int i,x,neg,pos,zero; neg=pos=zero=0; for(i=0;i0) pos+; else if(x1e-6);printf(e=%7.5fn,e);8.编程序按下列公式计算y的值(精度为1e-6)解:C语言源程序如下:main()float y=0,r; do y+=1/(r*r+1); r+; while(1/(r*r+1)1e-6); printf(y=%7.2fn,y);9.编一个程序显示ASCII代码0x200x6f的

31、十进制数值及其对应字符。解:C语言源程序如下:main() char ch; for(ch=0x20;ch0,则s1s2,函数值=0,则s1=s2,函数值0,则s1s2。 strcat(s1,s2) 将字符串s2连接至字符数组s1中字符串的后面。 使用以上六个函数时,在程序开始要写上文件包含命令:#include string.h二、习题解答(一)单项选择题1.若有以下说明,则数值为4的表达式是int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c=a,d,g; ag-c a4 ad-c ad-c2.设有定义:char s12=string;则printf(%dn,

32、strlen(s);的输出是 6 7 11 123.下列语句中,正确的是 char a3 =abc,l; char a 3=abc,l; char a3 =a,l; char a 3=a,l;4.合法的数组定义是 int a =string; int a5=0,1,2,3,4,5; char a=string; char a =0,1,2,3,4,5;5.语句printf(%dn,strlen(atsno121);的输出结果是 11 10 9 86.函数调用strcat(strcpy(str1,str2),str3)的功能是 将字符串str1复制到字符串str2中后再连接到字符串str3之后

33、将字符串str1连接到字符串str2之后再复制到字符串str3中 将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后 将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中7.设有如下定义,则正确的叙述为char x =abcdefg;char y =a,b,c,d,e,f,g; 数组x和数组y等价 数组x和数组y的长度相同 数组x的长度大于数组y的长度 数组x的长度小于数组y的长度(二)填充题1.执行static int b5,a 3=1,2,3,4,5,6;后,b4= 0 ,a12= 6 。2.设有定义语句static int a3

34、4=1,2,3;则a11值为 0 ,a21的值为 0。3.若在程序中用到putchar()函数时,应在程序开头写上包含命令 #include stdio.h,若在程序中用到strlen()函数时,应在程序开头写上包含命令 #include string.h。4.下面程序的功能是输出数组s中最大元素的下标,请填空。main() int k,p; int s =1,-9,7,2,-10,3; for(p=0,k=p;psk) k=p; printf(%dn,k);5.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。#include string.hmain() int i,j, k ;

35、char str =; for(i=0,j=strlen(str) -1 ;i=0;-i) d=ci;printf(%c,b d );(三)程序分析题1.阅读程序,写出运行结果。main()static int a 3=9,7,5,3,1,2,4,6,8; int i,j,s1=0,s2=0;程序的运行结果是:1810 for(i=0;i3;i+) for(j=0;j3;j+) if(i=j) s1+=aij; if(i+j=2) s2+=aij; printf(%dn%dn,s1,s2);2.说明下列程序的功能。程序的功能是:输入两个3行3列的矩阵分别保存在数组a和b中,求这两个矩阵的和保存在数组c中,并输出和矩阵。 main() int i,j;程序的功能是:输入一个3行3列的矩阵保存在数组a中,求矩阵a的转置保存在数组b中,并输出矩阵b。 flo

温馨提示

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

评论

0/150

提交评论