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

下载本文档

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

文档简介

经典word整理文档,仅参考,双击此处可删除页眉页脚。本资料属于网络整理,如有侵权,请联系删除,谢谢!一、单选题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);"可知,函数故输出的前5个数组元素为12334。故本题答案为C。等级: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出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/函数的类型和返回值、宏定义3、有以下程序intfun1(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;1a=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评析:本题考查的是数值类型的定义与强制转换。给了变量a,以此类推,得b的值为4.000000,然后通过"return(int)(a+b);"将a+b的值强制转换为int型5返回给主函数,此时又由w的类型为double,所以返回的整型值5又被转换为double型。故输出结果为5.0。故本题答案为C。等级: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评析:2本题考查的是函数的声明。函数声明可以照写已定义的函数的首部,再加一个分号就成为了对函数的声明,在函数声明中也可以不写形参名,而只写形参的类型,但要保证与函数首部写法上的一致,即函数类型、函数名、参数个数、参数类型和参数顺序相同。字符数组可用指针来表示,所以选项D正确。故本题答案为D。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/函数的定义方法、指针审核人:创建时间:2008-06-255、有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseelse*r=r1;}if(n%5==0)r1=n/5;f(--n,&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,指针r将最后的值返回。首先执行if语句中的条件:n%3==0,7%3=1条件为假,执行第一个else下的语句,同样指针变量r所指向的存储单元,即为主函数r的值,输出结果为2。故本题答案选A。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/用指针作函数参数审核人:创建时间:2008-06-2536、有以下程序#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评析:本题的考查点是循环嵌套。为xabcc。故本题答案为D。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/循环的嵌套审核人:创建时间:2008-06-257、有以下程序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)4{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评析:本题考查的是函数的调用。元素的交换。当while循环4次(即p=q)后,a数组中各元素的值分别为87654321,所以程序输出的结果为8,7,6,5,4,3,2,1,。故本题答案为D。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/函数的正确调用,嵌套调用,递归调用审核人:创建时间:2008-06-258、已定义以下函数fun(char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函数的功能是______。A:将p1所指字符串复制到p2所指内存空间B:将p1所指字符串的地址赋给指针p2C:对p1和p2两个指针所指字符串进行比较D:检查p1和p2两个指针所指字符串中是否有'\0'答案:A评析:5本题的考查点是函数。while((*p2=*p1)!='\0'表示将p1所指向的值赋给*p2,即将p1所指字符串复制到p2所指内存空间。在这里"*P2=*p1"是赋值操作,而不是比较是否相等,比较应当为双等号"=="。所以B,C,D都不对。故本题答案为A。等级: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出题人:文本导入修改人:审核人:6创建时间: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出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/数组、函数、FOR循环结构审核人:创建时间:2008-06-2511、有以下程序voidss(char*s,chart){while(*s){s++;if(*s==t)*s=t-'a'+'A';}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);7}程序运行后的输出结果是______。A:ABCDDEFEDBDB:abcDDfefDbDC:abcAAfefAbAD:Abcddfefdbd答案:B评析:本题的考查点是将字符串中指定的小写字母转换为大写字母。在主函数中,因为c被赋值为字符'd',所以函数的功能是将字符串中d字母转换为大写。故本题答案为B。等级:3出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/函数、WHILE和DOWHILE循环结构审核人:创建时间:2008-06-2512、以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='Z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){p++;*p=cchar(*p);}printf("%s\n",s);}A:abc+ABC=DEFdefB:abc+abc=defdefC:abcABCDEFdefD:abcabcdefdef8答案:B评析:所以答案应该是B。等级: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)7B)7C)7D)789111013797A:A)B:B)C:C)D:D)答案:A评析:一次。本题答案为A。等级:1出题人:文本导入创建时间:2008-06-25知识点:没有定义修改人:最后修改时间:审核人:914、下列程序的运行结果是______。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出题人:文本导入修改人:最后修改时间:审核人:创建时间: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:710B:6C:8D:无确定值答案:A评析:本题的考查点是二维数组和指针数组的应用。pa[1][i]的值减1,当i=2时,数组元素pa[1][i]的值为1,此时得到新的二维数组a[][3]={{1,2,3},{3,4,1}},最终打印结果就是2+4+1=7。故本题答案为A。等级: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评析:此题考的是指向数组元素的指针变量。第二行的元素。此题二维数组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=str改为(*p)[10]=str;则p+10指的就是str的第10行,如果此时要想输出Beijing,则必需将p+10改为只是移动一个位置,因为此题的p只是一个指针变量。故本题答案为B。11等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/指向数组元素的指针变量审核人:创建时间:2008-06-2517、有以下程序段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出题人:文本导入创建时间:2008-06-25知识点:没有定义修改人:最后修改时间:审核人:18、若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是______。A:p+1B:*(p+3)C:*(p+1)+3D:*(p[0]+2)12答案:D评析:本题考查的是数组元素的引用。型]数据类型(*指针)[n]这里的n是一个整数,表示所指向的二维数组的列数。(*p)[5]中p是指向一个包含5个元素的一维数组,p的值就是该一维数组的首地址。所以当用行指针访问二维数组时,行指针每增加1,就移动一行,即指向二维数组的下一行,例如此题中的p+i将指向数组的第i行。即选项A所指的意思是指向数组c的第1行,并不是引用c数组的元素;B答案中p+3是指向数组元素的第3行,*(p+3)是指第三行第零个元素的地址;地址,再加个*就表示第0行第2列的元素,即c[0][2]。故本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25知识点:没有定义修改人:最后修改时间:审核人:19、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*p;p=______malloc(sizeof(int));则应填入______。A:intB:int*C:(*int)D:(int*)答案:D评析:本题的考查点是强制类型转换。据类型*)。故本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/不同类型数据间的转换与运算、指针20、若有以下说明和语句,请选出哪个是对c数组元素的正确引用______。intc[4][5],(*cp)[5];cp=c;13A: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出题人:文本导入修改人:最后修改时间:审核人:创建时间: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出题人:文本导入修改人:审核人:14创建时间: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出题人:文本导入修改人:最后修改时间:审核人:创建时间:2008-06-25知识点:没有定义23、下面程序voidprtv(int*x){printf("%d\n",++*x);}main(){inta=25;prtv(&a);}的输出是______。A:23B:2415C:25D:26答案:D评析:本题的考查点是指针变量作为函数参数。观察程序,可以发现,函数prtv()的作用是将地址等于x的内存单元中值加1,因为我们在主函数中是将变量a印结果自然就是25+1=26了。故本题答案为D。等级: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出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/WHILE和DOWHILE循环结构审核人:创建时间:2008-06-251625、以下程序的输出结果是______。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后的字符常量进行比较,找到与之加。故本题答案为B。等级:1出题人:文本导入创建时间:2008-06-25知识点:没有定义修改人:最后修改时间:审核人:26、有如下程序#defineN2#defineMN+1#defineNUM2*M+1main(){inti;for(i=1;i<=NUM;i++)printf("%d\n",i);}该程序中的for循环执行的次数是______。17A:5B:6C:7D:8答案:B评析:在C语言中,宏定义在编译时将被直接替换,所以NUM最后会被替换成2*N+1+1,即2*2+1+1,值为6。因此,for循环执行的次数为6。本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、宏定义审核人:创建时间:2008-06-2527、有如下程序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。18等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组审核人:创建时间:2008-06-2528、有如下程序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出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/循环的嵌套数组审核人:创建时间:2008-06-2529、有如下定义structperson{charname[9];intage;};structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16,};根据上述定义,能输出字母M的语句是______。A:printf("%c\n",class[3].name);19B: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出题人:文本导入创建时间: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--)20if(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出题人:文本导入创建时间: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+9"相当于a[0]+9,即10。本题答案为C。等级:1出题人:文本导入修改人:最后修改时间:审核人:创建时间:2008-06-25知识点:没有定义32、以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);21printf("%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出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/复合语句、宏定义审核人:创建时间:2008-06-2533、若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是______。A:double*pB:float**pC:double**pD:float*p答案:C评析:22元的地址传回主调函数,应该使用double**p。本题答案为C。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/返回指针值的指针函数审核人:创建时间:2008-06-2534、设有以下函数;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)7B)7C)7D)789101379117A:A)B:B)C:C)D:D)答案:A评析:一次。本题答案为A。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数审核人:创建时间:2008-06-2535、若有说明:inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。23A:i=*p;B:*p=*&j;C:i=&j;D:i=**p;答案:B评析:赋初值。只有指针被赋了值后才能对其使用。本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/表达式语句,空语句,复合语句、指针审核人:创建时间:2008-06-2536、以下定义语句中,错误的是______。A:inta[]={1,2};B:char*a[3];C:chars[10]="test";D:intn=5,a[n];答案:D评析:本题考查C语言数组的定义与初始化。在C语言中数组的初始化可以对部分元素,数组的定义,不能含有变量。本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/C的数据类型及其定义方法、数组37、以下程序的输出结果是______。24main(){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出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组审核人:创建时间:2008-06-2538、以下程序的输出结果是______。main(){charst[20]="hello\0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}A:99B:520C:132025D:2020答案:B评析:本题主要考查C语言的字符串与库函数。或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/不同类型数据间的转换与运算审核人:创建时间:2008-06-2539、以下程序输出正确的是______。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出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组、指针审核人:创建时间:2008-06-252640、以下程序的输出结果是______。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出题人:文本导入修改人:最后修改时间:审核人:创建时间: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);}27A:4B:5C:6D:0答案:D评析:共同的存储区。本题答案为D。等级: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出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/表达式语句,空语句,复合语句、指针43、若定义:inta=511,*b=&a:,则printf("%d\n",*b):的输出结果为______。28A:无确定值B:a的地址C:512D:511答案:D评析:本题,首先定义了一个整型变量a,并将它赋值为511,然后又定义了一个指针变量,将它赋值为变量a的地址,在输出语句中,输出项是*b,而*b=a,所以输出结果应该是511。本题答案为D。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/数据的输入与输出,指针审核人:创建时间:2008-06-2544、以下程序的输出结果是______。main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%d\n",a)}A:31B:13C:10D:2029答案:A评析:switch结构的执行过程为:进入switch结构后,对条件表达式进行计算,然后从上至下去找与条件表达式的值的值是1,则从case1开始执行后面的语句,先执行a+=3,a的值变成3,接着执行a+=5,a的值变成了8。然后语句使a的值变成了18,然后执行a+=3,和a+=5,第三轮循环结束时,a的值是26。第四轮循环中,switch结构条件表达的值是4,从default处开始执行,执行一个a+=5的操作,a的值变成了31,i的值经修改变成了5,不再满足循环条件,退出循环。本题答案为A。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/选择结构的嵌套、循环审核人:创建时间:2008-06-2545、以下程序的输出结果是______。#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;else}i--;i+=11;a+=i;}printf("%d\n",a);}A:21B:32C:33D:11答案:B评析:本题中,有两个循环语句。首先,i=0,进入while循环,for语句中对循环没有任何条件,故直接进入for循环,因为0%10结果还是0,所以跳出for循环,执行i+=11,i的值变为11,执行a+=j,a的值变为11;接着进入下一轮因为此时i的值不再小于20,所以结束循环,故输出结果是32。本题答案为B。30等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/选择结构的嵌套、循环审核人:创建时间:2008-06-2546、以下程序的输出结果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A:20B:24C:25D:15答案:D评析:本题主要考的是对变量存储属性的理解,一个变量被指定为静态变量,在编译时就为其分配了存储空间,程序一开始执行便被建立,直到该程序执行结束都存在,而不像动态变量只存在于函数或分程序被调用期间。在函调用时,它都先被重新赋值为1,再执行下面的操作。本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数47、以下程序调用findmax函数返回数组中的最大值。findmax(int*a,intn){int*p,*s;for(p=a,s=a;p-a<n;p++)31if(_____)s=p;return(*s);}main(){intx[5]={12,21,13,6,18};printf("%d\n",findmax(x,5)):}在下划线处应填入的是______。A:p>sB:*p>*sC:a[p]>a[s]D:p-a>p-s答案:B评析:指针指向的内容与s指针指向的内容作比较,并让两者间大值的地址存入s。本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、综合审核人:创建时间:2008-06-2548、以下程序的输出结果是______。main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}A:3B:4C:132D:9答案:B评析:本程序中,有两个循环语句嵌套使用,在第一次外循环中,i=0,执行内循环时,将j赋值为i的值0,执行一次t=t+b[i][b[j][j]],得到t=1,退出内循环,接着进入第二次外循环,在第二次外循环结束时t=2,然后执行第三次外循环,得到t=4,退出循环,输出t的值。本题答案为B。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组49、以下程序的输出结果是______。#inclue<stdio.h>#inclue<string.h>main(){charb1[8]="goddwer",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);printf("%d\n",strlen(b2));}A:8B:3C:1D:7答案:D评析:次复制会覆盖前面的复制,最后b2的实际长度应该是八,而strlen()函数测出的是一个字符串中"\0"之前的全部字符的个数,所以最后输出的值是七。本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/WHILE和DOWHILE循环结构、数组、字符串50、在说明语句:int*f();中,标识符f代表的是______。33A:一个用于指向整型数据的指针变量B:一个用于指向一维数组的行指针C:一个用于指向函数的指针变量D:一个返回值为指针型的函数名答案:D评析:int*f()表示f是一个函数,它带回一个指针值,这个指针是指向一个整型数据的。本题答案为D。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/C的数据类型及其定义方法、指针审核人:创建时间:2008-06-2551、以下程序的输出结果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}A:33B:22C:26D:25答案:C评析:34中执行两次for循环,第一次调用incre()函数时,函数中x的初值是1,x*=x+1语句可以写成x=x*(x+1),结果x的值变成2,随后输出值2;在第二次调用incre()函数时,x的值继承了上次调用的运行结果,变成了2,执行了x*=x+1后,x的值是6,故又输出了数字6。本题答案为C。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数审核人:创建时间:2008-06-2552、已定义以下函数fun(int*p){return*p;}该函数的返回值是______。A:不确定的值B:形参p中存放的值C:形参p所指存储单元中的值D:形参p的地址值答案:C评析:本题的考查点是函数的返回值。本题函数中形参为*p,它是一个指针变量,函数调用后,返回的是p所指向的存储单元里的值。故本题答案为C。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/返回指针值的指针函数审核人:创建时间:2008-06-2553、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}35程序运行后的输出结果是______。A:1,2,3,4,5,6,7,8,9,10,B:10,9,8,7,6,5,4,3,2,1,C:1,2,3,8,7,6,5,4,9,10,D:1,2,10,9,8,7,6,5,4,3,答案:C评析:本题的考查点是对数组的操作。本题并不是对数组的所有元素进行排序,而是对从a[3]开始往后的4个元素进行排序。故本题答案为C。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数、数组54、有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是______。A:4B:3C:2D:1答案:B评析:36本题的考查点是函数的递归调用。j+=f(i)即为j=j+f(i)=f(1)+f(2)=1+(f(1)+1)=3。故本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数审核人:创建时间:2008-06-2555、设有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是______。A:for(i=0;i<6;i++)printf("%2d",*(p++));B:for(i=0;i<6;i++)printf("%2d",*(p+i));C:for(i=0;i<6;i++)printf("%2d",*p++);D:for(i=0;i<6;i++)printf("%2d",(*p)++);答案:D评析:此题考的是指向数组元素的指针。*p=x的作用是将x的首地址(即x[0]的地址)赋给指针变量p,那么程序段A当i=0时,*(p++)虽然是先执行括号内的表达式,但括号内表达的++是在p的后面,所以它要先执行p再加,即先取*p(x[0]),再使得p加1,为i=2时取下一个元素作准备。选项C中因为*和++是处于同一优先级别,而结合方向为自右而左,因此*p++相当于*(p++),所以选项A和选项C都是可以输出6个元素的值的。以输出6个元素的值的;选项D由于(*p)++后面的++是使*p的值+1,又因为*p指的是x[0]的值,所以它不能实现地址的依次向下移动,每次循环只是x[0]的值在改变,而p的值并没有丝毫变化,所以它并不能实现6个元素的输出。故本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25知识点:没有定义修改人:最后修改时间:审核人:56、以下程序中的函数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;}}37main(){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出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/FOR循环结构、数组、函数57、有以下程序structSTU{charnum[10];floatscore[3];}main(){structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s;inti;floatsum=0;for(i=0;i<3;i++)sum=sum+p->score[i];printf("%6.2f\n",sum);}程序运行后的输出结果是______。A:260.00B:270.0038C:280.00D:285.00答案:B评析:本题的考查点是结构体数组。通过for循环计算每个学生的总分,但是最后打印的只是最后一个学生的总分。因为sum定义的是实型变量,所以最后结果应为实型数据。故本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、结构体数组审核人:创建时间:2008-06-2558、以下程序中函数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评析:本题的考查点是比较字符串的大小。比较字符串的大小是从字符串的第一个字母开始比较,如果第一个字母相同则比较第二个字母,以此类推,直至字符串结束,结合本题可知,比较后的字符串数组为:39p[0]="dcdbe"p[1]="cd"p[2]="abc"p[3]="abbd"p[4]="aabdfg"所以,strlen(p[0])=5。故本题答案为C。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/FOR循环结构、函数、数组审核人:59、以下叙述正确的是______。A:C语言比其他语言高级B:C语言可以不用编译就能被计算机识别执行C:C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D:C语言比其他高级语言出现的最晚、具有其他语言的一切优点答案:C评析:本题的考查点是C语言的特点。C语言主要有如下一些特点:1,语言简洁、紧凑,使用方便、灵活;2,运算符丰富;3,数据结构丰富,具有现代化语言的各种数据结构;4,具有结构化的控制语句;5,语法限制不太严格,程序设计自由度大;6,C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。7,生成目标代码质量高,程序执行效率高;8,用C语言写的程序可移植性好。本题答案为C。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/程序的构成,MAIN函数和其他函数60、有以下程序main(){inti;for(i=0;i<3;i++)40switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出的结果是______。A:011122B:012C:012020D:120答案:A评析:本题的考查点是switch语句。switch语句在执行时先计算表达式i的值,当表达式i的值与某一个case中的常量表达式的值相等时,就执行该break语句与switch语句配合使用,可以强行控制程序流程退出switch。由于本题没有与break语句配合使用,因此在执行完"case1"以后,还要继续执行"case2"和"defult"。当i=0时,执行defult语句,输出0;此类推。故本题答案为A。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/选择结构的嵌套、循环审核人:创建时间:2008-06-2561、有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}执行后输出的结果是______。A:58B:5641C:45D:24答案:D评析:本题的考查点是while循环语句。while语句是先判断后执行。i=0时,i<7为真,p[0]%2=11%2=1为真,k=k+p[0]=11;i=1时,i<7为真,p[1]%2=13%2=1为真,k=k+p[1]=11+13=24;i=2时,i<7为真,p[2]%2=14%2=0为假,结束循环。所以打印输出24。故本题答案为D。等级:1出题人:文本导入修改人:最后修改时间:审核人:创建时间:2008-06-25知识点:没有定义62、有以下程序int*f(int*x,int*y){if(*x<*y)returnelsex;return}main()y;{inta=7,b=8,*p,*q,*r;q=&b;p=&a;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}执行后输出结果是______。A:7,8,8B:7,8,7C:8,7,7D:8,7,8答案:B评析:42本题的考查点是指针变量作为函数参数。是指针变量,在函数调用开始时,实参变量将它的值传送给形参变量。采取的依然是"值传递"方式。因此虚实结合后形参x的值为&a,y的值为&b。这时x和p都指向变量a,y和q都指向b。接着执行f函数的函数体,输出*x*p,*q的值未变。故本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/用IF语句实现选择结构、指针、函数审核人:创建时间:2008-06-2563、有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){}printf("%d",m[k][i]);}执行后输出结果是______。A:456B:258C:369D:789答案:C评析:本题的考查点是二维数组的应用。m[][3]即为定义的一个3行3列的二维数组,因为k=2所以打印的为第二行的数组元素,即m[2][0],m[2][1],m[2][2]。为369。故本题答案为C。等级:1出题人:文本导入修改人:最后修改时间:审核人:创建时间:2008-06-25知识点:C综合题目部分/知识点/综合/FOR循环结构、循环64、以下叙述中不正确的是______。43A:C语言中的文本文件以ASCII码形式存储数据B:C语言中对二进制位的访问速度比文本文件快C:C语言中,随机读写方式不使用于文本文件D:C语言中,顺序读写方式不使用于二进制文件答案:D评析:本题主要考查C文件的基本概念。C语言把文件看作是一个字符(字节)的序列,根据数据组织形式可分为ASCII文件(又称文本文件)和二进制写,关键在于控制文件的位置指针,由于文本文件要发生字符转换,计算位置时往往会发生混乱,访问速度受到影响,所以随机读写方式不使用于文本文件。故本题答案为D。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/C语言的风格、C文件的基本概念65、以下叙述中正确的是______。A:C程序中注释部分可以出现在程序中任意合适的地方B:花括号"{"和"}"只能作为函数体的定界符C:构成C程序的基本单位是函数,所有函数名都可以由用户命名D:分号是C语句之间的分隔符,不是语句的一部分答案:A评析:本题的考查点是C程序设计的初步知识。选项A,C程序中/*……*/表示注释部分,注释只是给人看的,对编译和运行不起作用,可以加在程序中任何位置,所以选项A是对的;选项B,函数体是函数的主体,从左花括号开始,到与之匹配的右花括号结束。选项C,一个C程序中必须有且只能有一个由"main"命名的主函数,其他函数由用户自行命名。选项D,C语句是组成C程序的基本单位,具有独立的程序功能。所有的C语句都以分号结尾。故本题答案为A。等级:144出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/源程序的书写格式66、以下叙述中正确的是______。A:C语言的源程序不必通过编译就可以直接运行B:C语言中的每条可执行语句最终都将被转换成二进制的机器指令C:C语言程序经编译形成的二进制代码可以直接运行D:C语言中的函数不可以单独进行编译答案:B评析:1,编辑源文件。根据需要修改输入或修改源程序;目标程序。3,执行程序。故本题答案为B。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/源程序的书写格式审核人:创建时间:2008-06-2567、有以下程序main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}}}程序运行时,从键盘输入:01↙,程序执行后的输出结果是______。A:anothernumberB:another45numberanotherC:anothernumbernumberD:numbernumber答案:C评析:switch语句的一般形式如下:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;...case常量表达式n:语句n;default}:语句n+1;常量表达式"只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。如果想在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。本题中没有使用break终止switch语句的执行,本题当k为0时,执行完case'0'后将继续执行case'1'。故本题答案为C。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/用SWITCH语句实现多分支选择结构、循环68、以下叙述中正确的是______。A:用C程序实现的算法必须要有输入和输出操作B:用C程序实现的算法可以没有输出但必须要输入C:用C程序实现的算法可以没有输入但必须要有输出D:用C程序实现的算法可以既没有输入也没有输出答案:C评析:本题考查的是算法的特性。算法的特性中包括"有零个或多个输入"及"有一个或多个输出"这两个特性。输入是指执行算法时从外界取得必要的信息。一个算法可以有两个或多个输入,但也可以没有输入;一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一个算法必须至少有一个输出。故本题答案为C。46等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/基本知识审核人:创建时间:2008-06-25二、填空题1、以下程序段的输出结果为______。char*p;inti,d;p="PDP1-0";for(i=0;i<7;i++){d=isdigit(*(p+i));if(d!=0)printf("%c\n",*(p+i));}答案:1:1:10评析:本题的考查点是函数isdigit()。应当是:10等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/库函数的正确调用审核人:创建时间:2008-06-252、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空:#define#defineNM34voidLineMax(intx[N][M]){inti,j,p;for(i=0;i<N;i++){p=0;for(j=1;j<M;j++)if(x[i][p]<x[i][j])______;printf("Themaxvalueinline%dis%d\n",i,a[i][p]);}}main(){int______;}x[N][M]={1,.5,7,4,2,6,4,3,8,2,3,1};答案:1:1:p=j472:LineMax(x)评析:的第一个元素列下标即0赋给p,然后把后面的数逐一与之比较,如果大于它,则把大的数的列下标重新赋给p。所以(1)处应该填p=j;内循环结束后,便获得了本行中最大的数,即a[i][p];参,传递过去,(2)处的答案应该是LineMax(x)。注意大小写,C语言中大小写是不等价的。等级:1出题人:文本导入创建时间:2008-06-25修改人:最后修改时间:审核人:知识点:C综合题目部分/知识点/综合/函数的正确调用,嵌套调用,递归调用3、fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。#include<stdio.h>#defineN100intfun(int(*a)[N]){introw,col,max,min;for(row=0;row<N;row++){for(max=a[row][0],col=1;col<N;col++)if(______)max=a[row][col];if(row==0)min=max;elseif(______)min=max;}returnmin;}答案:1:1:max<a[row][col]#max<=a[row][col]#a[row][col]>max#a[row][col]>=max2:max<min#max<=min#min>max#min>=max评析:本题的考查点是求矩阵最大值的算法。本题中的第一空要求判断出每一行中的最大数,应该填写条件max<a[row][col],第二空要求从N个最大值中找出最小的数,应填入条件max<min。故本题答案为:max<a[row][col]和max<min。等级:1出题人:文本导入修改人:最后修改时间:审核人:创建时间:2008-06-25知识点:没有定义主函数输出。请填空。#defineM#defineN24voidColumMin(inta[M][N],int*sum)48{inti,j,k,s=0;for(i=0;i<N;i++){k=0;for(j=1;j<M;j++)if(a[k][i]>a[j][i])k=j;s+=;}*sum=s;}main(){intx[M][N]={3,2,5,1,4,1,8,3},s;ColumMin(x,&s);printf("%d\n",s);}答案:1:1:a[k][i]评析:本题考查的是函数参数的传送。解题过程:(1)执行以i为变量的for语句1)k=02)执行以j为变量的for语句①当j=1②比较a[0][0]和a[1][0]的大小,如果a[0][0]大于a[1][0]则k=1;如果a[0][0]大于a[1][0]则k=0③j=2所以结束循环3)此时a[k][i]就代表第一列中最小的值,要累计所有列中的最小值的和,应该在第一空内填写a[k][i],用变量s累加。(2)SumColumMin是一个无返回值的函数,其中形式参数*sum是一个指针类型,所以第二空应该填写*sum,用来将该指针变量指向s(3)当主函数main调用SumColumMin时,需要两个实际参数,一个代表被操作的数组,一个为指向累计和的指针变量,所以第三个空应该为x,&s,分别代表已经被定义的数组x,和整型变量s的地址。等级:1出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识点/综合/函数的正确调用,嵌套调用,递归调用审核人:创建时间:2008-06-255、若给fun函数的形参s传送字符串:"longfun(chars[]){longn;intsign;for(;isspace(*s);s++);sign=(*s=='-')?-1:1;if(*s=='+'||*s=='-')s++;for(n=0;isdigit(*s);s++)n=10*n+(*s-'0');6354abc",则函数的返回值是______。(字符串中包括空格)returnsign*n;}答案:1:1:[NN]635449评析:本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应各个字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是"6354"。故本题答案为:6354。等级:3出题人:文本导入修改人:最后修改时间:知识点:C综合题目部分/知识

温馨提示

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

评论

0/150

提交评论