C语言程序设计期末考试试题及答案C语言程序设计试题(2008/2009学年第二学期)一.选择题(满分30分,每题2分)1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是D。A.a=b=c+8;B.a+=y+3;C.c++;D.a+b+c2.已知intj,i=1;执行语句“j=i++;”后,变量i的值是B。A.1B.2C.–1D.-23.执行下面程序:#include"stdio.h"voidmain(){inta=1,b=2,c=3;c=(a+=a+2),(a=b,b+3);printf(“%d,%d,%d”,a,b,c);}则输出结果是:A。A.2,2,4B.4,2,3C.5,5,3D.4,2,54.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为D。A.a<>0B.!aC.a=0D.a5.for(j=0;j<11;j++);循环结束后,j的值是B。A.12B.11C.10D.96.C语言中函数返回值的类型由D决定的。A.return语句中的表达式类型B.调用该函数的主调函数的类型C.调用函数时临时决定D.定义函数时所指定的函数类型7.下列说法中正确的是B。A在调用用户自定义函数时,必须对其进行声明。B函数可以返回一个值,也可以什么值也不返回。C说明函数时,必须明确参数的类型和返回值。D在程序设计中空函数没有什么作用。8.若inti=10;执行下列程序后,变量i的正确结果是D。switch(i){case0:i+=1;case10:i+=1;case11:i+=1;default:i+=1;}A.10B.11C.12D.139.下列语句中不正确的字符串赋值或初始化的是C。A.charstr[10]={"strings"};B.charstr[8]={'s','t','r','i','n','g','s','\0'};C.charstr[10];str="strings";D.charstr[]="strings";10.有如下程序:#includevoidmain(){inta=1,b=0,c=0;if(aif(b<0)c=0;elsec++;printf(“%d\n”,c);}该程序的运行结果是D。A.3B.2C.1D.011.在函数调用,对参数传递的说法正确的是A。A实参和形参各占一个独立的存储单元。B实参和形参始终共用一个相同的存储单元。C可以由用户指定实参和形参是否共用一个存储单元。D可以由系统指定实参和形参是否共用一个存储单元12.以下正确的程序段是C。A.charstr1[]="12345",str2[]="abcdef";strcpy(str1,str2);B.charstr[10],*st="abcde";strcat(str,st);C.charstr[10]="",*st="abcde";strcat(str,st);D.char*st1="12345",*st2="abcde";strcat(st1,st2);13.若有定义:int*p[4];则标识符pB。A.是一个指向整型变量的指针B.是一个指针数组名C.是一个指针,它指向一个含有四个整型元素的一维数组D.说明不合法装订线14.以下程序的运行结果是C。typedefunion{longa[1];intb[2];charc[8];}TEST;TESTm;main(){printf(“%d\n”,sizeof(m));}A.32B.16C.8D.2415.设有以下结构体类型:structst{charname[8];intnum;floats[4];}student[50];并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件file.txt中,以下不正确的形式是C。A.fwrite(student,sizeof(structst),50,fp);B.fwrite(student,50*sizeof(structst),1,fp);C.fwrite(student,25*sizeof(structst),25,fp);D.for(i=0;i<50;i++)fwrite(student+i,sizeof(structst),1,fp);二、填空题(满分20分,每空2分)1.每个C语言编写的程序必须有一个,并且只能有一个主函数。2.设x和y均为int型变量,且x=1,y=2,则表达式3+x/y的值为3。3.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是4。4.设x=0xAB,若要通过x|y使x低4位置1,高4位不变,则y=0x0F。5.测试char型变量m的最高位数据是否为1的表达式是a&0x80。6.若x=2,y=-3则x&&y的结果是1。7.与二进制数101等值的十进制数为5。8.定义inti=1;执行语句while(i++<5);后,i的值为6。9.下面程序的运行结果为22222。#includevoidmain(){inti=2,j=5,s;s=i;for(;--j;)s=s*10+i;printf(“%d”,s);}10.写出程序的执行结果:i=10,j=11main(){inti=0,j=0;while(i<10)i++;while(j++<10);printf(“i=%d,j=%d\n”,i,j);}三、读程序写结果(满分16分,每题4分)1.判断下面程序的运行结果。#includevoidmain(){inta=0,b=1;intfun(inta,intb);printf("%d\n",fun(a,b));printf("%d\n",fun(a,b));}intfun(intm,intn){statics=1;s++;return(s*(m+n));}2程序运行的结果为:3。装订线2.以下程序的输出结果是3,2。#inc...