-1-中南大学现代远程教育课程考试复习题及参考答案C语言程序设计一、单项选择题若以下各题所有库函数都可以合法使用,且变量定义如下:intm=5,i=3,j=2,*p,a=8,b=0;intarr[10]={0,1,2,3,4,5,6,7,8,9},td[][3]={1,2,3,4,5,6};floatx=2.5,y=3.0;doublez=0;longn=1;charc=’A’,ch[20]={’a’,’b’,’c’,’\0’,’d’,’\0’};structstudent{intnum;charname[20];floatscore;structstudent*next;}st1,st2,*ps;FILE*fp;1.若将3和10从键盘输入给变量a、x,输入语句为scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(↙表回车):Aa=3,x=10↙B3,10↙C310↙D3,10.0↙2.以下不是死循环的语句是:Afor(;;y+=i++);Bwhile(a)y+=i++;Cdo{y+=i++}while(a0);Dfor(b=0;(c=getchar()!=’\n’);)b++;3.若p=arr;正确的语句是:A*p=arr[10];B*p=arr[2*a];Cp=arr[5];Dp[i]=arr[0];4.若ps=&st1;则下面描述正确的是:Aps-num与st1-num等价。Bps.num与st1.num等价。Cps-num与num等价。Dps-num与st1.num等价。5.语句printf(“%d,aij);的输出结果是:A1B0C8D都不对6.表达式j/i+a%i+x的值是:A6B4.5C6.0D5.57.表达式b||a+i&&ij的值是:A不确定B0.0C1D08.若执行语句a=b+=3*j+(int)x;则b的值为:A1B8C0D8.59.若执行语句a=bj?++i:i++;则a与i的值分别为:-2-A4,4B3,4C4,3D3,310.if(ab)if(c==d)x=8;elsex=1;表示的逻辑关系是:8ab且c=d8ab且c=dAx=Bx=1ab且c≠d1a≥b且c=d8ab且c=d8ab且c=dCx=Dx=1a≥b1ab11.将字符串“WanMing”输入数组ch中,正确的是:A、scanf(“%s”,ch)B、scanf(“%s”,&ch)C、ch=“WanMing”D、gets(ch)12.执行语句printf(“%c”,td[1][0]+’A’)的结果是:A、AB、BC、DD、E13.下列关于main()函数说法正确的是A、C语言程序总是从main()开始执行B、C语言程序可以没有main()函数C、C语言程序可以包含多个main()函数,但必须在不同的模块中D、C语言程序中main()函数不能有形式参数14.下列关于函数说法正确的是A、C语言程序的函数内还可定义其他的函数B、C语言程序的函数内不可再定义其他的函数C、C语言程序的函数不能自己调用自己D、C语言程序中只有同一源文件中的函数才能有调用与被调用关系15.若#definesqu(x)x*x执行语句printf(“result=%d”,squ(i+j));结果为:A、result=36B、36C、result=11D、1116.若#definesqu(x)(x)*(x)执行语句printf(“result=%d”,squ(i+j));结果为:A、result=36B、result=17C、result=11D、result=2517.C语言对宏命令叙述正确的是A、宏替换占用运行时间B、编译程序对宏命令的处理是在对源程序中其它成分编译之前进行的C、宏命令的处理是在程序执行时进行的D、宏命令的处理是在程序连接时进行的18.若执行语句a-=a+=a*=10;a的值为:A、0B、-10C、-100D、100-3-19.若执行语句p=arr;printf(“%d”,*(p+i));输出结果为A、0B、2C、3D、120.若执行printf(“%s”,ch);结果为:A、’abc’B、abcC、abcdD、abc\0d21.若对数组进行初始化:charcarr[]={’s’,’t’,’u’,’d’,’e’,’n’,’t’},barr[]=”student”;则正确的是A、carr与barr长度相同B、carr比barr长C、carr与barr相同D、carr比barr短22.若有说明语句int(*p)[N];则p是A、N个指向整型变量的指针B、可指向有N个整型元素的一维数组的指针C、指向N个整型变量的函数指针D、有N个指针元素的一维指针数组23.若有说明语句int*f();则函数f是A、f是一个指向整型变量的数组指针B、f返回一个整型数据C、f是一个指向整型变量的函数指针D、f返回一个整型指针,指向函数本身24.若函数f定义如下:voidf(char*d,char*s){while(*d++=*s++);}函数f的功能是:A、串比较B、串复制C、求串长D、串反向25.表达式100+a+’a’+x*z的值的数据类型为A、intB、floatC、doubleD、char26.若要动态申请一个double型内存单元,正确的语句是A、pd=doublemalloc(sizeof(double))B、pd=(*double)malloc(sizeof(double))C、pd=double*malloc(sizeof(double))D、pd=(double*)malloc(sizeof(double))27.若要从键盘上输入67892到变量n中,正确的语句是A、scanf(“%lf”,&n);B、scanf(“%ld”,&n);-4-C、scanf(“%lf”,n);D、scanf(“%d”,&n);28.判断字符变量c是否不为小写英文字母的正确表达式是A、’a’=c=’z’B、c=‘a’&&c=’z’C、’a’≤c≤’z’D、c’a’||c’z’29.下列每组表达式被执行后,结果完全等价的是A、!(b==0)与!(!b)B、b=(a=4,4*5)与b=a=4,4*5C、float(i/j)与floati/jD、0x100与x0&&x10030.表达式(m&1)==(m%2)的值是A、0B、无法确定C、1D、以上都不对31.数学式ln2x+asin(60°)的C语言表达式是A、log(2*x)+a*sin(60)B、ln(2*x)+a*sin(60/180*3.14)C、ln(2*x)+a*sin(60)D、log(2*x)+a*sin(3.14*60/180)32.要打开一个已经存在的非空文件file用于修改,则正确的语句是A、fopen(“file”,”r+”)B、fopen(“file”,”w”)C、fopen(“file”,”a+”)D、fopen(“file”,”r”)33.若打开文件时发生错误,则fopen()函数的返回值是A、1B、0C、不确定D、没有返回值34.调用函数fseek(fp,-25L,2),其操作结果是A、文件位置指针从文件开始处前移25字节B、文件位置指针从文件结尾处后移25字节C、文件位置指针从文件当前位置处前移25字节D、文件位置指针从文件当前位置处后移25字节35.能正确表示a和b同时为正或同时为负的逻辑表达式是A、(a=0||b=0)&&(a0||b0)B、(a=0&&b=0)&&(a0&&b0)C、(a*b0&&(a*b=0)-5-D、a*b036.若x=y=z=1;表达式(x--||++y)&&(z++)执行后,x,y,z的值分别为:A.0,1,1B.0,1,2C.0,2,1D.0,2,237.下列变量的初始化,不正确的是:A.intx,y=5;B.floatx=y=3.5;C.chars[]=”a”;D.inta[][3]={{1},{},{0,9}};38.可以代替while(x!=0)中的条件x!=0的是:A.xB.!xC.x==1D.x!=139.有关函数参数,下列说法不正确的是:A.实参和形参是不同的变量;B.实参可以将数据传给形参;C.形参可以将数据传给实参;D.实参和形参必须个数相等,类型一致。40.为避免嵌套的条件语句if-else的二义性,C语言规定else与if的配对原则是:A.同一行上的未配对ifB.缩排位置相同的未配对ifC.它之前最近的未配对的ifD.它之后最近的未配对if41.对于一个二维数组,以下几种方法中,不能正确表示i行j列元素的是:A.td[i][j]B.*(td[i]+j)C.*(*(td+i)+j)D.*(td+i+j)42.下面语句段不是死循环的是:A.for(i=1;;i++)B.k=0;s=s+i;do{k++;}while(k0);C.i=0;D.a=1;while(1)while(a10){i++;{if(a5)continue;if(i==20)break;}a++;}43.下列字符串中,可以用作变量名的是:A._out2B.12abcC.whileD.stu&344.表达式0a5和0a&&a5的值分别为:A.0和0B.0和1C.1和0D.1和145.下列常数中,符合C语法规则的是:A.‘\’B..5e2C.018D.e346.以下为合法的整型常量的是:A.027aB.0.0C.0x4e3D.3×10247.以下为合法的整型常量的是:A.‘3’B.281C.5afD.‘\101’48.以下为合法的实型常量的是:A.1.5×102B.1e-5C.1e1.5D.E+549.以下为合法的实型常量的是:A.πB..5C.025.3D.050.以下为合法的字符型常量的是:A."A"B.64C.'啊'D.'\n'51.以下为非法的字符型常量的是:A.‘ok’B.‘*’C.‘A’D.‘\111’52.以下为合法的变量定义的是:-6-A.#defineN10B.inta=12,b,c;floatx,y,a=1.5;inta[3*N];C.intm,f(x);D.charc,*pc=&c,n;53.以下为非法的变量定义的是:A.char21cn;B.intk=0,*p=&k;C.inta=b=c=21;D.staticchar[4]=”Good”;54.以下是合法的表达式的是:A.y=mnB.(x+y)++C.x+y=8D.putchar('A')55.以下是非法的表达式的是:A.a+=b*cB.i=0,k=k++C.k==0D.!a||m≤n&&756.下是非法赋值语句的是:A.a+b=0B.pc=&xC.ps-name=”TanJing”D.staticchar[4]=’G’,’o’,’o’,’d’二、程序理解题(指出程序执行的结果)1.#includestdio.hmain(){inti,j,x=0;for(i=0;i2;i++){x++;for(j=0;j3;j++){if(j%2)continue;x++;}x++;}printf(“x=%d\n”,x);}2.#includestdio.hmain(){intk=0,j,x=0;while(k2){++x;for(j=0;j3;j++){if(j%2)break;x++;}k++;++x;}-7-printf(“x=%d\n”,x);}3.#includestdio.hmain(){inta=2,b=7,c=5;switch(a0){case1:switch(b0){case1:printf(“$”);break;case2:printf(“!”);break;}case0:switch(c==5){case0:printf(“*”);break;case1:printf(“#”);break;default:printf(“%”);}default:printf(“&”);}p