C语言程序的设计试题与答案完整版.pdf
《C语言程序的设计试题与答案完整版.pdf》由会员分享,可在线阅读,更多相关《C语言程序的设计试题与答案完整版.pdf(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言复习资料5 元必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if 和 switch)2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.4)bit 是位是指为 0 或者 1。byte 是指字节,一个字节=八个位.5)一定要记住二进制如何划成十进制。概念常考到的:、编译预处理不是C 语言的一部分,不再运行时间。C 语言编译的程序称为源程序,它以ASCII 数值存放在文本文件中。、每个C 语言程序中main 函数是有且只有一个。、在函数中不可以再
2、定义函数。、算法的是一定要有输出的,他可以没有输入。、break 可用于循环结构和switch 语句。、逗号运算符的级别最低。第一章1)合法的用户标识符考查:合法的要由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了。关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If 是可以做为用户标识符。因为If 中的第一个字母大写了,所以不是关键字。2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333 10-1。考试口诀:e 前 e 后必有数,e 后必为整数。.3)字符数据的合法形
3、式::1 是字符占一个字节,1 是字符串占两个字节(含有一个结束符号)。0 的 ASCII 数值表示为48,a 的 ASCII 数值是 97,A的 ASCII 数值是 65。4)整型一般是两个字节,字符型是一个字节,双精度一般是4 个字节:考试时候一般会说,在16 位编译系统,或者是32 位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节,字符型是一个字节,双精度一般是4 个字节就可以了。5)转义字符的考查:在程序中int a=0 x6d,是把一个十六进制的数给变量a 注意这里的0 x 必须存在。在程序中int a=06d,是一个八进制的形式。在转义字符中,x6d 才是合法的,0
4、 不能写,并且x 是小写。141 是合法的,0 是不能写的。108 是非法的,因为不可以出现8。6)算术运算符号的优先级别:同级别的有的是从左到右,有的是从右到左。7)强制类型转换:一定是(int)a 不是 int(a),注意类型上一定有括号的。注意(int)(a+b)和(int)a+b 的区别。前是把 a+b 转型,后是把a 转型再加 b。8)表达式的考查:是表达式就一定有数值。赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。自加、自减表达式:假设a=5,+a(是为 6),a+(为 5);运行的机理:+a 是先把变量的数值加上1,然后把得到的数值放到变量a中,
5、然后再用这个+a 表达式的数值为6,而 a+是先用该表达式的数值为5,然后再把a 的数值加上1 为 6,再放到变量a 中。进行了+a 和 a+后在下面的程序中再用到a 的话都是变量a中的 6 了。考试口诀:+在前先加后用,+在后先用后加。逗号表达式:优先级别最低;表达式的数值逗号最右边的那个表达式的数值。(2,3,4)的表达式的数值就是4。9)位运算的考查:会有一到二题考试题目。总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。例 1:char a=6,b;b=a2;这种题目的计算是先要把a 的十进制6 化成二进制,再做位运算。例 2:一定要记住,例
6、 3:在没有舍去数据的时候,右移一位表示除以2。10)018 的数值是非法的,八进制是没有8 的,逢 8进 1。11)%符号两边要整数。不是整数就错了。12)三种取整丢小数的情况:、int a=1.6;、(int)a;、第二章1)printf 函数的格式考查:%d 对应整型;%c 对应字符;%f 对应单精度等等。宽度的,左对齐等修饰。%ld 对应long int;%lf 对应 double。2)scanf 函数的格式考察:注意该函数的第二个部分是&a 这样的地址,不是a;Scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据。3)putchar,getchar 函数的考查
7、:char a=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。putchar(y)把字符 y 输出到屏幕中。4)如何实现两个变量x,y 中数值的互换(要求背下来)不可以把x=y,y=x;要用中间变量t=x;x=y;y=t。5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)这个有推广的意义,注意x=(int)x 这样是把小数部分去掉。第三章特别要注意:c 语言中是用非0 表示逻辑真的,用0 表示逻辑假的。1)关系表达式:表达式的数值只能为1(表示为真),或 0(表示假)当关系的表达是为真的时候得到1。如98 这个是真的,所以表达式的数值就是1;2)逻辑表达式:只
8、能为 1(表示为真),或 0(表示假)a)共有&|!三种逻辑运算符号。b)!&|优先的级别。c)注意短路现象。考试比较喜欢考到。d)要表示x 是比 0 大,比10 小的方法。0 x10 是不可以的(一定记住)。是先计算0 x 得到的结果为1或则 0;再用 0,或 1 与 10 比较得到的总是真(为1)。所以一定 要用(0 x)&(x第一行a1 4 5 6第二行a2 7 8 9第三行步骤二:这样作题目间很简单:*(a0+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a01 元素,所以是。*(a1+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a12 元素,所以是6。一
9、定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写 int a=1,2 合法。int a4=2,3,4 合法。但 int a4=2,3,4非法。二维数组中的行指针int a12;其中 a现在就是一个行指针,a+1 跳一行数组元素。搭配(*)p2 指针a0,a1现在就是一个列指针。a0+1 跳一个数组元素。搭配*p2 指针数组使用还有记住脱衣服法则:a2 变成*(a+2)a23 变成*(a+2)3再可以变成*(*(a+2)+3)这个思想很重要!第一部分:基础知识(20 项,共 40 分)】1一个 C 语言程
10、序是由()组成的。A主程序B子程序C函数D过程2转换说明符%x 的输出形式是()。A十进制B八进制C十六进制D二进制3若 a、b 均为 int 型变量,且 a=100,则关于循环语句 for(b=100;a!=b;+a,+b)printf(“-“);的正确说法是()。A循环体只执行一次B死循环C循环体一次也不执行D输出-4若 x、y、z 均为 int 型变量,则执行下列语句后的z 值为()。x=1;y=2;z=3;z=(xy)?z:y;z=(z=1;n-),下列语句实现将 S2所指字符数组中前n 个字符复制到 S1所指字符数组中,其中代码不正确的是()。A*S1+=*S2+BS1n-1=S2n
11、-1 C*(S1+n-1)=*(S2+n-1)D*(+S1)=*(+S2)17调用函数的实参与被调用函数的形参应该有如下关系()。A只要参和形参个数相等B只要求形参和实参顺序相同C只要参和形参数据类型相同D上述三点均需具备18联合体成员的数据类型()。A相同B可以不同也可以相同C长度一样D是结构体变量19由系统分配和控制的标准输出文件为()。A键盘B磁盘C打印机D显示器20C 语言标准库函数 fread(fd,buffer,n)的功能是()。A从文件 fd 中读取长度不超过n 个字节的数据送入buffer 指向的存区域B从文件 fd 中读取长度不超过n-1 个字节的数据送入buffer 指向的
12、存区域C从文件 fd 中读取长度不超过n 个字符送入 buffer 指向的存区域D从文件 fd 中读取长度不超过n-1 个字符送入 buffer 指向的存区域第二部分:简单程序(12 项,共 30 分)21下列程序main()int x,y,z;x=y=2;z=3;y=z+-1;printf(“%d t”,x,y);y=+x-1;printf(“%d n”,x,y);y=z-1;printf(“%d t”,z,y);y=-z-1;printf(“%d n”,z,y);运行后输出的数据为?_。A.3 1 4 2 B.3 1 3 3 C.2 2 3 2 D.2 1 3 2 2 4 1 3 2 4
13、2 2 3 3 2 1 1 3 1 2 22.下列程序main()int i,j;char*a,c;a=”computer”;printf(“%s”,a);for(i=0,j=7;icomputer B.computer-retupmoc a3=u a5=m C.computer-retupmoc D.computer-retupmoc a4=p a2=t 23.下列程序int sum(int n)int p=1,s=0,i;for(i=1;i=n;i+)s+=(p*=i);return s;main()printf(“sum(5)=%dn”,sum(5);运行后输出的数据为 _ _ A.su
14、m(5)=151 B.sum(5)=152 C.sum(5)=153 Dsum(5)=155 24.下列程序main()static int a=5,6,7,3,2,9;int s1,s2,i,*ptr;s1=s2=0;ptr=&a0;for(i=0;i5;i+2=2)s1+=*(ptr+i);s2+=*(ptr+i+1);printf(“s1=%d,s2=%dn”,s1,s2);运行后输出的数据为 _ A.s1=18,s2=14 B.s1=14,s2=32 C.s1=14,s2=18 D.s1=15,s2=19 25.下列程序int c=1;main()static int a=5;int
15、b=6;printf(“a=%d b=%d c=%dn”,a,b,c);func();printf(“a=%d,b=%d,c=%dn”,a,b,c);func();func()static int a=4;int b=10;a+=2;c+=10;b+=c;printf(“a=%d,b=%d,c=%dn”,a,b,c);运行后输出的数据为 _ _.A.a=5 b=6 c=1 B.a=5 b=6 c=1 a=6 b=21 c=11 a=7 b=17 c=11 a=5 b=6 c=11 a=5 b=6 c=11 a=8 b=31 c=21 a=9 b=17 c=21 C.a=5 b=6 c=1 D.
16、a=5 b=6 c=1 a=6 b=21 c=11 a=7 b=17 c=11 a=6 b=21 c=11 a=7 b=17 c=11 a=8 b=31 c=21 a=9 b=38 c=21 26已知struct student char name;int student_n;char grade;struct student temp,*p=&temp;temp.name=”chou”;则下面不正确的是 _。表达式值A.pname chou B.(*p)name+2 h C.*pname+2 e D.*(pname+2)o 27.下列程序#define MAX 10 main()int i,
17、sum,a=1,2,3,4,5,6,7,8,9,10;sum=1;for(i=0;iMAX;i+)sum-=ai;printf(“SUM=%d”,sum);程序运行结果是:A.SUM=55 B.SUM=-54 C.SUM=-55 D.SUM=54 28.下列程序void inv(int*x,int n)int*p,t,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;ip;i+,j-)t=*i;*i=*j;*j=t;return;main()static int i,a10=3,7,9,11,0,6,7,5,4,2;inv(a,10);for(i=0;i10;i+)
18、printf(“%d,”,ai);程序运行结果:A.0,2,3,4,5,6,7,7,9,11 B.11,9,7,7,6,5,4,3,2,0 C.3,7,9,11,0,6,7,5,4,2 D.2,4,5,7,6,0,11,9,7,3 29.下列程序main()int a10,b10,*pa,*pb,i;pa=a;pb=b;for(i=0;i3;i+,pa+,pb+)*pa=i;*pb=2*i;printf(“%d n”,*pa,*pb);printf(“n”);pa=&a0;pb=&b0;for(i=0;i3;i+)*pa=*pa+i;*pb=*pb*i;printf(“%d n”,*pa+,*
19、pb+);运行后输出的数据为 _。A.0 0 B.0 0 C.0 0 D.0 0 1 2 1 2 1 2 2 2 2 4 2 4 2 4 2 4 0 0 0 0 0 0 0 0 2 2 2 2 1 2 1 2 4 8 2 4 2 4 4 8 30.下列程序copy_string(from,to)char*from,*to;while(*from)*to+=*from+;*to=0;main()static char s1=”c_program.”;static char s280;copy_string(s1,s2);printf(“%sn”,s2);copy_string(“123”,s2)
20、;printf(“%sn”,s2);运行后输出的数据为()。A.c_program 123 B.123 C.c_program123 D.c_program 123 31.下列程序:#include main()char a40,b40;int i,j;printf(“Enter the string:”);scanf(“%s”,a);i=j=0;while(ai!=0)if(!(ai=0&ai=9)bj=ai;j+;+i;bj=0;printf(“%s”,b);运行后输出的结果是()。A.把键盘输入的字符串显示在屏幕上B.把键盘输入的字符串中的数字字符删掉,然后显示该字符串C.把键盘输入的字
21、符串中的字符0 和 9 删掉,然后显示该字符串D.只保留由键盘输入的字符串中的字母数字,然后显示该字符串32下列程序#include main()char a80;int i,j;printf(“Enter the string:”);scanf(“%s”,a);i=0;while(ai!=0)if(ai=A&ai=Z)ai=ai-A+a;printf(“%s”,a);运行后输出的结果是()。A.把键盘输入的字符串中的大写字母变换成小写字母,然后显示变换后的字符串。B.把键盘输入的字符串中的数字字符删除掉,然后显示该字符串。C.把键盘输入的字符串中的小写字母变换成大写字母,然后显示变换后的字符
22、串。D.把键盘输入的字符串原封不动地显示在屏幕上。第二卷说明:(1)第二卷含二大题,均属填空题,每题各有5 个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C 语言程序。(2)每空栏填对得 3 分,两大题共 10个空栏,全填对得30 分。试题一一个整数称为完全平方数,是指它的值是另一个整数的平方。如81 是个完全平方数,因为它是9的平方。下列程序是在三位的正整数中寻找符合下列条件的整数:它既是完全平方数,且三位数字中又有两位数字相同:例如144(12*12)、676(26*26)等,从程序中找出并输出所有满足上述条件的三位数。程序如下:main()int n
23、,k,a,b,c;for(k=1;k+)_ if(n100)_ if(n1+2&2|2*44-!0 后,x 的值为()。(A)-l(B)O(C)1(D)5 6、以下变量 x、y、z 均为 double 类型且已正确赋值,不能正确表示数学式子:(x)/(yz)的 c 语言表达式是()。(A)x/y*z(B)x*(1/(y*z)(C)x/y*1/z(D)x/y/z 7、设有以下说明语句struct ex int x;float y;char z;example;则下面的叙述不正确的是()。(A)struct 是结构体类型的关键字(B)example 是结构体类型名(C)x,y,z 都是结构体成员名
24、(D)struct ex 是结构体类型8、假定 w、x、y、z、m 均为 int 型变量;有如下程序段:w=1;x=2;y=3;z=4;m=(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;则该程序段执行后,m 的值是()。(A)4(B)3(C)2(D)1 9、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。(A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回实参(D)传递方式由用户指定10、以下定义语句中,错误的是()。(A)int a=1,2;(B)char*a3;(C)char s10=text;(D)int n=5,an;11、下列程厅执
25、行后的输出结果是()。main()char arr24;strcpy(arr,you);strcpy(arr1,me);arr03=&;printf(%sn,arr);(A)you&me(B)you(C)me(D)err 12、标有/*/的语句的执行次数是()。int y,i;for(i=O;ipup.sex(C)(*p).pup.sex(D)(*p).sex 18、若已定义了如下的共用体类型变量x,则 x 所占用的存字节数为()。union data int i;char ch;double f;x;(A)7(B)11(C)8(D)10 19、若有下面的说明和定义:struct test i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 设计 试题 答案 完整版
限制150内