1武汉理工大学成人高等教育试卷(/学年学期)(C语言程序设计)(A卷)函授站:学习形式:函授□√夜大□脱产□考核方式:考试□√考查□层次:□高起本□专升本□高起专□高职□√考试形式:闭卷□√开卷□机试□笔试□(统考、非统考)专业年级:学号:姓名:题号一二三四五六七八总分得分…一、填空题:(每空2分,共30分)1、源程序经过编译后产生的结果称为,其扩展名为。2、一个C语言函数由和两部分组成。3、在内存中应该开辟个字节来存放一个字符。4、字符串”ab\n\\012\\\’”的长度是。5、以下程序的输出结果是。#includestdio.hmain(){inti=6,j;j=(++i)+(i++);printf(“j=%d\n”,j);}6、有intx,y;执行y=(x=1,++x,x+2)后,赋值表达式的值为。7、C语言源程序的语句分隔符是。8、字符型常量在内存中存放的是该字符对应的。9、设x,y,z均为int型变量,请写出描述”x,y和z中有两个为负数的表达式”:。10、下列程序段中循环体的执行次数是。a=10;b=0;do{b+=2;a-=2+b;}while(a=0);11、定义:inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是,a[2][1]得2到的初值是。12、下面程序段的运行结果是。charx[]=”theteacher”;i=0;while(x[++i]!=’\0’)if(x[i-1]==’t’)printf(“%c”,x[i]);二、选择题:(每题2分,共30分)1、在C程序中,main()的位置()。A、必须作为第一个函数B、必须作为最后一个函数C、可以任意D、必须放在它所调用函数之后2、下列字符中不属于转义字符的是()。A、\nB、\tC、\bD、\k3、下面对变量说明正确的是()。A、Inta,b,c;B、intx,floaty;C、inta,x;D、inta,x4、以下正确的叙述是()。A、在C程序中,每行中只能写一条语句。B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数。C、在C程序中,无论是整数还是实数,都能被准确无误地表示。D、在C程序中,运算符%只能用于整数运算。5、若以下变量均是整型,且num=sum=7,则计算表达式sum=num++,sum++,++num后的值为()。A、7B、8C、9D、106、设x,y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x,y和z的值是()。A、x=10,y=15,z=10B、x=10,y=10,z=10C、x=10,y=10,z=15D、x=10,y=5,z=107、变量的类型说明如下:inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;则以下符合C语言语法的表达式是()。A、a+=a-=(b=4)*(a=3)B、a=a*3=2C、x%(-3)D、y=float(i)8、以下说法正确的是()。A、输入项可以为一个实型常量,如scanf(“%f”,3.5);B、只有格式控制,没有输入项也能进行正确输入,如scanf(“a=%d,b=%d”);C、当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D、当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);9、以下if语句语法正确的是()。A、if(x0)printf(“%f”,x)B、if(x0){x=x+y;printf(“%f”,x)}3Elseprintf(“%f”,-x);elseprintf(“%f”,-x);C、if(x0){x=x+y;printf(“%f”,x);};D、if(x0){x=x+y;printf(“%f”,x)}Elseprintf(“%f”,-x);10、以下叙述中不正确的是()。A、预处理命令行都必须以#号开始。B、在程序中凡是以#号开始的语句行都是预处理命令行。C、C程序在执行过程中对预处理命令行进行处理。D、#defineIBM_pc是正确的宏定义。11、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’;后,c2的值为()。A、DB、68C、”0”D、C12、下面不正确的字符串常量是()。A、‘abc’B、”12.12”C、”0”D、””13、以下叙述不正确的是()。A、在C程序中,逗号运算符优先级最低。B、在C程序中,APH和aph是两个不同的变量。C、若a,b类型相同,在计算a=b后b中的值将放入a中,而b中的值不变。D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数。14、已知intx=10,y=20,z=30;执行语句if(xy)z=x;x=y;y=z;后,x,y,z的值是()。A、x=10,y=20,z=30B、x=20,y=30,z=30C、x=20,y=30,z=10D、x=20,y=30,z=2015、设x,y均为float型变量,则以下不合法的赋值语句是()。A、++x;B、y=(x%2)/10;C、x*=y+8;D、x=y=0;三、写出程序的运行结果(每题4分,共20分)。1、main(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf(“%d,%d,%d”,I,j,k);}运行结果为2、#includestring.hmain()4{char*p=”abcde\0fghijk\0”;printf(“%d\n”,strlen(p));}运行结果为3、inta=5;fun(intb){staticinta=10;a+=b++;printf(“%d”,a);main(){intc=20;fun(c);a+=c++;printf(“%d\n”,a);}运行结果为4、main(){intx[8]={8,7,6,5,0,0},*s;s=x+3;print(“%d\n”,s[2]);}运行结果为5、main(){inta=-1,b=1,k;if((++a0)&&!(b--=0))printf(“%d%d\n”,a,b);elseprintf(“%d%d\n”,b,a);}运行结果为四、根据要求,完成程序(每个5分,共15分)。1、下面程序的功能是在输入的一批正数中求出最大者,输入0结束循环。#includestdio.hmain(){inta,max=0;5scanf(“%d”,&a);while(){if(maxa)max=a;}printf(“%d”,max);}2、以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。Main(){inta[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};intI,j,c[3][4];for(i=0;i3;i++)for(j=0;j4;j++)for(i=0;j3;i++){for(j=0;j4;j++)}}3、下面程序的功能是在一个数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值),否则输出-1。#includestdio.h#includestring.hmain(){charc=‘a’,t[50];intn,k,j;gets(t);n=;for(k=0;kn;k++)if(){j=k;}elsej=-1;6printf(“%d”,j);}五、编程题:(5分)求sum=1-1/2+1/3-1/4+1/5-…+1/99-1/100。