当前位置:文档之家› C语言期末考试作业

C语言期末考试作业

习题一1、执行 int a=10; printf(“%d”,a++); 后输出结果和 a 的值分别是 ( )A. 11 和 10B. 11 和 11C. 10 和 11D. 10 和 102、能正确表达逻辑关系或的C语文表达式是 ( );;; D. a >= 10 || a <= 03、 char a[]={'A','B','C'};char b[]="ABC";数组a和数组b 占用的内存空间关系是 ( )A. 一样B. a的空间小于b的空间C. 无法比较D. a的空间大于b的空间4、在C 语言中,形参的缺省存储类是()。

A. autoB. registerC. staticD. extern5、C 语言源程序的基本单位是 ( ).A. 过程B. 函数C. 子程序D. 标识符6、以下标识符中,不能作为合法的C 用户定义标识符的是()。

A. answerB. toC. signedD. _if7、算法的有穷性是指 ( )A. 算法程序的运行时间是有限的B. 算法程序所处理的数据量是有限的C. 算法程序的长度是有限的D. 算法只能被有限的用户使用8、以下选项中可作为C语言合法常量的是 ( )A. -80B. -080C. -8e1.0D. -80.0e9、若有语句:char *line[5];, 以下叙述中正确的是 ( )A. line是一个数组, 每个数组元素是一个基类型为char为指针变量B. line是一个指针变量,该变量可以指向一个长度为5的字符型数组C. line是一个指针数组,语句中的*号称为间址运算符D. line是一个指向字符型函数的指针10、下面程序的输出结果是 ( )main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A. 3B. 4C. 1D. 2二、填空题(每空 3 分,共 30 分)1、算法是。

2、算法的特点是。

3、C语言中,标识符的构成规则。

4、C语言中,一个函数包括:和。

5、关键字 sizeof 是。

6、指针与指针变量的无别是:。

7、一个结构型变量的存储空间是:。

8、 break; 和 continue; 的区别是:。

9、变量的作用域是指:。

.三、判断是非(每小题 2 分,共 20 分)1、C语言中字符串只能存放在字符数组中。

( )2、printf和scanf都不是C语言语句。

( )3、关系运算符 <= 的优先级高于 = = 的优先级。

( )4、函数的定义不能嵌套,但调用可以嵌套。

( )5、有定义int *p[4], (*q)[4];p 和 q并无本质区别,只是C语言灵活性的表现而已。

( )6、for (表达式1; 表达式2; 表达式3)中的三个表达式都可以省。

( )7、在函数中,形式参数与实际参数相互独立,互不影响。

( )8、指针、数组名和函数名都是地址。

( )9、while语句的循环体至少要执行一次。

( )10、C语言中通过函数调用只能获取一个返回值。

( )四、编程题(每小题 10 分,共 20 分)1、采用冒泡法对任意 n (n>1)个排序。

要求: 用子函数void sort(int *p, int n)实现。

2、写一个函数insert,用来向一个动态链表插入结点。

习题二一、选择题(每小题3分,共 30 分)1、执行 int a=10; printf(“%d”,++a); 后输出结果和 a 的值分别是 ( )A. 11 和 10B. 11 和 11C. 10 和 11D. 10 和 102、能正确表达逻辑关系:与的C语文表达式是 ( );;; D. a >= 10 && a <= 03、 char a[]={'A','B','C'};char *b="ABC";数组a和数组b 占用的内存空间关系是 ( )A. 一样B. a的空间小于b的空间C. 无法比较D. a的空间大于b的空间4、在C 语言中,形参的缺省存储类是()。

A. autoB. registerC. staticD. extern5、C 语言源程序的基本单位是 ( )。

A. 过程B. 函数C. 子程序D. 标识符6、以下标识符中,不合法的C 用户定义标识符的是()。

