第七届全国信息技术应用水平大赛预赛试题C语言程序设计一、单选题(60题,1分/题,共60分)[1]、下列选项中,叙述不正确的是()。【答案】B【分数】1分【选项】A、用typedef可以定义各种类型名,但不能定义变量B、typedef和#define都是在程序预编译时处理的C、用typedef只是将已存在的类型用一个新的标识符来代表D、使用typedef有利于程序的通用和移植[2]、若有如下定义:inta=2,*p;floatx=1,y=2;chare=‘w’;则以下用法不正确的是()。【答案】B【分数】1分【选项】A、printf(%c,e+a);B、p=&x;C、a*=y+x;D、x=y=e;[3]、下列5个符号串中,属于C语言合法标识符的共计()个。_1_2_3a-b-cfloat9cda3b4【答案】B【分数】1分【选项】A、1B、2C、3D、4[4]、intx=20;printf(%d\n,~x);以上程序段运行后的输出结果是()。【答案】B【分数】1分【选项】A、235B、-21C、-20D、-11[5]、若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值(结果保留两位小数)是()。【答案】A【分数】1分【选项】A、2.50B、2.75C、3.50D、0.00[6]、若有如下程序:voids(char*m,intn){*m=*m+3;n=n+3;printf(%c,%c,,*m,n);}voidmain(){charp=‘b’,q=‘B’;s(&q,p);printf(%c,%c\n,p,q);}则程序运行后的输出结果是()。【答案】A【分数】1分【选项】A、E,e,b,EB、e,E,b,FC、E,e,e,ED、e,E,b,E[7]、桌上有a、b、c、d、e五个黑白球,a=0表示白球,a=1表示黑球,其他球同样定义。则以下能表示a是黑球,其余至少有三个白球的表达式是()。【答案】C【分数】1分【选项】A、a&&(b+c+d+e)==1B、a&&(b+c+d+e)2C、a&&(b+c+d+e)=1D、!a&&(b+c+d+e)==3[8]、C语言中运算对象必须是整型的运算符是()。【答案】C【分数】1分【选项】A、/B、++C、%D、!=[9]、以下程序的输出结果是()。#includestdio.hmain(){inti,j=4;for(i=j;i=2*j;i++)switch(i/j){case0:case1:printf(*);break;case2:printf(#);break;}}【答案】D【分数】1分【选项】A、*###B、**##C、***#D、****#[10]、以下程序的输出结果是()。main(){intw=4,x=3,y=2,z=1;if(xy&&!(z==w))printf(%d\n,(wx?w:zy?z:x));elseprintf(%d\n,(wx?w:zy?z:x));}【答案】A【分数】1分【选项】A、1B、2C、3D、4[11]、关于C语言形参与实参,以下说法正确的是()。【答案】A【分数】1分【选项】A、实参和与其对应的形参各占用独立的存储单元B、实参和与其对应的形参共占用同一个存储单元C、只有当实参和与其对应的形参同名时才共占用同一个存储单元D、形参是虚拟的,从不占用存储单元[12]、以下宏定义中,不会引起二义性的共计()个。(1)#definePOWER(x)x*x(2)#definePOWER(x)(x)*(x)(3)#definePOWER(x)(x*x)(4)#definePOWER(x)((x)*(x))【答案】A【分数】1分【选项】A、1B、2C、3D、4[13]、以下程序的输出结果是()。main(){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);}【答案】C【分数】1分【选项】A、x=4B、x=6C、x=8D、x=12[14]、已知有以下说明:inta[]={8,1,2,5,0,4,7,6,3,9};那么a[*(a+a[3])]的值为()。【答案】A【分数】1分【选项】A、0B、4C、5D、7[15]、有定义如下:structpupil{charname[20];intage;intsex;}pup[5],*p;p=pup;以下scanf函数调用语句中,对结构体变量成员的引用不正确的是()。【答案】D【分数】1分【选项】A、scanf(%s,pup[0].name);B、scanf(%d,&pup[0].age);C、scanf(%d,&(p-sex));D、scanf(%d,p-age);[16]、以下程序运行后的输出结果是()。#includestdio.hstructNODE{intnum;structNODE*next;};main(){structNODE*p,*q,*r;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p-num=10;q-num=20;r-num=30;p-next=q;q-next=r;printf(%d\n,p-num+q-next-num);}【答案】D【分数】1分【选项】A、10B、20C、30D、40[17]、当a=2,b=3,c=4,d=5时,执行下面一段程序后x的值为()。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=4;elsex=5;【答案】C【分数】1分【选项】A、2B、3C、4D、5[18]、设有程序段unsignedchark;while(k0)k++;printf(%d\n,k);则该程序段的输出结果为()。【答案】D【分数】1分【选项】A、-1B、-127C、-128D、0[19]、若有以下定义:intx[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*p)[3]=x;则能够正确表示数组元素x[2][1]的表达式是()。【答案】C【分数】1分【选项】A、*((*p+2)[1])B、(*p+2)+1C、*(*p+7)D、*(*p+2)+1[20]、以下程序运行后的输出结果是()。#includestdio.hvoidfun(int*p){inta=10;p=&a;++a;}voidmain(){inta=5;fun(&a);printf(%d\n,a);}【答案】A【分数】1分【选项】A、5B、6C、10D、11[21]、以下程序运行后的输出结果是()。#includestdio.hintsub(int*t,intn){int*p1,*p2;for(p1=t,p2=t;p1-tn;p1++)if(*p1*p2)p2=p1;return(*p2);}voidmain(){inta[9]={9,36,19,39,26,5,6,33,15};printf(%d\n,sub(a,9));}【答案】A【分数】1分【选项】A、5B、9C、15D、39[22]、下面程序的运行结果是()。#includestdio.h#includestring.hfun(char*w,intn){chart;ints1,s2;s1=0;s2=n-1;while(s1s2){t=w[s1++];w[s1]=w[s2--];w[s2]=t;}}main(){charp[]=1234567;fun(p,strlen(p));puts(p);}【答案】C【分数】1分【选项】A、7654321B、1714171C、1711717D、7177171[23]、C语言规定函数返回值的类型由()。【答案】A【分数】1分【选项】A、在定义时所指定的函数类型所决定B、调用该函数时的主调函数类型所决定C、return语句中的表达式类型所决定D、调用该函数时系统临时决定[24]、有以下程序段:#includestdio.hmain(){inti=1,sum=0,n;scanf(%d,&n);do{i+=2;sum+=i;}while(i!=n);printf(%d,sum);}若使程序的输出值为15,则应该从键盘输入的n的值是()。【答案】D【分数】1分【选项】A、1B、3C、5D、7[25]、以下程序的运行结果是()。voidmain(){chara[]=movie,b[10]=movie;printf(%d%d\n,sizeof(a),sizeof(b));}【答案】C【分数】1分【选项】A、55B、66C、610D、612[26]、以下程序的输出结果是()。#includestdio.hvoidmain(){unsignedchara,b;a=0x0a|3;b=0x0a&3;printf(%d%d\n,a,b);}【答案】B【分数】1分【选项】A、211B、112C、713D、137[27]、以下选项中,能定义s为合法的结构体变量的是()。【答案】C【分数】1分【选项】A、typedefstructabc{doublea;charb[10];}s;B、structABC{doublea;charb[10];}ABCs;C、structabc{doublea;charb[10];}s;D、typedefABC{doublea;charb[10];}ABCs;[28]、以下程序的输出结果是()。main(){inta=0,j;for(j=0;j4;j++){switch(j){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(%d\n,a);}【答案】D【分数】1分【选项】A、10B、13C、20D、36[29]、以下程序功能为输入1个正整数n,计算并输出表达式s的前n项的和:s=1/2-2/3+3/4-4/5+……(-1)n/(n+1)。其中下划线处应填入的正确语句为()。#includestdio.hvoidmain(){intk,flag=1,n;floats=0;scanf(%d,&n);for(k=1;k=n;k++){s=s+______;flag=-flag;}printf(sum=%f\n,s);}【答案】A【分数】1分【选项】A、1.0*k/(k+1)*flagB、flag*n/(n+1)C、-k/(k+1)D、1.0*k/(k+1)[30]、有以下函数:char*fun(char*p){returnp;},该函数的返回值为()。【答案】B【分数】1分【选项】A、不确定值B、参数p中存放的地址值C、一个临时存储单元的地址值D、形参p自身的地址值[31]、以下程序运行后的输出结果是()。main(){inta,b;a=50;b=90;printf(%d\n,(a,b));}【答案】A【分数】1分【选项】A、90B、5090C、50D、100[32]、intx=-20;printf(%d\n,~x);以上程序段的输出结果是()。【答案】A【分数】1分【选项】A、19B、20C、21D、-1[33]、若以下程序所生成的可执行文件名为file1.exe,当输入命令行:FILE1CHINABEIJINGSHANGHAI,执行该程序时,程序的输出结果是()。main(intargc,char*argv[]){while(argc--1){++argv;printf(%s,*argv);}}【答案】A【分数】1分【选项】A、CHINABEIJINGSHANGHAIB、FILE1CHINABEIJINGC、CBSD、