南昌航空大学2009—2010学年第一学期期末考试课程名称:C语言A闭卷A1卷120分钟一、单项选择题(每题2分,共30分)1、以下选项中属于C语言的数据类型是()A、复数型B、逻辑型C、双精度型D、集合型2、以下程序的输出结果是()A、0B、29C、31D、无定值fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf(%d,a);}3、当调用函数时,实参是一个数组名,则向函数传送的是()A、数组的长度B、数组的首地址C、数组每一个元素的地址D、数组每个元素中的值4、若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()A、scanf(%d%d%d,&a,&b,d);B、scanf(%d%d%d,&a,&b,&d);C、scanf(%d%d%d,a,b,d);D、scanf(%d%d%d,a,b,*d);5、在“文件包含”预处理中,当#include后的文件名用“”双引号时,寻找包含文件的方式是()A、直接按系统指定的标准方式搜索目录B、先在源程序所在目录搜索,再按设定的标准方式搜索C、仅仅搜索源程序所在目录D、仅仅搜索当前目录6、设有以下说明语句structex{intx;floaty;charz;}example;则下面的叙述中不正确的是()A、struct是结构体类型的关键字B、example是结构体类型名C、x,y,z都是结构体成员名D、structex是结构体类型名7、以下程序的输出结果是()main(){inta=5,b=4,c=6;printf(%d\n,ab?(ac?a:c):(b));}A、5B、4C、6D、不确定8、以下不能正确进行字符串赋初值的语句是()A、charstr[5]=good!B、charstr[]=good!;C、char*str=good!D、charstr[5]={'g','o','o','d'}9、下叙述正确的是()A、do-while语句构成的循环不能用其它语句构成的循环代替。B、do-while语句构成的循环可以用break语句退出。C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。D、用do-while语句构成的循环,在while后的表达式为零时结束循环。10、以下说法中正确的是A、C语言程序总是从第一个的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分11、下列程序的输出结果是#includestdio.h#includestring.hmain(){charstr1[20]=abcd,str2[10]=ABCD,*p1,*p2;p1=str1;p2=str2;printf(%s,strcat(p1+1,p2+2));}A、abcdABCDB、abcdCDC、bcdCDD、bcdABCD12、以下叙述中不正确的是A、在不同的函数中可以使用相同名字的变量B、函数中的形式参数是局部变量C、在一个函数内定义的变量只在本函数范围内有效D、函数中的实际参数与形式参数是双向传递13、下列描述中不正确的是A、字符型数组中可以存放字符串B、可以对字符型数组进行整体输入、输出C、可以对整型数组进行整体输入、输出D、不能在赋值语句中通过赋值运算符=对字符型数组进行值14、若用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是_________.A、”ab+”B、”wb+”C、”rb+”D、”ab”15、以下对一组整型数组a的正确说明是____________.A、inta(10);B、intn=10,a[n];C、intn;D、#defineSIZE10scanf(“%d”,&n);inta[SIZE];inta[n];二、填空题(每空1分,共10分)1、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值________。2、设有说明语句:chara='\72';则变量a包含_________个字符。3、选择结构语句有_______、________两种语句。4、设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为_____________。5、定义一指向字符型数据的指针变量p的语句是。6、请填写程序运行结果________________.#defineMUL(x)(x)*(x)main(){intx;x=MUL(1+2)+3;printf(“%d\n”,x);}7、表达式0x13|0x17的值是_______________.8、请写出b≤x≤a的C表达式______________________。9、若有数组charstr[]=”\nabcd\b”,则strlen(str)的值为_______________。三、程序填空(每空2分,共10空,共20分)1、以下程序从输入数据中统计正整数和负整数的个数.用输入0来结束输入变量i存放正整数个数,变量j存放负整数的个数.voidmain(){inti,j,n;i=j=0;scanf(“%d”,&n);while(__________){if(n0)i++;if(n0)j++;_______________________;}printf(“i=%4dj=%4d\n”,i,j);2、下面程序的功能是将字符串b复制到字符串a.请填空。scopy(char*s,char*t){inti=0;while(____________){___________________;t++;s++;}_______________;}main(){chara[20],b[10];scanf(“%s”,b);scopy(____________);puts(a);}3、下面程序用变量count统计文件中字符的个数,请填空。#includestdio.hmain(){FILE*fp;longcount=0;if((fp=fopen(“letter.txt”,_________))==NULL){printf(“cannotopenfile\n”);exit(0);}while(____________!=EOF)_____________;printf(“count=%ld\n”,count);____________________;}四、程序分析题1、分析程序的运行结果.voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(a=%d,b=%d\n,a,b);}