A. answerB. -toC. signedD. _f7、算法的有穷性是指 ( )A. 算法程序的运行时间是有限的B. 算法程序所处理的数据量是有限的C. 算法程序的长度是有限的D. 算法只能被有限的用户使用8、以下选项中可作为C语言合法常量的是 ( )A. -80B. -080C. -8e1.0D. -80.0e9、若有语句:char (*line)[5];, 以下叙述中正确的是 ( )A. line是一个数组, 每个数组元素是一个基类型为char为指针变量B. line是一个指针变量,该变量可以指向一个长度为5的字符型数组C. line是一个指针数组,语句中的*号称为间址运算符D. line是一个指向字符型函数的指针10、下面程序的输出结果是 ( )main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+10));}A. 9B. 10C. 1D. 不确定二、填空题(每空 3 分,共 30 分)1、程序是一组计算机能识别和执行的。

2、将 10-25 用C语言规定的输入方式,应输入。

3、C语言中,标识符的构成规则。

4、C语言中,一个函数包括:和。

5、关键字 sizeof 是的运算符。

6、指针与指针变量的无别是:。

7、结构化程序设计包括哪三种结构:,和。

三、判断是非(每小题 2 分,共 20 分)1、C语言中字符串可用字符串变量来存放。

( )2、printf和scanf都是C语言中标准的输出/输入语句。

( )3、关系运算符 <= 的优先级高于 = = 的优先级。

( )4、函数的定义的定义和调用一样, 可以嵌套。

( )5、有定义int *p[4], (*q)[4];p 和 q并无本质区别,只是C语言灵活性的表现而已。

( )6、for (表达式1; 表达式2; 表达式3)中的第二个表达式绝对不能省。

( )7、在函数中,形式参数与实际参数可以指向同一片区域。

( )8、指针变量,数组名和函数名都是地址。

( )9、do…while语句的循环体至少要执行一次。

( )10、C语言中,函数调用可以返回多个值。

( )四、编程题(每小题 10 分,共 20 分)1、采用选择排序法对任意 n (n>1)个排序。

要求: 用子函数void sort(int *p, int n)实现。

2、写一个函数print,用来输出一个动态链表。

