资源描述:
《C语言精彩试题,二级C语言精彩试题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
二级C语言程序设计模拟试题(一)一、单项选择题。(每小题1分,共20分)1、一个C语言程序是由(B)组成。A)一个函数B)一个或若干个函数C)一个过程D)一个过程或若干个过程知识点:C语言程序的结构2、C语言用(D)表示逻辑真值。A)trueB)TC)整型值0D)非0整型值知识点:数据类型3、如果程序中有#include"文件名"则意味着(A)。A)将"文件名"所指的那个文件的全部容,在此命令行出现的这一点上,插入源程序B)指定标准输入输出C)宏定义一个函数D)条件编译说明知识点:编译预处理4、为一个结构体变量分配存储空间时,其所占容量为(B)。A)结构体中第一个成员所占容量B)结构体中所有成员所占容量C)结构体中所有成员中所占容量最大者D)结构体中最后一个成员所占容量知识点:结构体5、如果int*px,*py;则可用{temp=*px;*px=*py;*py=temp}实现*px和*py的交换。其中temp应该说明为(A)。A)inttempB)int&tempC)int**tempD)int*temp知识点:指针6、于合法的c语言长整型常量是(A)。A)12LB)6887273C)5E12D)(long)6887273知识点:数据类型7、下列程序输出正确的是(A)。main(){inta=-1,b=1,c;c=(a++<=0)&&!((b--<=0));printf(“%d,%d,%d”,a,b,c);}A)0,0,1B)-1,1,1C)0,0,0D)0,1,0知识点:逻辑运算符8、已知E的ASCII码是69,则执行printf(“%c”,’D’-‘8’+’5’);的结果是(B)。A)66B)AC)BD)E知识点:数据类型与自动转换 9、段名访问的方式是(A)A)结构名.位段名B)位段名C)结构名D)*&位段名知识点:位段10、有字符数组a,则正确的输入语句是(C)。A)gets('a');B)scanf("%c",a);C)scanf("%s",a);D)gets("a");知识点:字符数组11、如果程序中有staticcharc;则编译时会对其自动设置初始值为(C)A)' 'B)" "C)0D)' '知识点:存储类型与静态变量12、如果程序中有语句FILEfp;fp=fopen("abc.txt","w");则程序准备做(C)。A)对文件读写操作B)对文件读操作C)对文件写操作D)对文件不操作13、如果有#definef(x,y)x+y及inta=2,b=3;则执行printf("%d",f(a,b)*f(a,b))后的值为(C)。A)36B)25C)11D)1314、在下面的说明中,(D)是指向函数的指针。A)int*p[];B)int(*p)[];C)*p();D)(*p)();15、如果在C程序中有main(intargc,char*argv[]),那么(D)是指命令行中的参数个数。A)argvB)argv[]C)argc,argv[]D)argc16、下列程序运行的结果是(B)。#includemain(){unsigneda,b,x;a=0x255;b=a<<4x=(~b)&0xff}A)0x55B)0xafC)0x50D)0xda17、下面程序中选择正确答案(C)main(){intk=0;while(printf(“*”)){k++;if(k<3)break;}}A)其中循环控制表达式与’0’等价B)其中循环控制表达式与0等价 C)其中循环控制表达式与1等价D)其中循环控制表达式不合法18、用文件包含形式的预处理时,当#include后面的文件名用尖括号括起,寻找被包含文件的方式为(B)A)先在源程序所在目录搜索,再按系统设定的标准方式搜索B)直接按系统设定的标准方式搜索C)仅仅搜索当前目录D)仅仅搜索源程序所在目录19、设有如下函数定义intf(char*s){char*p=s;while(*p)p++;return(p-s);}如果用printf(“%d”,f(“abcdef”));调用该函数,则输出结果为(B)。A)0B)6C)7D)奇怪字符20、程序段(C)intx=-1;do{x=x*x;}(!x);A)是死循环B)循环执行2次C)循环执行1次D)不合法二、不定项选择题。(每小题1分,共10分,错选、漏选均不得分)1、存储类型为static的静态变量的正确描述有(ABE)。A)静态变量有外部静态变量和部静态变量之分。B)静态变量的数据类型如果是整型,则其缺省初值由编译系统赋为0。C)部静态变量不能赋初值。D)所谓全局变量就是指静态变量。E)外部静态变量只在本文件中可见。2、下列哪些运算符的优先级相同且运算次序从左到右(AC)。A)()[]->B)++--C)<>=D)&&||E)&|3、在C语言中,下面哪些描述是正确的(BDE)。A)在switch(c)语句中,c可以是任意表达式。B)elseif语句可以转化为switch语句。C)大小写没有区别。D)goto语句必须与“转向标号”配合使用。E)C语言提供函数的递归调用机制。4、如有说明struct{intday;intmonth;intyear;}d,*pd;则下列哪些引用是正确的(ABC)。A)pd->yearB)(*pd).yearC)d.yearD)*pd.yearE)*(pd->year)5、在C语言中,系统指定的标准设备文件有(BCD)。 A)fopenB)stdinC)stdoutD)stderrE)fclose6、C语言中要求所用到的变量作强制性定义,其目的是(ACE)A)变量被指定类型后便于分配存单元B)确定变量的数量C)保证程序中正确地使用变量D)保证变量不同名E)根据变量的类型便于确定运算的合法性7、结构化程序是由(ADE)组成的。A)顺序结构B)模块结构C)树型结构D)选择结构E)循环结构8、下列程序中,若输入的命令行为:file1chinacomputer,则输出的结果为(B)。#includemain(intargc,char*argv){while(--argc>0)printf(“%s”,*++argv);}A)file1B)chinaC)chinacomputerD)language9、下面(ACDE)是位段特性的正确描述。A)位段空间的分配,不受机器的限制一律从左到右B)可以定义位段数组C)位段的长度不能大于存储单元的长度D)位段可以用整数格式输出E)位段的长度可以为010、函数返回值的正确描述是(ACE)。A)函数的返回值是通过函数中的return语句获得B)有多少个return语句就有多少个返回值C)在定义函数时,对函数值的说明类型与return语句表达式的类型应一致D)如果函数值的类型与return中表达式的类型不一致时,以表达式(应该以函数类型为准)为准E)当函数中没有return语句时,返回的是一个不确定的值三、判断分析题(如正确选√;如错误选Х。每小题1分,共10分)1、使用typedef可以自定义一种新的数据类型。(X)2、结构(struct)和联合(uion)类型实质上是相同的。(X)3、可以用顺序、分支、循环三种结构构造任何算法。(√)4、如有inta=2,b=4,c=8;则表达式((a>b)&&c>a)||(c>b)的值为真。(√)5、求n!既可以用递归的方式,也可以用递推的方式。(√)6、在C语言中,程序main(){intptr;*ptr=100;printf("%d",*ptr);}是正确的。(X)7、C语言的编译系统对宏命令的处理是在源程序编译阶段进行的。(X)8、C语言中的输入输出操作是通过专门的输入输出语句实现的。(X)9、C语言可以处理的文件类型是文本文件和二进制文件。(√)10、若定义int**p;则程序中调用*p时,它代表p的地址。(X) 四、填空题。(每空2分,共20分)1、构成递归的两个组成部分是递归方式和①递归结束条件。2、ANSIC提供了一个测试文件是否在结尾的状态函数feof(pf),当文件结束时feof函数的值为②非零整数。3、下面是输出链表head的函数print。#includestructstud{longnum;floatscore;structstud*next;};voidprint(structstud*head){structstud*p;p=head;if(head!=NULL)do{printf("%ld%5.1f ",p->num,p->score);___________③p=p->next________;}while(p!=NULL);}4、下面函数能找出字串s所包含的子串sub第1次出现的位置,请完善此程序填空。search(s,sub)_④char*s,*sub;_____{inti,j,k;for(i=0;s[i]!=’ ’;i++){for(j=i,k=0;_⑤s[j]!=' '&&sub[k]!=' '_&&s[j]==sub[k];j++,k++);if(sub[k]==’ ’)return(i);}return(-1);}5、算满足不等式1+1/2+1/3+1/4+…..+1/n>limit所需调和级数的项数.其中limit是提出的要满足的要求,而所求的是项数n,请完善此程序填空。#includemain(){inttermcount=0;floatsum,limit;sum=0.0;printf(“limit=?”);scanf(“%f”,&limit);do{termcount+=1; sum+=1.0/termcount;}while(_⑥_sum#includevoidmain(){chara[20]="abcdefwxy";chars[]="english";inti,j,k;for(k=0;s[k]!=' ';k++){j=0;while(s[k]>=a[j]&&a[j]!=' ')j++;for(i=strlen(a);i>=j;i--)_⑦_a[i]=a[i-1]________;a[j]=s[k];}puts(a);}7、函数fac的作用是用来求整数n1和整数n2的最大公约数,并返回该值,请完善程序。intfac(intn1,intn2){intt,x,y;if(n1>n2){t=n1;n1=n2;n2=t;}x=n1;y=n2;while(_⑧_y____){t=x%y;x=y;y=t;}return(x);}8、以下函数的功能是删除字符串s中的所有数字字符。请填空。vioddele(char*s){intn=0,i;for(i=0;s[i];i++)if(⑨s[i]>=’0’&&s[i]>=’9’)s[n++]=s[i];s[n]=⑩‘ ’;}五、阅读程序,写出运行结果。(每小题4分,共20分)1、下列程序执行后其输出结果是:#include fun3(intx){staticinta=3;a+=x;return(a);}voidmain(){intk=2,n;n=fun3(k);n+=fun3(k);printf("%d ",n);}程序的运行结果为:(5+7)=122、下列程序执行后其输出结果是:#includeunionee{inta;intb;}*p,s[4];voidmain(){intn=1,i;for(i=0;i<4;i++){s[i].a=n;s[i].b=s[i].a+1;n+=2;}p=&s[0];printf("%d,",p->a);printf("%d",++p->a);}程序的运行结果为:(共用体)2,33、下列程序执行后其输出结果是:#includevoidfun(intn,int*s){intf1,f2=1;if(n==1)*s=1;else{fun(n-1,&f1);*s=f1+f2;}}voidmain(){intx; fun(6,&x);printf("%d ",x);}程序的运行结果为:(递归调用)64、写出下面程序执行的结果:int*fun(int*p){staticinta=0;returnp+a++;}main(){int*fun(int*p);inta[10]={0,1,2,3,4,5,6,7,8},*p;p=fun(a+1);p=fun(p+2);printf(“%d”,*p);}程序的运行结果为:45、写出下面程序执行的结果:#includemain(){charc;inti,k;k=0;for(i=0;i<4;i++){while(1){c=getchar();if(c>’0’&&c<=’9’)break;}k=k*10+c-‘0’;}printf(“k=%d ”,k);}程序的意思是:从用户的输入字符串中提出前四个数字组成一个新串并输出。输入:1a2s3d4f输出:1234六、编程序。(每小题10分,共20分)1、编程将一个数组中的值,按逆序重新存放,例如原来是8,6,5,4,1,要求改为1,4,5,6,8。答:main(){inta[]={8,6,5,4,1},i,j,t; for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<5;i++)printf("%5d",a[i]);}2、编写函数insert(f,str1,str2)其功能是按f指定的位置,在字符串str1中插入str2。答:#include"string.h"voidinsert(intf,char*str1,char*str2){charstr[50];strcpy(str,str1+f);strcpy(str1+f,str2);strcat(str1,str);}voidmain(){charstr1[50]="abcdef";charstr2[50]="xyz";insert(2,str1,str2);puts(str1);}