计算机类 二级 C
2013年9月全国计算机等级《二级C语言程序设计》上机临考冲刺试卷(4) 43 题 含答案 C
1 单选题 1 / 43
定义下列结构体(联合)数组: struct st { char name[15]; int age; }a[10]={"ZHA0",14,"WANG",15,"LIU",16," ZHANG",17); 执行语句printf("%d,%C",a[2].age,*(a[3].name+ 2))的输出结果为( )。
A 15,A B 16,H C 16,A D 17,H
查看答案 C. 16,A
2 单选题 2 / 43
有以下程序: main() {int i,j; for(j=10;j<11;j++) { for(i=9;i<J;I++) if(!(j%i))break; if(i==j-1) printf("%d",j); } } 输出结果是( )。
A 11 B 10 C 9 D 10 11
查看答案 B. 10
3 单选题 3 / 43
下列程序的输出结果是( )。 #include main() { int i; for(i=1;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
4 单选题 4 / 43
设fun()函数的定义形式为 void fun(char ch,float x){…} 则下列对函数fun的调用语句中,正确的是( )。
A fun("abc",3.0); B t=fun('D'.16.5); C fun('65',2.8); D fun(32,32);
查看答案 C. fun('65',2.8);
5 单选题 5 / 43
若a为int类型,且其值为3,则执行完表达式a+= a-=a*a后,a的值是( )。
A -3 B 9 C -12 D 6
查看答案 C. -12
6 单选题 6 / 43
若有以下定义: char a;int b; float c;double d; 则表达式a*b+b-c值的类型为( )。
A float B int C char D double
查看答案 D. double
7 单选题 7 / 43
若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。
A scanf("%d",a,b,c); B scanf("%d%d%d",a,b,c): C scanf("%d",p); D scanf("%d",&p);
查看答案 C. scanf("%d",p);
8 单选题 8 / 43
若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<B?A:C<D?C:D的值是(&NBSP;&NBSP;&NBSP; )。
A 1 B 2 C 3 D 4
查看答案 C. 3
9 单选题 9 / 43
有以下程序: main( ) { int k=5,n=0; do { switch(k) { case 1: case 3:n+=l;k--;break; defalut:n=0;k--; case 2: case 4:n+=2;k--;break: } printf("%d",n); }while(k>0&&n<5); } 程序运行后的输出结果是( )。
A 235 B 0235 C 02356 D 2356
查看答案 B. 0235
10 单选题 10 / 43
能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是( )。
A (x>=1)&&(x<=10)&&(x>=100)&&(X< =110) B (x>=1)||(x<2=10)||(x>=100)||(x<=1l0) C (x>=1)&&(x<=10)||(x>=100)&&(x<= 110) D (x>=1)||(x<=10)&&(x>=100)||(x<=l 10)
查看答案 C. (x>=1)&&(x<=10)||(x>=100)&&(x<= 110)
11 单选题 11 / 43
设有定义:“int a;float b;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b 的值分别是( )。
A 876和543.000000 B 87和6.000000 C 87和543.000000 D 76和543.000000
查看答案 B. 87和6.000000
12 单选题 12 / 43
用链表表示线性表的优点是( )。
A 便于随机存取 B 花费的存储空间较顺序存储少 C 便于捅入和删除操作 D 数据元素的物理顺序与逻辑顺序相同
查看答案 C. 便于捅入和删除操作
13 单选题 13 / 43
若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是( )。 int t[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]= &t[k][0];
A t[2][0] B t[2][2] C t[1][2] D t[2][1]
查看答案 C. t[1][2]
14 单选题 14 / 43
已有定义:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是( )。
A isupper(c) B 'A'<=c<='Z ' C 'A'<=c&&c<='Z' D c<=('z'-32)&&('a'-32)<=c
查看答案 B. 'A'<=c<='Z '
15 单选题 15 / 43
若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是( )。 for(i=6;i>0;i--) for(j=0;j<4;j++){…}
A 20 B 24 C 25 D 30
查看答案 B. 24
16 单选题 16 / 43
下列叙述中错误的是( )。
A 在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值 B 在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容 C 在C语言中,外部变量的隐含类型是自动存储类别 D 在C语言中,函数形参的存储类型是自动(auto)类型的变量
查看答案 A. 在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
17 单选题 17 / 43
有以下程序: void swap(char*x,char*y) { char t; t=*x;*x=*y;*y=t; } main() { char*s1="abe",*s2="123": swap(s1,s2); printf("%s,%s\n",s1,s2); } 程序执行后的输出结果是( )。
A 123,abe B abc.123 C 1bc,a23 D 321,cba
查看答案 C. 1bc,a23
18 单选题 18 / 43
有以下程序: fun(int x) { int P; if(x==0 || x==l)return(3); p=x-fun(x-2); return p; } main() {printf("%d\n",fun(7));} 程序执行后的输出结果是( )。
A 7 B 3 C 2 D 0
查看答案 C. 2
19 单选题 19 / 43
对线性表进行二分法检索,其前提条件是( )。
A 线性表以顺序方式存储,并按关键码值排好序 B 线性表以顺序方式存储,并按关键码的检索频率排好序 C 线性表以链式方式存储,并按关键码值排好序 D 线性表以链式方式存储,并按关键码的检索频率排好序
查看答案 A. 线性表以顺序方式存储,并按关键码值排好序
20 单选题 20 / 43
若有说明“char s1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是( )。
A s1的内容更新为abcdefghi B s1的内容更新为defghi\0 C s1的内容更新勾defghiabc\0 D s1的内容更新为abcdefghi\0
查看答案 D. s1的内容更新为abcdefghi\0
21 单选题 21 / 43
有下列程序: main() {int i,s=0,t[]={1,2,3,4,5,6,7,8,9); for(i=0;i<9;i+=2)s+=*(t+i); printf("%d\n",s); } 程序执行后的输出结果是( )。
A 45 B 20 C 25 D 36
查看答案 C. 25
22 单选题 22 / 43
下列程序的输出结果是( )。 main() { int a,b,d=25; a=d/10%9; b=a&&(一1); printf("%d,%d\n",a,b);}
A 6,1 B 2,1 C 6,0 D 2,0
查看答案 B. 2,1
23 单选题 23 / 43
下列程序的运行结果是( )。 #include void fun(int*S,int*p) { static int t=3: *p=s[t]; t--; } void main() { int a[]={2,3,4,5),k; int x; for(k=0,k<4,k++) { fun(a,&x); printf("%d,",x); } }
A 5,4,3,2 B 2,3,4,5 C 2,2,2,2 D 5,5,5,5
查看答案 A. 5,4,3,2
24 单选题 24 / 43
设在C语言中,float类型数据占4个字节,则double 类型数据占( )个字节。
A 1 B 2 C 8 D 4
查看答案 C. 8
25 单选题 25 / 43
在单链表中,增加头结点的目的是( )。
A 方便运算的实现 B 使单链表至少有一个结点 C 标识表结点中首结点的位置 D 说明单链表是线性的链式存储实现
查看答案 A. 方便运算的实现
26 单选题 26 / 43
下列叙述中正确的是( )。
A 只能在循环体内和switch语句体内使用break语句 B eotinue语句的作用是结束整个循环的执行 C 在循环体内使用break语句或continue语句的作用相同 D 从多层循环嵌套中退出时,只能使用got0语句
查看答案 A. 只能在循环体内和switch语句体内使用break语句
27 单选题 27 / 43
下列程序的输出结果是( )。 #include main( ) { int i,S=0; for(i=1;i<10;i++) if(!(i%2)&&!(i%3))s+=i; printf("%d\n",s); }
A 4 B 39 C 45 D 6
查看答案 D. 6
28 单选题 28 / 43
有以下程序: main() { int a[]=(2,4,6,8,10},y=0,x,*P; p=&a[1]; for(x=1;x<3;x++) y+=p[x]; printf("%d\n,y"); } 程序运行后的输出结果是( )。
A 10 B 11 C 14 D 15
查看答案 C. 14
29 单选题 29 / 43
下列程序的运行结果是( )。 #include #define ADD(x) x+x main() { int m=1,n=2,k=3; int S=ADD(m+n)*k; printf("s=%d",s); }
A sum=18 B sum=10 C sum=9 D sum=25
查看答案 B. sum=10
30 单选题 30 / 43
对如下二叉树进行后序遍历的结果为( )。
A ABCDEF B DBEAFC C ABDECF D DEBFCA
查看答案 D. DEBFCA
31 单选题 31 / 43
若有定义和语句: int**pp),*P,a=20,b=10; pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,*PP); 则输出结果是( )。
A 20,10 B 20,20 C 10,20 D 10,10
查看答案 D. 10,10
32 单选题 32 / 43
下列选项中不合法的十六进制数是( )。
A "0"xff B "0"X11 C "0"x1g D ”0”Xabc
查看答案 C. "0"x1g
33 单选题 33 / 43
有以下程序: int fun(int x) { int p; if(x==0||x==1)return(3); p=x-fun(x-2); return p; } main() { printf("%d\n",fun(7));} 执行后的结果是( )。
A 7 B 3 C 2 D 0
查看答案 C. 2
34 单选题 34 / 43
有以下程序 #include void fun(char**p) {++p;printf("%s",*p);} main() {char*a[]={"Morning","Afternoon","Evening"," Night"); fun(a); } 程序的运行结果是( )。
A Afternoon B fternoon C Morning D orning
查看答案 A. Afternoon
35 单选题 35 / 43
在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是( )。
A 数据库系统 B 文件系统 C 人工管理 D 数据项管理
查看答案 A. 数据库系统
36 单选题 36 / 43
下面程序输出的是( )。 main() { int t=l;fun(fun(t));} fun(int h) { static int a[3]={1.2.3}; int k; for(k=0;k<3;k++)a[k]+=a[k]-h; for(k=0;k<3;k++)printf("%d",a[k]); printf("\n"); return(a[h]);}
A 1,2,3, 1,5,9, B 1,3,5, 1,3,j, C 1,3,5, 0,4,8, D 1,3。5, -1,3,7,
查看答案 D. 1,3。5, -1,3,7,
37 单选题 37 / 43
以下程序的输出结果是( )。 main() {int x=0.5;char z='a'; printf("%d\n",(x&1)&&(z<'2'));}
A 0 B 1 C 2 D 3
查看答案 B. 1
38 单选题 38 / 43
设a=l,b=2,c=3,d=4,则表达式:“a<B?A:B< )。
A 4 B 3 C 2 D 1
查看答案 D. 1
39 单选题 39 / 43
以下程序的输出结果是( )。 main() { char w[][10]={"ABCD","EFGH","IJKL"," MNOP"),K; for(k=1;k<3;k++)printf("%s\n",w[k]);
A ABCD FGH KL B ABCD EFG U C EFG JK O D EFGH UKL
查看答案 D. EFGH UKL
40 单选题 40 / 43
有以下程序: #include main() { int x=4,y; do { y=x; if(!y)printf("x"); else printf("y"): x--; }while(x); } 程序的输出结果是( )。
A xyyx B yyyy C yyxx D yxyx
查看答案 B. yyyy
41 主观题 41 / 43
请补充函数proc(),该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成一个无符号长整数,并且逆序输出。结果由函数返回。例如,输入:1234567,结果输出:7654321。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填人所编写的若干表达式或语句。 试题程序: #include #include #include stdio.h> #include unsigned long proc(char*str) { unsigned long t=0: int k: int i=0; i=str|en(str); for(【1】 ;i>=0;i--) { k= 【2】 ; t= 【3】 ; } return t; } void main() { char str[8]; system("CLS"); printf("Enter a string made up of'0'to '9 ' digital character:\n"); gets(str); printf("The string,is:%s\n",str); if(strlen(str)>8) printf("The string is too tong!"); else printf("The result:%1u\n", proc(str)); }
查看答案 【1】--i【2】str[i]-'0 '【3】t*10+k
42 主观题 42 / 43
下列给定程序中,函数p roc()的功能是:先将字符串s 中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #include void proc(char*s,char*t) { int i,s1; s1=strlen(s); for(i=0;i<S1;I++) //****found**** t[i]=s[s1]; for(i=0;i<S1;I++) t[s1+i]一s[i]; t[2*s1]='\O0; } void main() { char s[100],t[100]; system("CLS"); print{("\nPlease enter string s:"); scanf("%s",s); proc(s,t); printf("The result is:%s\n",t); }
查看答案 错误:t[i]=s[l];正确:t[i]=s[i];
43 主观题 43 / 43
请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。 例如,若二维数组中的数据为 13 23 33 43 14 24 34 44 15 25 35 45 则一维数组中的内容应该是13 23 33 43 14 24 34 44 15 25 35 45。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序: #include void proc(int(*s)[103,int*b,int*n,int rain.int nn) { } void main() { int arr[10][10]={{33,33,33,33),{44,44,44,44}, {55,55,55,55}),i,j; int a[l00]={o),n=o; printf("The matrix:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%3d",arr[i][j]): printf("\n"); } proc(arr,a,&n,3,4): printf("The A array:\n"); for(i=0;i<N;I++) printf("%3d",a[i]): printf("\n\n"); }
查看答案 voiD proC(int(*s)[10],int*B,int*n,int mm,int nn) { int i,j,k=0; For(i=0;i<mm;i++)//i是表示其行的下标 For(j=0;j<nn;j++)//j是表示其列的下标 B[k++]=s[i][j]; //把其放到B的一维数组中 *n=k; //把B数组的长度通过形参n传回到主函数中 }