《C语言程序设计复习题及答案.doc》由会员分享,可在线阅读,更多相关《C语言程序设计复习题及答案.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计复习题及答案一、选择题1.正确的自定义标识符是Aa=2Ba+bCnameDdefault2.变量的指针含意是指变量的A值B地址C存储D名字3.关系表达式axb的正确描述是Aa=x=a&x=a|xbD!(x=b)4.数字12345写入二进制文件和文本文件所占用的字节数分别是A5,5B5,2C2,2D2,55.函数调用语句是:fun (e1,(e2,e3),(e4,e5,e6); 实在参数的个数是A1B2C3D66.设置int a10,*p=a;与a1等价的是A*(a+1)B*(p+1)Cp1D(*p)+7.在C语言中,正确的说法是A.函数内部和外部定义的变量同名是合法的 B.没有r
2、eturn 的函数就失去了返回功能C.变量的定义和声明(也称说明)功能是相同的 D.只要形参和实参都是变量,那么形实结合一定是地址传递 8.下述对C语言字符数组的描术中错误的是A. 字符数组可以存放字符串B. 字符数组中的字符串可以整体输入、输出C. 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D. 不可以用关系运算符对字符数组中的字符串进行比较9.C语言的关键字是ANULLBfileCincludeDtypedef10.正确的自定义标识符是AifBiFCa*bD8bq11.设int a=0,b=5; 执行表达式+a|+b,a+b后,a,b和表达式的值分别是A0,0,0B0,5,5C
3、1,5,6D1,6,712.C语言中最简单的数据类型包括A整型、实型、逻辑型B整型、实型、字符型C整型、字符型、逻辑型D整型,实型,逻辑型,字符型13.有以下程序段int k=0;while(k=1) k+;while循环执行的次数A无限次B有语法错,不能执行C一次也不执行D执行1次14.当调用函数时,实参是一个数组名,则向函数传递的是A数组的长度B数组每一个元素地址C数组的首地址D数组每个元素中的值15.为了向二进制文件尾部增加数据,打开文件的方式应采用AabBrb+CwbDwb+16.设有int a =10,11,12,*p=&a0;则执行完*p+;*p+=1;后a0,a1,a2的值依次是
4、A10,11,12B11,12,12C10,12,12D11,11,1217.设有int i, j, k; 则表达式i=1,j=2,k=3, i&j&k 的值为A0B1C2D318.错误的转义字符是A091BC0D 19.在C语言中,错误的常数是A1E+0.0B5C0xafD0L20.某文件中定义的静态全局变量(或称静态外部变量)其作用域是A只限某个函数 B本文件C跨文件D不限制作用域21.C语言中文件的存取的单位是A函数B语句C字节D记录22.设int a=3,b=4; 执行printf(%d,%d,(a,b),(b,a);后的输出结果是A3,4B4,3C4,4D3,323.设有int i,
5、 j, k; 则表达式i=1,j=2,k=3, i&j&k 的值为A0B1C2D324.函数返回值的类型是由A return决定B调用函数决定C 定义函数时指定Dmain函数决定25.设char s 10, *p; 正确的操作语句是Ap=MBA; Bs+;Cs=MBA;Ds =MBA26.设int a,*p;则语句p=&a;中的运算符“&”的含义是A位与运算B逻辑与运算C取指针内容D.取变量地址27.设有数组定义:char array =China; 则数组 array所占的空间为A4字节B5字节C6字节D7字节二、填空题1.在C语言中,单目运算符的结合方向(运算方向)是_;唯一的一个三目运算
6、符是_。2.能正确表示“当ch为小写字母为真,否则为假”的表达式是 。3.循环语句for(;) printf(OK n);和do printf(OKn); while(0);执行完毕循环,循环次数分别是_和_。4.若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为_5.结构化程序设计的三种基本结构是:选择结构、循环结构和_。6.在C语言中,一个二维数组可以看成若干个_数组。7.文件操作步骤通常是:打开、操作和_。8.一个C语言程序总是从 开始执行9.设宏定义#define D (x) x/x, 则引用D(2+3)后的值是_。10.以下十个运算符+ ! c)?(
7、b+1):(c+2),3后a的值是_。14.FILE * fp;当文件结束时,结束标志EOF值和函数feof(fp)的返回值分别是_和_。15.编译预处理的三种形式除宏定义外,还有_和_。16.语句 int (*p)()的含义是 .17.全局变量放在内存的 区三、阅读程序,写出程序的运行结果(共15分)1.运行结果:_int func(int n) if (n=0)return 0; else if (n=1) return 1; else return n*n+func(n-2); main( ) printf(%5d%5dn,func(4),func(5); change(&a,b); p
8、rintf(a=%d,b=%dn,a,b); 2.运行结果:_main() int i=1; while(i=2;j-) switch(j) case 0: printf(%4s,ABC); case 1: printf(%4s,DEF); case 2: printf(%4s,GHI);break case 3: printf(%4s,JKL); default: printf(%4s,MNO); printf(n); 4.运行结果:_main() char *p,s=ABCDEFG;p=s; while(*p!= 0 ) printf(%sn,p); p+; if(*p!= 0) else
9、 break; 5.运行结果:_main() int a=1,3,5,7,9; int *p=a; printf(“%d,%dn”,*p,*(a+2); printf(“%d,%dn”, *(p+3),*p+); 四、 程序填空(共15分)1. 用循环输出下列形式的数字金字塔。 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2
10、1main ( ) int i, j; for (i=1; i=9 ;i+) for (j=i;j=10;j+) printf( ); /* 输出若干个空格 */ for (j=1; j=1;j-) printf (%2d,j); printf (n); 2. 下面程序将输入的一个字符串按逆序存放。 main() int i, n,temp; ;gets( ); n=strlen(a); ) for(i=0; ;i+) temp=ai; an-i-1=temp; puts(a); 3. 下面程序是用冒泡法对10个数进行从小到大排序的程序。 main( ) int 30 ,i,j,temp; p
11、rintf(请输入10个整数:n); for(i=0;i10;i+) scanf(%d, 31 ); for(i=1;i10;i+) for(j=0; 32 ;j+) if(aj 33 aj+1) temp=aj; 34 ;aj+1=temp; printf(n排好序的10个整数为:n);for(i=0;i10;i+) printf(%5d,a); 4. 打印下列的图形1 2 3 4 5 6 7 8 9 main( ) 2 3 4 5 6 7 8 9 int I,J; 3 4 5 6 7 8 9 for(I=1;I= 9 ;I+) 4 5 6 7 8 9 for(J= I ;J=a & ch=
12、z3. 无限次 1次4. 9005. 顺序结构6. 一维数组7. 关闭8. main函数9. 510. & ,11. 为写打开一个文本文件 为读写打开一个二进制文件12. 关闭13. 314. 真 真15. 条件编译 文件包含16. 定义一个指向函数的指针,函数的返回值为整型17. 静态存储区八、 阅读程序,写出程序的运行结果(共15分)6. 运行结果:_ 20, 25_7. 运行结果:_ 2 4 6 8 10_8. 运行结果:_ MNO JKL MNO GHI_9. 运行结果:_ ABCDEFGCDEFGEFGG_10. 运行结果:_1,5 9,1_九、 程序填空(共15分)5. 用循环输出
13、下列形式的数字金字塔。 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1main ( ) int i, j; for (i=1; i=9 ;i+) for (j=i;j=10;j+) printf( ); /* 输出若干个空格 */ for (j=1; j=1;j-) printf (%2d,j); printf (n);
14、6. 下面程序将输入的一个字符串按逆序存放。 #include stdio.h main() int i, n,temp; a100 ;gets( a ); n=strlen(a); ) for(i=0; in ;i+) temp=ai; ai=an-i-1 an-i-1=temp; puts(a); 7. 下面程序是用冒泡法对10个数进行从小到大排序的程序。 main( ) int a10 ,i,j,temp; printf(请输入10个整数:n); for(i=0;i10;i+) scanf(%d, &a ); for(i=1;i10;i+) for(j=0; j aj+1) temp=a
15、j; aj=aj+1 ;aj+1=temp; printf(n排好序的10个整数为:n);for(i=0;i10;i+) printf(%5d,a); 8. 打印下列的图形1 2 3 4 5 6 7 8 9 main( ) 2 3 4 5 6 7 8 9 int I,J; 3 4 5 6 7 8 9 for(I=1;I= 9 ;I+) 4 5 6 7 8 9 for(J= I ;J=9;J+)printf(%2d,J); 5 6 7 8 9 printf(n); 6 7 8 9 7 8 9 8 9 9十、 编程题(共30分)7. 编写程序,输入一个字符串,求出这个字符串的长度(使用strlen函数直接求解不得分)。8. 编写一个程序,将字符串a复制到b中。(使用strcpy函数不得分)9. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。10. 编写程序, 输入10个学生3门课的成绩, 计算每个学生的平均成绩,按平均成绩降序排列并打印出结果。11. 编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。输入一行字符,统计其中字母字符、数字字符和其原文链接:
限制150内