计算机类 二级 C
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(4) 43 题 含答案 C
1 单选题 1 / 43
下列选项中,均属于通用软件的是( )。
A Windows XP、AutoCAD、PowerPoint B Visual FoxPro、Excel、SPSS C Word、Photoshop、Excel D C++、CorelDraw、Firefox 2.0
查看答案 C. Word、Photoshop、Excel
2 单选题 2 / 43
一些重要的程序设计语言(in C语言和Pascal语言) 允许过程的递归调用,而实现递归调用中的存储分配通常用( )。
A 栈 B 堆 C 数组 D 链表
查看答案 A. 栈
3 单选题 3 / 43
以下程序输出结果是( )。 main() { int m=5; if(m++>5)printf("%d\n",m): else printf("%d\n",m--); }
A 7 B 6 C 5 D 4
查看答案 B. 6
4 单选题 4 / 43
有下列程序: #include main() { int a=6,b=7,m=1; switch(a%2) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序的运行结果是( )。
A 3 B 2 C 4 D 1
查看答案 B. 2
5 单选题 5 / 43
有以下程序 #include #include typedef strlIct{char name[9];char sex;float score[2];}STU; STU f(STU a) { STU b={"Zhao",'m',85.0,90.0);int i; strcpy(a name,b.name); sex:b.sex; for(i=0;i<2;i++)a.score[i]=b.score[i]; return a; } main() {STU c="Qian",'f',95.0,92.0},d; d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]); } 程序的运行结果是( )。
A Qian,f,95,92 B Qian,m,85,90 C Zhao,m,85,90 D Zhao,f,95,92
查看答案 C. Zhao,m,85,90
6 单选题 6 / 43
下列程序的输出结果是( )。 int fl(int x,int y){return x>y?x:y;) int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf("%d,%d,%d\n",e,f,g);}
A 4,3,7 B 3,4,7 C 5,2,7 D 2,5,7
查看答案 A. 4,3,7
7 单选题 7 / 43
C语言的基本单位是( )。
A 函数 B 过程 C 子程序 D 子函数
查看答案 A. 函数
8 单选题 8 / 43
以下程序的输出结果是( )。 void prt(int*m.int n) {int i; for(i=0;i<N;I++)M[I]++;) main() { int a[]={1,2,3,4,5),i; prt(a,5); for(i=0;i<5;i++) printf("%d,",a[i]);)
A 1,2,3,4,5 B 2,3,4,5,6 C 3,4,5,6,7 D 2,3,4,5,1
查看答案 B. 2,3,4,5,6
9 单选题 9 / 43
下列程序的输出结果是( )。 main() { int p[8]={11,12,13,14,15,16,17,18},i=0,j =0; while(i++<7) if(p[i]%2)j+=p[i]; printf("%d\n",j); }
A 42 B 45 C 56 D 60
查看答案 B. 45
10 单选题 10 / 43
下列程序的运行结果是( )。 #include void main() {int s=0,k; for(k=7;k>1;k--) {switch(k) {case 1: case 4: case 7: s++: break; case 2: case 3: case 6:break; case 0: case 5: s+=2: break; }} printf("s=%d",s); }
A s=3 B s=4 C s=5 D 无输出结果
查看答案 B. s=4
11 单选题 11 / 43
下列说法不正确的是( )。
A 调用函数时,实参可以是表达式 B 调用函数时,实参与形参可以共用内存单元 C 调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等 D 调用函数时,实参与形参的类型必须一致
查看答案 B. 调用函数时,实参与形参可以共用内存单元
12 单选题 12 / 43
有以下程序 #include #include void fun(char s[][10],int n) { char t;int i,j; for(i=0;i<N-1;J++) for(j=i+1,j<N;J++) /*比较字符串的首字符大小,并交换字符串的首字符*/ if(s[0])>s[i][c]{t=s[i][o];s[i][o]=s[j][o];s [j][0]=t;} } main() { char ss[5][10]="bcc","bbcc","xy","aaaacc"," aabcc"} fun(ss,5);printf("%s,%s",ss[0],ss[4]); } 程序运行结果是( )。
A xy,aaaacc B aaaacc,xy C xcc,aabcc D acc,xabcc
查看答案 D. acc,xabcc
13 单选题 13 / 43
链表不具有的特点是( )。
A 不必事先估计存储空间 B 可随机访问任意元素 C 插入、删除不需要移动元素 D 所需空间与线性表长度成正比
查看答案 B. 可随机访问任意元素
14 单选题 14 / 43
有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确
计算上述公式的程序段是( )。
A if(x>=0)y=sqrt(x); else y=sqrt(-x); B y=sqrt(x) if(x<0)y=sqrt(0x); C if(x>=O)y=sqrt(x); If(x D y=sqrt(x>=0? x:0x);
查看答案 B. y=sqrt(x) if(x<0)y=sqrt(0x);
15 单选题 15 / 43
标准库函数fgets(s,n,file)的功能是( )。
A 从文件file中读取长度为n的字符串存入字符数s由 B 从文件file中读取长度不超过n-1个字符的字符放到字符数组S中 C 从文件file中读到n个字符串存入字符数组s中 D 从文件file中读取长度为n-1个字符的字符串存字符数组S中
查看答案 B. 从文件file中读取长度不超过n-1个字符的字符放到字符数组S中
16 单选题 16 / 43
下述程序的输出结果是( )。 #include main() { int i; for(i=l;i<=10;i++) { if(i*i>=20)&&(i*i<=100)) break; } printf("%d\n",i*i); }
A 49 B 36 C 25 D 64
查看答案 C. 25
17 单选题 17 / 43
下列关于定点数与浮点数的叙述中错误自是( )。
A 在实数的浮点表示中,阶码是一个整数 B 整数是实数的特例,也可以用浮点数表示 C 实数的补码是其对应的反码在最后一位加1 D 相同长度的浮点数和定点数,前者可表示数的范围要大于后者
查看答案 C. 实数的补码是其对应的反码在最后一位加1
18 单选题 18 / 43
若有下列定义和语句: int u=011,v=0x11,w=11; printf("%o,%x,%d\n",u,v,w); 则输出结果是( )。
A 9,17,11 B 9,11,11 C 11,11,11 D 11,17,11
查看答案 C. 11,11,11
19 单选题 19 / 43
在执行完下列的c语句段之后,则B的值是( )。 char a='A'; int b; B=((34&&56)&&(a<'b'));
A 0 B 1 C TRUE D FALSE
查看答案 B. 1
20 单选题 20 / 43
设有下列程序段: char str[]="HelloWorld": char* plr; ptr=str: 执行上面的程序段后,*(ptr+10)的值为( )。
A '\0 ' B '0' C 不确定的值 D '0'的地址
查看答案 A. '\0 '
21 单选题 21 / 43
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是( )。
A 直接按系统设定的标准方式搜索目录 B 先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索 C 仅仅搜索源程序所在目录 D 仅仅搜索当前目录
查看答案 B. 先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
22 单选题 22 / 43
以下关于字符串的叙述中正确的是( )。
A C语言中有字符串类型的常量和变量 B 两个字符串中的字符个数相同时才能进行字符串大小的比较 C 可以用关系运算符对字符串的大小进行比较 D 空串一定比空格打头的字符串小
查看答案 D. 空串一定比空格打头的字符串小
23 单选题 23 / 43
对两个数组a和b进行下列初始化: char m[]="1234567"; char n[]={'1','2','3','4','5','6','7'}; 则下列叙述正确的是( )。
A 数组m与数组n完全相同 B 数组m与数组n长度相同 C 数组m比数组n长1 D 数组m与数组n中都存放字符串
查看答案 C. 数组m比数组n长1
24 单选题 24 / 43
下面程序的运行结果是( )。 #inelude void del(char*s) { int i,j; char*a; a=s: for(i=0,j=0;a[i]!='\0';i++) { if(a[i]>='0'&&a[i]<='9') {s[j]=a[i]; j++; } s[j]='\0'; } } main() { char*s="aa89gggh"; del(s): printf("\n%s",s); }
A 1 B 2 C 3 D 4
查看答案 D. 4
25 单选题 25 / 43
设有程序段: int k=12: while(k=1)k=k一1; 则下列描述中正确的是( )。
A while循环执行10次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次
查看答案 C. 循环体语句一次也不执行
26 单选题 26 / 43
有下列程序: #include main() { int x=0; int y=0; while(x<7 &&++v) { y--; x++;} printf("%d,%d",y,x); } 程序的输出结果是( )。
A 0,7 B 7,7 C 0,6 D 1,6
查看答案 A. 0,7
27 单选题 27 / 43
有以下程序: #include main() { char p[20]={'a','b','c','d'),q[]="abc",r[]=" abcde"; strcpy(p+strlen(q),r);strcat(p,q); printf("%d%d\n",sizeof(p),strlen(p)); } 程序运行后的输出结果是( )。
A 20 9 B 9 9 C 20 11 D 11 11
查看答案 C. 20 11
28 单选题 28 / 43
下列程序的输出结果是( )。 main() { int a=6,b=3,C; if(a<B) {c=a*b;printf("%d%d,%d\n",b,a,c);) else {c=b/a;printf("%d,%d,%d\n",b,a,c);) }
A 3,6,18 B 3,6,2 C 6,3,18 D 6,3,2
查看答案 B. 3,6,2
29 单选题 29 / 43
设j为Int型变量,则下面for循环语句的执行结果是( )。 for(j=10;j>3;j--) { if(j%3)j--; --j;--j; printf("%d",j); }
A 6 3 B 7 4 C 6 2 D 7 3
查看答案 B. 7 4
30 单选题 30 / 43
运行下列程序,若从键盘输入字符“a”,则输出结果是( )。 char c; c=getchar(); if(c>='a'&&c<='g')c=c+4: else if(c>='9'&&c<='2')c=c-21: else printf("input error! \n"); putchar(c);
A f B t C e D d
查看答案 C. e
31 单选题 31 / 43
设有如图所示二叉树,对此二叉树后序遍历的结果为( )。
A ZBTYCPXA B ATBZXCYP C TZBACYXP D ATBZXCPY
查看答案 A. ZBTYCPXA
32 单选题 32 / 43
以下程序的输出结果是( )。 main() { char ch[3][4]={"123","456","78"),*p[3];int i; for(i=0;i<3;i++)p[i]=ch[i]; for(i=0;i<3;i++)printf("%s",p[i]);}
A 123456780 B 123 456 780 C 12345678 D 147
查看答案 B. 123 456 780
33 单选题 33 / 43
下列程序的运行结果是( )。 int y=5,x=14; y=((x=3*Y,x+1),x-1); printf("x=%d,y=%d",x,y);
A x=27,y=27 B x=12,y=13 C x=15,y=14 D x=y=27
查看答案 C. x=15,y=14
34 单选题 34 / 43
有以下程序,其中函数f的功能是将多个字符串按字典顺序排序( )。 #include void f(char*p[],int n) { char*t;int i,j; for(i=0;i<N-1;I++) for(j=i+1;j<N;J++) if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j] =t;} } main() { char *P[5]={"abe","aabdfg","abbd","dcd- be","cd"}; f(p,5); printf("%d\n",strlen(p[1])); } 程序运行后的输出结果是( )o
A 2 B 3 C 6 D 4
查看答案 D. 4
35 单选题 35 / 43
执行语句printf(“%u\n”,+12345)的输出结果是( )。
A 12345 B 0 C -1 D 非定值
查看答案 A. 12345
36 单选题 36 / 43
以下程序的输出结果是( )。 main() { int i=0,S=0; for(;;) { if(i==3 ||i==5)continue; if(i==6)break; i++; s+=i: }; printf("%d\n",s); }
A 10 B 13 C 21 D 程序陷入死循环
查看答案 D. 程序陷入死循环
37 单选题 37 / 43
下列标识符不是关键字的是( )。
A break B char C Swithch D return
查看答案 C. Swithch
38 单选题 38 / 43
下列叙述正确的是( )。
A C语言中的文件是流式文件,因此只能顺序存取数据 B 打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 C 在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 D 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
查看答案 D. 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
39 单选题 39 / 43
三种基本结构中,能简化大量程序代码的是( )。
A 顺序结构 B 分支结构 C 选择结构 D 重复结构
查看答案 D. 重复结构
40 单选题 40 / 43
现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。
struct node
{bar data;
struct node*next;}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。
A q->next=r->next;P >next=r;r- >next =q; B q->next=r;q->next=r->next;r->next=q; C q->next=r->next;r->next=q;P->next=r: D q->next=q;P->next=r;q->next=r-> next;
查看答案 D. q->next=q;P->next=r;q->next=r-> next;
41 主观题 41 / 43
给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60~69的人数存到b[0]中,成绩为70~79的人数存到b[1]中,成绩为80~89的人数存到b[2]中,成绩为90~99的人数存到b[3]中,成绩为100的人数存到b[4]中,成绩为60分以下的人数存到b[5]中。 例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98,调用该函数后,b数组中存放的数据应是:1、2、1、3、0、2。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在横线上填入所编写的若于表达式或语句。 试题程序: #includedstdi0.h> void fun(int a[],int b[],int n) { int i; for(i=0;i<6;I++) b[i]=0; for(i=0:i<【1】 ;i++) if(a[i]<60) b[5]++; 【2】 b[(a[i]一60)/10]++; } void main() { int i,a[100]={93,85,77,68,59,43,94,75,98),b[6]; fun(【3】 ,9); printf("the result is:"); for(i=0;i<6;i++) printf("%d",b[i]); printf("\n,"); }
查看答案 【1】n 【2】ElsE 【3】A,B
42 主观题 42 / 43
下列给定程序中,函数proc()的功能是:根据输入的:个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回l;若不能,则返回0。 例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include int proc(int a,int b,int c) { if(a+b>c&&b-c>a&&a+c>b) { if(a==b&&b==c) //****found**** return 1; else if(a==b|| b==C||a==c) return 2; //****found**** else return 3; } else return 0; } void main() { int a,b,c,shape; printf("\nInput a,b,c:"); scanf("%d%d%d",&a,&b,&c); printf("\na=%d.b=%d,c=%d\n",a,b,c); shape=proc(a,b.c): printf("\n\nThe shape:%d\n",shape); }
查看答案 (1)错误:rEturn 1;正确:rEturn 3; (2)错误:rEturn 3;正确:rEturn 1;
43 主观题 43 / 43
请编一个函数fun(oh lr*str),该函数的功能是把字符串中的内容逆置。 例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序: #include #include #include #define N 100 void fun(char * str) { } void main() { char a[N]; FILE*out: printf("Enter a string:"); gets(a); printf("The origir al string is:"); puts(a); fun(a): printf("The string after modified:"); puts(a); strcpy(a,"Welcome!"); fun(a); out=fopen("outfile.dat","w"); fprintf(out,"%s".a); fclose(out); }
查看答案 ChAr Ch; int i,m,n; i=0: m=n=strlEn(str)-1; //求字符串str长度 whilE(i<(n+1)/2) //循环逆置交换 { Ch=str[i]; str[i]=str[m]; str[m]=Ch: i++; m--; }