习题三一、单项选择题(每小题 2 分,共 60 分,请将答案写在该题后的答题表格中)1. 以下叙述正确的是( )A. 在C程序中,main函数必须位于程序的最前面B. C程序中的每行只能写一条语句C. 结构化程序由顺序、选择和循环等三种基本结构组成D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误2. 下列变量名中合法的是( )A. X.Y.TomB. 3a6bC. _6ª7bD. $ABC3. 已知各变量的类型如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下不符合C语言语法的表达式是( )A. a+=a-+(b=4)*(a=3)B. a=a*3+2C. x%2D. y=float(i)4. 字符串常量" \\\22a,0\n"的长度是 ( )A. 8B. 7C. 6D. 55. 表达式13%5的值为( )A. 2B. 3C. 5D. 16. 若有以下程序段int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是( )A. 0B. 0.5C. 1D. 27. 若给定条件表达式(M)?(a++):)(a--),则其中表达式(M)( )A. 和 (M==0)等价B. 和(M==1)等价C. 和(M!=0)等价D. 和(M!=1)等价8. 有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c),为使变量a的值为3,b的值为7,c的值为5,从键盘上输入的数据的正确格式是 ( )A. 375<CR>B. 3,7,5<CR>C. a=3,b=7,c=5 <CR>D. a=3 b=7 c=5<CR>9. 以下程序的输出结果是( )#include <stdio.h>void main(){ int x=2,y=-1,z=2;if (x<y)if (y<0) z=0;else z+=1;printf("%d\n",z)}A. 3B. 2C.1D. 010. 有以下程序:#include <stdio.h>void main(){ int a=15,b=21,m=0;switch(a%3){ case 0: m++; break;case 1: m++;switch(b%2){ default: m++;case 0: m++; break;}}printf("%d\n",m);}程序运行后的输出结果是( )A. 1B. 2C. 3D. 411. 有以下程序:#include <stdio.h>void main (){ int i,s=0;for (i=1; i<10; i+=2) s+=i+1;printf("%d\n",s);}程序执行后的输出结果是 ( )A. 自然数1~9的累加和B. 自然数1~10的累加和C. 自然数1~9中的奇数之和D. 自然数1~9中的偶数之和12. 若有以下程序,运行时输入"china? ",其执行结果是( )#include <stdio.h>void main (){ char c;c=getchar();while (c!=’?’){ putchar();c=getchar();}}A. chinaB. china?C. ChinaD. China?13. 以下数组定义中错误的是( )A. int a[2][3]B. int b[][3]={0,1,2,3};C. int c[100][100]={0};D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}};14. 以下叙述正确的是( )A. C语言程序总是从第一个定义的函数开始执行B. 在C语言程序中,要调用的函数必须在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分15. 已知:char str1[10]= "abcde",str2[10]= "xyz"; 则下列C语句的输出结果是()printf("%d",strlen(strcpy(str1,str2)));A. 3B. 5C. 8D. 916. 以下程序的输出结果是( )#include <stdio.h>void main (){ char ch[3][10]={ "AAAA","BBB","CC"};printf(" \" %s\" \n",ch[1]);}A. "AAAA"B. "BBB"C. "BBBCC"D. "CC"17. 若要求从键盘读入含有空格字符的字符串,应使用函数( )A. getc()B. gets()C. getchar()D. scanf()18. C语言中,程序的基本单位是( )A. 函数B. 文件C. 语句D. 程序段19. 下列关于C语言函数参数的叙述正确的是( )A. 实参与其对应的形参各占据独立的存储单元B. 实参占用存储单元,形参是虚拟的,不占用存储单元C. 只有当实参单元与其对应的形参单元同名时,才共占用一个存储单元D. 形参值的改变会影响实参的值20. 若函数的调用形式为f((x1,x2,x3),(y1,y2)),则函数形参的个数是( )A. 2B. 3C.4D. 521. C程序中,若未对变量进行存储类别的说明,则隐含类别是( )A. staticB. autoC. registerD. extern22. 变量的指针,其含义是指该变量的( )A. 值B. 地址C. 名D. 一个标志23. 若指针p已正确定义并指向如图所示的存储单元:则执行语句*p++;后,*p的值是( )a[0] a[1] a[2] a[3] a[4]A. 20B. 30C. 21D. 3124. 若有定义:int n=2,*p=&n,*q=p; 则以下非法的赋值语句是( )A. p=py;B. *p=*q;C. N=*q;25. 设有以下程序段:char s[]= "china";char *p=s;则以下叙述正确的是( )A. s的内容和p的内容相等B. s和p完全相同C. *p等于"china"D. *p与s[0]相等26. 关于malloc函数,说法错误的是()A. malloc函数的功能是在内存中开辟连续的一段空间B. malloc函数的参数为开辟的空间的大小C.malloc函数的返回值为指向开辟空间的指针D.malloc函数可以开辟任意大小的空间27. 若定义结构体变量“struct st a;”,以下语句正确的是()A.st.num=1; B. a.num=1001; C. a=10; D. a={1,2};28. 若有以下定义:struct person { char name[9]; int age; }struct person class[10]={ "John",17, "Paul",19, "Mary",18, "Adam",16};根据上述定义,能输出字母M的语句是( )A. printf("%c\n",class[3].name);B. printf("%c\n",class[3].name[1]);C. printf("%c\n",class[2].name[1]);D. printf("%c\n",class[2].name[0]);29. 以下可用于向文件输出数据的函数是( )A. fscanfB. freadC. fgetcD. fputc30. 下列关于文件操作的叙述正确的是( )A. 对文件的操作必须先打开文件B. 对文件的操作必须先关闭文件C. 对文件的操作后可以不用关闭文件D. 上述三种答案都不正确二、填空题(每小题 1 分,共 10 分)1. 若有以下定义:double x; int k;在程序中变量中的值没有误差。

相关主题