计算机类 二级 C
2013年9月全国计算机等级《二级C语言程序设计》上机临考冲刺试卷(3) 43 题 含答案 C
1 单选题 1 / 43
下列程序的输出结果是( )。 #included stdi0.h> #included string.h> void fun(int b[]) { static int i=0; do { b[i]+=b[i+1]; }while(++i<2); } main() { int k,a[5]={1,3,5,4,9}; fun(a); for(k=0;k<5;k++)printf("%d",a[k]); }
A 13579 B 48579 C 48549 D 48999
查看答案 C. 48549
2 单选题 2 / 43
若有定义:“int a=4,b=5;float x=3.4,y=2.1;”,则下列表达式的值为( )。 (float)(a+b)/2+(int)x%(int)y;
A 5.5 B 55 C 5.500000 D 55.00000
查看答案 C. 5.500000
3 单选题 3 / 43
已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是( )。
A c=(c-'A')%26+'A' B c=c+32 C c=c-'A'+'A' D c=('A'+C)%26-'a'
查看答案 B. c=c+32
4 单选题 4 / 43
一个关系中属性个数为1时,称此关系为( )。
A 对应关系 B 单一关系 C 一元关系 D 二元关系
查看答案 C. 一元关系
5 单选题 5 / 43
下列叙述中正确的是( )。
A 软件测试应该由程序开发者来完成 B 程序经调试后一般不需要测试 C 软件维护只包括对程序代码的维护 D 以上三种说法都不对
查看答案 D. 以上三种说法都不对
6 单选题 6 / 43
有以下程序 int fun(int x,int y){return(x+y);} main() { int a=1,b=2,C=3,sum; sum=fun((a++,b++,a+b),c++ printf("%d\n",sum);) 执行后的输出结果是( )。
A 6 B 7 C 8 D 9
查看答案 C. 8
7 单选题 7 / 43
面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。
A 模拟现实世界中不同事物之间的联系 B 强调模拟现实世界中的算法而不强调概念 C 使用现实世界的概念抽象地思考问题从而自然地解决问题 D 不强调模拟现实世界中的算法而强调概念
查看答案 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题
8 单选题 8 / 43
有以下程序: viod fun(int a,int b,int c) { a=456:b=567;c=678;} main() { int x=10,y=20,z=30; fun(x,y,z): printf("%d,%d,%d\n",x,y,z); } 输出的结果是( )。
A 30,20,10 B 10,20,30 C 456,567,678 D 678,567,456
查看答案 B. 10,20,30
9 单选题 9 / 43
以下叙述中错误的是( )。
A 改变函数形参的值,不会改变对应实参的值 B 函数可以返回地址值 C 可以给指针变量赋一个整数作为地址值 D 当在程序的开头包含文件stdi0.h时,可以给指针变 量赋NULL
查看答案 C. 可以给指针变量赋一个整数作为地址值
10 单选题 10 / 43
有下列函数定义: fun(float h) { printf("%f,%f\n",h,h*h);) 该函数的类型是( )。
A int类型 B float类型 C void类型 D 函数无类型说明,定义有错
查看答案 A. int类型
11 单选题 11 / 43
下列函数的类型是( )。 fun(double x) { float y; y=3*x-4: return y; }
A int B 不确定 C void D float
查看答案 A. int
12 单选题 12 / 43
函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是( )。
A 文件开始 B 文件末尾 C 文件当前位置 D 以上都不对
查看答案 B. 文件末尾
13 单选题 13 / 43
有以下程序 #include main() {int y=9; for(;y>0;y--) if(y%3==0)printf("%d",--y); } 程序的运行结果是( )。
A 741 B 963 C 852 D 875421
查看答案 C. 852
14 单选题 14 / 43
以下程序的输出结果是( )。 main( ) { int i,a[4] [4]一{{1,3,5),{2,4,6},{3,5,7}}; printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2] [1],a[3][0]; }
A 0650 B 1470 C 5430 D 输出值不定
查看答案 A. 0650
15 单选题 15 / 43
下列选项不符合良好程序设计风格的是( )。
A 源程序要文档化 B 数据说明的次序要规范化 C 避免滥用goto语句 D 模块设计原则是高耦合、高内聚
查看答案 D. 模块设计原则是高耦合、高内聚
16 单选题 16 / 43
C语言结构体类型变量在程序执行期间,( )。
A 所有成员一直驻留在内存中 B 没有成员驻留在内存中 C 部分成员驻留在内存中 D 只有一个成员驻留在内存中
查看答案 A. 所有成员一直驻留在内存中
17 单选题 17 / 43
为了提高软件的独立性,模块之间最好是( )。
A 控制耦合 B 公共耦合 C 内容耦合 D 数据耦合
查看答案 D. 数据耦合
18 单选题 18 / 43
下列叙述中正确的是( )。
A break语句只能用于switch语句体中 B continue语句的作用是使程序的执行流程跳出包含它的所有循环 C break语句只能用在循环体内和switch语句体内 D 在循环体内使用break语句和continue语句的作用相同
查看答案 C. break语句只能用在循环体内和switch语句体内
19 单选题 19 / 43
下列程序的运行结果是( )。 main() { int x=1,y=3,a=0; while(x++!=(y-=l)) { a+=1; if(y<X)BREAK; } printf("%d,%d,%d\n",x,y,a); }
A 2,3,2 B 2,3,1 C 1,3,3 D 3,1,2
查看答案 D. 3,1,2
20 单选题 20 / 43
以下程序执行后sum的值是( )。 main() { int i,sum; for(i=1;i<6;i++)sum+=i: printf("1%d\n",sum): }
A 15 B 14 C 不确定 D 0
查看答案 C. 不确定
21 单选题 21 / 43
读取二进制文件的函数调用形式为:fread(buffer size,count,fp);,其中buffer代表的是( )。
A 一个文件指针,指向待读取的文件 B 一个整型变量,代表待读取的数据的字节数 C 一个内存块的首地址,代表读人数据存放的地址 D 一个内存块的字节数
查看答案 C. 一个内存块的首地址,代表读人数据存放的地址
22 单选题 22 / 43
有下列程序: int funl(double a){return a*=a;) int fun2(double x,double y) { double a=0,b=0; a=funl(x);b=funl(y);return(int)(a+h); } main() {double w;w=fun2(1.1,2.0),……) 程序执行后变量w中的值是( )。
A 5.21 B 5 C 5.0 D 0.0
查看答案 C. 5.0
23 单选题 23 / 43
以下只有在使用时才为该类型变量分配内存的存储类型说明是( )。
A auto和static B auto和register C register和static D extern和register
查看答案 B. auto和register
24 单选题 24 / 43
在深度为5的满二叉树叶中,叶子结点的个数为( )。
A 32 B 31 C 16 D 15
查看答案 C. 16
25 单选题 25 / 43
若有定义“float a=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为( )。
A 两个语句都是将变量a的值赋予变量P B *p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P C *p=a是将变量a的值赋予变量b,而&a是使P指向变量a D 两个语句都是使P指向变量a
查看答案 C. *p=a是将变量a的值赋予变量b,而&a是使P指向变量a
26 单选题 26 / 43
下列数据结构中,能用二分法进行查找的是( )。
A 顺序存储的有序线性表 B 结性链表 C 二叉链表 D 有序线性链表
查看答案 A. 顺序存储的有序线性表
27 单选题 27 / 43
数据的存储结构是指( )。
A 数据所占的存储空间 B 数据的逻辑结构在计算机中的存放形式 C 数据在计算机中的顺序存储方式 D 存储在计算机外存中的数据
查看答案 B. 数据的逻辑结构在计算机中的存放形式
28 单选题 28 / 43
下列叙述中错误的是( )。
A 线性表是由n个元素组成的一个有限序列 B 线性表是一种线性结构 C 线性表的所有结点有且仅有一个前件和后件 D 线性表可以是空表
查看答案 C. 线性表的所有结点有且仅有一个前件和后件
29 单选题 29 / 43
若有以下程序: int a=1,b=2: a=a^b: b=b^a: 则执行以上语句后a和b的值分别是( )。
A a=1,b=2 B a=3,b=l C a=3,b=2 D a=2.b=1
查看答案 B. a=3,b=l
30 单选题 30 / 43
下列叙述中正确的是( )。
A 一个逻辑数据结构只能有一种存储结构 B 逻辑结构属于线性结构,存储结构属于非线性结构 C 一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率 D 一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率
查看答案 D. 一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率
31 单选题 31 / 43
若二维数组a有m列,则在a[i][j]前的元素个数为( )。
A i*m+j-1 B i*m+j C J*m+i D i*m+j+1
查看答案 B. i*m+j
32 单选题 32 / 43
已知有如下结构体: struct sk { int a; float b; }data,*p; 若有P=&data,则对data的成员a引用正确的是( )。
A (*p).data.a B (*p).a; C p->data.a D p.data.a
查看答案 B. (*p).a;
33 单选题 33 / 43
若执行以下程序时从键盘上输入9,则输出结果是( )。 main( ) { int n; scanf(”%d”,&n); if(n++<10)printf(”/%d\n”,n); else printf(”%d\n”,n--); }
A 11 B 10 C 9 D 8
查看答案 B. 10
34 单选题 34 / 43
下列程序的输出结果是( )。 #include int fun(int a) { int b=0; static int c=4: a=c++:b++; return(a): main() { int a=2,i,c; for(i=0:i<2;i++) c=f(a+1): printf("%d\n",c); }
A 4 B 7 C 6 D 5
查看答案 D. 5
35 单选题 35 / 43
以下叙述中错误的是( )。
A 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B 数组名代表的是数组所占存储区的首地址,其值不可改变 C 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D 可以通过赋初值的方式确定数组元素的个数
查看答案 C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
36 单选题 36 / 43
软件生命周期是指( )。
A 软件产品从提出、实现、使用维护到停止使用退役的过程 B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程 D 软件的运行维护过程
查看答案 B. 软件从需求分析、设计、实现到测试完成的过程
37 单选题 37 / 43
有以下程序段 int j;float y;char name[50]: scanf("%2d%f%s",&i,&.y,name): 当执行上述程序段,从键盘上输入55566 7777abc后,y 的值为( )。
A 55566.0 B 566.0 C 7777.0 D 566777.0
查看答案 B. 566.0
38 单选题 38 / 43
若输入“abcdef”“abdef”,下述程序的输出结果为( )。 #include #include main() { int n; char s1[20],s2[20],*p1,*p2; scanf("%s",s1); scanf("%S",s2); p1=s1; p2=s2; n=strcmp(p1,p2); printf("Vood\n",n); }
A -1 B 0 C "abcdef" D "abdef"
查看答案 D. "abdef"
39 单选题 39 / 43
下列程序执行后的输出结果是( )。 void func(int*a,int b[]) { b[0]=*a+b;} main() { int a,b[5]; a=0.b[0]=3; func(&a,b);printf("%d\n",b[0]); }
A 6 B 7 C 8 D 9
查看答案 A. 6
40 单选题 40 / 43
#define能作简单的替代,用宏来替代计算多项式5 *x*x+5*x+5的值的函数f,正确的宏定义语句为( )。
A #define f(x) 5*x*x+5*x+5 B #define f5*X*x+5*x+5 C #define f(a) (5*a*a+5*a+5) D #define(5*x*x+5*x+5) f(x)
查看答案 C. #define f(a) (5*a*a+5*a+5)
41 主观题 41 / 43
请补充函数proc(),函数proc()的功能是求7的阶乘。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。 试题程序: #inelude<STDIO.h> long proc(int n) { if(【1】) return(n*proc(【2】); else if(【3】) return 1; } void main() { int k=7; printf("%d!=%1d\n",k,proc(k)); }
查看答案 【1】n>1【2】n-1 【3】n==1
42 主观题 42 / 43
下列给定程序中,函数proc()的功能是计算正整数m 各位上数字的平方和。 例如,输入498,则输出应该是161。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include<STDLIB.h> #include<STDIO.h> #include<CONIO.h> long proc(10ng m) { //****found**** long sum=1; do { sum+=(m%10)*(m%10); m/=l0; //****found**** } while(m) return(sum); } void main() { long n; system("CLS"); printf("Please enter a number:"); scanf("%1d",&n); printf("\n%ld\n",proc(n)); }
查看答案 1.错误:long sum=1; 正确:long sum=0; 2.错误:while(m) 正确:while(m);
43 主观题 43 / 43
假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为****a*bc*def*g** **,删除后,字符串中的内容则应当是a*bc*def*g** **。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序: #include<STDIO.h=:{> #include<CONIO.h> woid proc(char*st r) { } void main() char str[81]; printf("Enter a string:\n"); gets(str); proc(str): printf("The string after deleted:\n"); puts(str);}
查看答案 void proc(char*str) { char*p=str: while(*p=='*')p++;//通过P的移动来达 到使P指向第一个不是*号的字符 for#;*p!='\0 ';p++,str++#//把从第一个 不是*号的字符放到a中 ‘ *str=* P: *str='\0 '; //最后用'\0'作为字符串结束标志 }