中科大软院考研复试c语言题库_第1页
中科大软院考研复试c语言题库_第2页
中科大软院考研复试c语言题库_第3页
中科大软院考研复试c语言题库_第4页
中科大软院考研复试c语言题库_第5页
已阅读5页,还剩404页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

页中科大软院考研复试c语言题库一、单选题1、有以下程序#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是______。A:10234B:12344C:12334D:12234答案:C评析:本题考查的是循环的嵌套。本题函数fun的作用是将指定的数组元素(从下标n到下标m)向后移一位。由函数调用"fun(a,2,9);"可知,函数fun用于将a[2]到a[9]的各元素依次向后移一位,移完后,a数组中各元素的值分别为1,2,3,3,4,5,6,7,8,9,10,故输出的前5个数组元素为12334。故本题答案为C。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义2、有以下程序#defineP3voidF(intx){return(P*x*x);}main(){printf("%d\n",F(3+5));}程序运行后的输出结果是______。A:192B:29C:25D:编译出错答案:D评析:本题考查的是宏定义。return语句用于从被调函数带回一个函数值。void关键字表示"无类型",即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/函数的类型和返回值、宏定义3、有以下程序intfun1(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后变量w中的值是______。A:5.21B:5C:5.0D:0.0答案:C评析:本题考查的是数值类型的定义与强制转换。本题在进行调用函数fun2()时,又对函数fun1()进行了调用,由于函数fun1()定义为整型,所以第一次调用fun1()时返回的值为1,然后再将1赋值给a,此时由于a为double型,则系统自动类型转换,将1转换成了1.000000赋值给了变量a,以此类推,得b的值为4.000000,然后通过"return(int)(a+b);"将a+b的值强制转换为int型5返回给主函数,此时又由w的类型为double,所以返回的整型值5又被转换为double型。故输出结果为5.0。故本题答案为C。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/函数、不同类型数据间的转换与运算4、若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是______。A:intfun(doublex,int*n);B:intfun(double,int);C:intfun(double*x,intn);D:intfun(double*,int*);答案:D评析:本题考查的是函数的声明。函数声明可以照写已定义的函数的首部,再加一个分号就成为了对函数的声明,在函数声明中也可以不写形参名,而只写形参的类型,但要保证与函数首部写法上的一致,即函数类型、函数名、参数个数、参数类型和参数顺序相同。字符数组可用指针来表示,所以选项D正确。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/函数的定义方法、指针5、有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d\n",r);}程序运行后的输出结果是______。A:2B:1C:3D:0答案:A评析:本题考查的是指针作为函数的参数和函数的调用。题目中定义了一个指针变量r作为形参的f()函数。在主函数main()中定义了两个变量m和r,同时给m赋初值7,执行"f(m,&r);"语句,调用f()函数并将m的初值7传递给形参n,将r的地址传给形参指针变量r。f()函数中通过指针r将最后的值返回。首先执行if语句中的条件:n%3==0,7%3=1条件为假,执行第一个else下的语句,同样不满足条件,再执行第二个else下的语句,n自行减一,n=6,再执行if语句,满足条件,r1=2,把r1的值2赋给指针变量r所指向的存储单元,即为主函数r的值,输出结果为2。故本题答案选A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/用指针作函数参数6、有以下程序#include<stdio.h>#include<string.h>voidfun(chars[][10],intn){chart;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)/*比较字符串的首字符大小,并交换字符串的首字符*/if(s[i][0]>s[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是______。A:xy,aaaaccB:aaaacc,xyC:xcc,aabccD:acc,xabcc答案:D评析:本题的考查点是循环嵌套。函数fun的功能是对数组中的每个字符串的第一个字符按由小到大的顺序排序,最终输出数组的第一个和第五个的字符串。比较各字符串的首字符可知,字符'a'最小,字符'x'最大,所以输出的ss[0]的值为acc,ss[4]的值为xabcc。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/循环的嵌套7、有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是______。A:8,2,3,4,5,6,7,1,B:5,6,7,8,1,2,3,4,C:1,2,3,4,5,6,7,8,D:8,7,6,5,4,3,2,1,答案:D评析:本题考查的是函数的调用。本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。在主函数中,能过"p=a;q=&a[7];"将指针变量p指向了数组的第一个元素,指针变量q指向了数组的最后一个元素。通过"f(p,q)"调用函数f进行对称的数组元素的交换。当while循环4次(即p=q)后,a数组中各元素的值分别为87654321,所以程序输出的结果为8,7,6,5,4,3,2,1,。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/函数的正确调用,嵌套调用,递归调用8、已定义以下函数fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函数的功能是______。A:将p1所指字符串复制到p2所指内存空间B:将p1所指字符串的地址赋给指针p2C:对p1和p2两个指针所指字符串进行比较D:检查p1和p2两个指针所指字符串中是否有'\0'答案:A评析:本题的考查点是函数。while((*p2=*p1)!='\0'表示将p1所指向的值赋给*p2,即将p1所指字符串复制到p2所指内存空间。在这里"*P2=*p1"是赋值操作,而不是比较是否相等,比较应当为双等号"=="。所以B,C,D都不对。故本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义9、以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。#include<string.h>voidf(charp[][10],intn){chart[20];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])<0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};inti;f(p,5);printf("%d\n",strlen(p[0]));}程序运行后的输出结果是______。A:6B:4C:5D:3答案:C评析:本题的考查点是比较字符串的大小。比较字符串的大小是从字符串的第一个字母开始比较,如果第一个字母相同则比较第二个字母,以此类推,直至字符串结束,结合本题可知,比较后的字符串数组为:p[0]="dcdbe"p[1]="cd"p[2]="abc"p[3]="abbd"p[4]="aabdfg"所以,strlen(p[0])=5。故本题答案为C。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构10、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序运行后的输出结果是______。A:22B:10C:34D:30答案:A评析:本题的考查点是对数组的操作。本题并不是将整个数组中的内容逆置,而是逆置前8个元素。逆置后的数组为:8,7,6,5,4,3,2,1,9,10。通过for循环计算b[6]+b[7]+b[8]+b[9]即2+1+9+10=22。故本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/数组、函数、FOR循环结构11、有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是______。A:ABCDDEFEDBDB:abcDDfefDbDC:abcAAfefAbAD:Abcddfefdbd答案:B评析:本题的考查点是将字符串中指定的小写字母转换为大写字母。在主函数中,因为c被赋值为字符'd',所以函数的功能是将字符串中d字母转换为大写。故本题答案为B。等级:3难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/函数、WHILE和DOWHILE循环结构12、以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='Z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}A:abc+ABC=DEFdefB:abc+abc=defdefC:abcABCDEFdefD:abcabcdefdef答案:B评析:本题中cchar函数的作用是:如果参数ch是大写字母,则将它转换成小写的,而对大写字母以外的字符不起作用。所以答案应该是B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/函数的正确调用,循环、指针13、设有以下函数;f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n",f(a));}A)B)C)D)777789107911137A:A)B:B)C:C)D:D)答案:A评析:本题考查的是C语言的静态数据类型。静态数据类型的变量的值在退出了函数时依然存放在内存中,且只初始化一次。本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义14、下列程序的运行结果是______。voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);}A:63B:36C:编译出错D:00答案:B评析:本题中主函数里的x、y,fun函数里的a,b,k,这些都是指针,fun函数中只是将a,b这两个指针交换了位置,而并没有改变主函数中变量a,b的值。本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义15、有以下程序main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是______。A:7B:6C:8D:无确定值答案:A评析:本题的考查点是二维数组和指针数组的应用。在所给的程序中,pa指向二维数组首地址a,接着执行下面的for循环,当i=0或i=1时,数组元素pa[1][i]的值减1,当i=2时,数组元素pa[1][i]的值为1,此时得到新的二维数组a[][3]={{1,2,3},{3,4,1}},最终打印结果就是2+4+1=7。故本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、2级指针16、有以下程序main(){charstr[][10]={"China","Beijing"},*p=str;printf("%s\n",p+10);}程序运行后的输出结果是______。A:ChinaB:BejingC:ngD:ing答案:B评析:此题考的是指向数组元素的指针变量。本题首先要知道,C语言中二维数组元素排列的顺序是按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。此题二维数组str[0]前5个元素为''C','h','i','n','a','\0',第6个元素为'\0',后4个元素为空字符。紧接着内存单元存放的内容即从str[1][0]到str[1][9]为'B','e','i','j','i','n','g','\0',第八个元素为'\0',后两个元素为空字符,执行*p=str后,指针p就指向了二维数组str的首地址,所以p+10就指向了从首地址依次向后的第11个存储单元即字符B的地址,所以输出Beijing,故答案为B。如果此题将*p=str改为(*p)[10]=str;则p+10指的就是str的第10行,如果此时要想输出Beijing,则必需将p+10改为p+1,因为(*p)[10]中的p是行指针,它是指向包含10个元素的一维数组,那么p+1就是加的一行了;而本题的p+1只是移动一个位置,因为此题的p只是一个指针变量。故本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/指向数组元素的指针变量17、有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是______。A:5B:6C:8D:9答案:D评析:int*p中p为指向整型数据的指针变量,*p为指针变量p所指向的变量。指针变量中只能存放地址(指针),本题中p存放的是a[3]的地址,即p指向数组{4,5,6,7,8,9,10},b=p[5]=9。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义18、若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是______。A:p+1B:*(p+3)C:*(p+1)+3D:*(p[0]+2)答案:D评析:本题考查的是数组元素的引用。如果定义一个指针指向二维数组的一行,则可以移动到下一行,这就是行指针。行指针的定义格式为:[存储类型]数据类型(*指针)[n]这里的n是一个整数,表示所指向的二维数组的列数。(*p)[5]中p是指向一个包含5个元素的一维数组,p的值就是该一维数组的首地址。所以当用行指针访问二维数组时,行指针每增加1,就移动一行,即指向二维数组的下一行,例如此题中的p+i将指向数组的第i行。即选项A所指的意思是指向数组c的第1行,并不是引用c数组的元素;B答案中p+3是指向数组元素的第3行,*(p+3)是指第三行第零个元素的地址;选项C由对选项A,选项B的解释可知,它指的是第一行第3列元素的地址;选项D中p[0]+2是指第0行第2列元素的地址,再加个*就表示第0行第2列的元素,即c[0][2]。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义19、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。A:intB:int*C:(*int)D:(int*)答案:D评析:本题的考查点是强制类型转换。不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/不同类型数据间的转换与运算、指针20、若有以下说明和语句,请选出哪个是对c数组元素的正确引用______。intc[4][5],(*cp)[5];cp=c;A:cp+1B:*(cp+3)C:*(cp+1)+3D:*(*cp+2)答案:D评析:本题的考查点是数组元素的引用。cp=c这个语句是将数组c的首地址赋给了指针数组cp的第一个数组元素。选项A,cp+1是指将数组c的首地址加1,不是对数组元素的引用;选项B,*(cp+3)是地址等于数组c的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项C,*(cp+1)+3是地址等于数组c的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义21、设有以下语句,其中不是对a数组元素的正确引用的是:______(其中0≤i<10)inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;A:a[p-a]B:*(&a[i])C:p[i]D:*(*(a+i))答案:D评析:本题的考查点是通过指针引用数组元素。观察程序可知,a实际上就是数组a的首地址,所以"*(a+i)"表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义22、下面程序main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}的输出是______。A:3B:4C:1D:2答案:A评析:本题的考查点是通过指针引用数组元素。*p=a语句是使指针p指向数组a的第一个数组元素,因此*(p+2)即是数组a的第3个元素的值,即a[2]。故本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义23、下面程序voidprtv(int*x){printf("%d\n",++*x);}main(){inta=25;prtv(&a);}的输出是______。A:23B:24C:25D:26答案:D评析:本题的考查点是指针变量作为函数参数。观察程序,可以发现,函数prtv()的作用是将地址等于x的内存单元中值加1,因为我们在主函数中是将变量a的地址作为实参传递给了prtv()函数,所以,函数prtv()将地址等于变量a的地址的那个内存单元中值加一,打印结果自然就是25+1=26了。故本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义24、下面函数intfun1(char*x){char*y=x;while(*y++);return(y-x-1);}的功能是______。A:求字符串的长度B:比较两个字符串的大小C:将字符串x复制到字符串yD:将字符串x连接到字符串y后面答案:A评析:本题的考查点是while()循环语句。这个函数的功能是求字符串的长度,需要注意的是,在返回长度时一定记住要减一,否则计算出的串长度将会多一。故本题答案是A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/WHILE和DOWHILE循环结构25、以下程序的输出结果是______。main(){char*s="12134211";intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch(s[k]){case'1':i=0;case'2':i=1;case'3':i=2;case'4':i=3;}v[i]++;}for(k=0;k<4;k++)printf("%d",v[k]);}A:4211B:0008C:4678D:8888答案:B评析:本题的考查点是switch语句的应用。在每次执行switch后面括号内的表达式s[k]时,要先取当前s[k]的值与case后的字符常量进行比较,找到与之匹配的分支后,即转去执行该分支中的语句。switch语句中,某分支执行完毕,若未遇到break语句,则接着执行剩余的其它分支,直到遇到break语句。此题中,因为没有break语句,所以总会执行到i=3,即总是v[3]在递加。故本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义26、有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n",i);}该程序中的for循环执行的次数是______。A:5B:6C:7D:8答案:B评析:在C语言中,宏定义在编译时将被直接替换,所以NUM最后会被替换成2*N+1+1,即2*2+1+1,值为6。因此,for循环执行的次数为6。本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、宏定义27、有如下程序main(){ intn[5]={0,0,0},i,k=2; for(i=0;i<k;i++)n[i]=n[i]+1; printf("%d\n",n[k]);}该程序的输出结果是______。A:不确定的值B:2C:1D:0答案:D评析:由代码可知,题中的for循环值执行2次(i=0和1),所以只对a[0]和a[1]重新赋了值,而a[k]即a[2]的值并没有变,仍为0。本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组28、有如下程序main(){ inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]]; printf("%d\n",s);}该程序的输出结果是______。A:18B:19C:20D:21答案:A评析:题中的外循环只执行了2次:第1次:a[1][0]=3,a[1][1]=4,所以s=7;第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/循环的嵌套数组29、有如下定义 structperson{charname[9];intage;}; structpersonclass[10]={"John",17, "Paul",19, "Mary",18, "Adam",16,};根据上述定义,能输出字母M的语句是______。A:printf("%c\n",class[3].name);B:printf("%c\n",class[3].name[1]);C:printf("%c\n",class[2].name[1]);D:printf("%c\n",class[2].name[0]);答案:D评析:选项A将输出A;选项B将输出d;选项C将输出a;选项D将输出M。本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义30、有以下程序main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);printf("\n");}程序运行后的输出结果是______。A:75310246B:01234567C:76310462D:13570246答案:A评析:本题考查的是排序算法。for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}此段程序的作用是将数组x[0]到x[3]中的数由大到小进行排列,运行此段程序后x[]中的值变为x[]={7,5,3,1,2,4,6,0}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}此段程序的作用是将数组x[4]到x[7]中的数由小到大进行排列,运行此段程序后x[]中的值变为x[]={7,5,3,1,0,2,4,6}最后通过一个循环将X[]中的数依次输出。故本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/循环的嵌套、数组31、下面程序的输出结果是______。main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%d\n",*p+9);}A:0B:1C:10D:9答案:C评析:本题中,p=a,则表明指针p指向数组a的第一个元素,即a[0]。指针运算符"*"的优先级高于加法运算符"+",所以"*p+9"相当于a[0]+9,即10。本题答案为C。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义32、以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A:16B:2C:9D:1答案:B评析:本题所考查的是宏定义。C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。在做这条题时,我们也不妨将运用置换法。得到:a/=k+m*k+m/k+m*k+m=16/7=2。注:a为整形,所以在做除法时,自动取整。本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/复合语句、宏定义33、若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是______。A:double*pB:float**pC:double**pD:float*p答案:C评析:通过程序中给出的语句,我们可以判断,*p是一个指向double型指针的指针。因此,要通过p把动态分配存储单元的地址传回主调函数,应该使用double**p。本题答案为C。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/返回指针值的指针函数34、设有以下函数;f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n",f(a));}A)B)C)D)777789107911137A:A)B:B)C:C)D:D)答案:A评析:本题考查的是C语言的静态数据类型。静态数据类型的变量的值在退出了函数时依然存放在内存中,且只初始化一次。本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数35、若有说明:inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。A:i=*p;B:*p=*&j;C:i=&j;D:i=**p;答案:B评析:本题考查C语言中指针赋值运算。指针是一种特殊的变量,它是用来存放变量地址的变量。指针定义时可以为其赋初值。只有指针被赋了值后才能对其使用。本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/表达式语句,空语句,复合语句、指针36、以下定义语句中,错误的是______。A:inta[]={1,2};B:char*a[3];C:chars[10]="test";D:intn=5,a[n];答案:D评析:本题考查C语言数组的定义与初始化。在C语言中数组的初始化可以对部分元素,数组的定义,不能含有变量。本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/C的数据类型及其定义方法、数组37、以下程序的输出结果是______。main(){inti,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]);}A:258B:741C:852D:369答案:C评析:本题使循环语句给数组元素赋值。C语言中for循环语句的一般形式为:for(表达式1;表达式2;表达式3){语句部分;}本题答案为C。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组38、以下程序的输出结果是______。main(){charst[20]="hello\0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}A:99B:520C:1320D:2020答案:B评析:本题主要考查C语言的字符串与库函数。C语言中字符串是以'\0'字符结束的,且strlen()函数计算的是'\0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。本题答案为B。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/不同类型数据间的转换与运算39、以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n",p[2],p[5]);free(p);}A:56B:25C:34D:程序错误答案:A评析:本题主要考查的是指针与数组的操作。可以用malloc()函数为指针分区内存空间,用free()函数释放指针变量所用内存空间。本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组、指针40、以下程序的输出结果是______。structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);}A:12B:23C:14D:32答案:D评析:本题考查的是C语言中结构体与链表。本题中是一个含有两个结点的循环链表。C语言中结构体的定义为:struct结构体类型名{成员表列;};本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义41、以下程序的输出结果是______。unionmyun{struct{intx,y,z;}u;intk;}a;main(0{a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf("%d\n",a.u.x);}A:4B:5C:6D:0答案:D评析:本题主要考查C语言中构造类型,联合体与结构体。结构体中的成员使用各自的存储区,而联合体中的成员使用共同的存储区。本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:没有定义42、若有说明语言: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);答案:A评析:在scanf语句中,要为某一变量赋值,引用的是该变量的地址,所以在这里要为a,b,c赋值可以写成两种形式,除了采用答案B的形式外,还可以写成scanf("%d%d%d",&a,&b,d)。本题答案为A。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/表达式语句,空语句,复合语句、指针43、若定义:inta=511,*b=&a:,则printf("%d\n",*b):的输出结果为______。A:无确定值B:a的地址C:512D:511答案:D评析:本题,首先定义了一个整型变量a,并将它赋值为511,然后又定义了一个指针变量,将它赋值为变量a的地址,在输出语句中,输出项是*b,而*b=a,所以输出结果应该是511。本题答案为D。等级:1难度:1区分度:1出题人:文本导入修改人:审核人:创建时间:2008-06-25最后修改时间:知识点:C综合题目部分/知识点/综合/数据的输入与输出,指针44、以下程序的输出结果是______。main(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论