求C语言的笔试题和编程题!!~~~谢谢~~!!

求C语言的笔试题和编程题!!~~~谢谢~~!!,第1张

一份曾经的考卷+答案~~//后面的编程题是以前做过的实验~~

程序设计基础-C》试卷

一、单项选择题

1. C 语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。

A、‘{‘ 和’}’B、‘[‘和’]’ C、“/*”和”*/” D、“*/”和”/*”

2. 下列运算符中,优先级最低的是_____。

A、* B、!= C、+D、=

3. 若变量已正确定义,表达式 (j=3, j++) 的值是_____ 。

A、3 B、 4 C、5D、0

4. 已知字符 ‘a’ 的ASCII码为 97 ,执行下列语句的输出是_____。

printf ("%d, %c", ’b’, ’b’+1 )

A、98, bB、语句不合法C、98, 99 D、 98, c

5. 表达式strcmp(“box”, “boss”) 的值是一个_______。

A、 正数 B、 负数 C、 0 D、 不确定的数

6. 数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素_____的值为6。

A、a[3][2] B、a[2][1]C、a[1][2] D、a[2][3]

7. 要调用数学函数时,在#include命令行中应包含_____。

A、 ”stdio.h”B、 ”string.h” C、 ”math.h”D、 ”ctype.h”

8. 判断i和j至少有一个值为非0的表达式是_____。

A、 i!=0 &&j!=0 B、i*j!=0 C、!(i==0 || j==0) D、i&&j

9. 若a是基本整型变量,c是单精度实型变量,输入语句______是错误的。

A、scanf(”%d,%f”, &a, &c) B、scanf(”d=%d, c=%f”, &a, &c)

C、scanf(”%d%f”, &a, &c) D、scanf(”%d%f”, a, c)

10. 若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于_____。

A、p++ B、x++ C、*(p++) D、&x++

11. 若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, _____是正确的。

A、p2=p1 B、p2=**p1 C、p2=&p1 D、p2=*p1

12. 下列程序段的输出是_____。

int c[]={1, 3, 5}

int *k=c+1

printf("%d", *++k)

A、 3 B、 5C、 4 D、6

13. 不正确的赋值或赋初值的方式是______。

A、char str[]="string";

B、char str[7]={'s', 't', 'r', 'i', 'n', 'g'};

C、char str[10];str="string";

D、char str[7]={'s', 't', 'r', 'i', 'n', 'g', ’\0’};

14. 对于以下结构定义,++p->str中的++加在_____。

struct {

int len

char *str

} *p

A、指针str上B、指针p上 C、str指的内容上 D、以上均不是

15. 对于如下说明,语法和语义都正确的赋值是_____。

int c, *s, a[]={1, 3, 5}

A、c=*sB、 s[0]=a[0] C、s=&a[1] D、 c=a

二、填空题

1. 写出下列程序段的输出结果。

float x1, x2

x1=3/2

x2=x1/2

printf("%d, %.1f", (int)x1, x2)

2. 表达式 (7<<1>>2^2 ) 的值是_______。

3. 写出下列程序段的输出结果。

#define A 10

#define B (A<A+2)-2

printf("%d", B*2)

4. 写出判断字符变量c是英文字母的表达式 。

5. 写出下列程序段的输出结果。

int k, x

for (k=0, x=0k<=9&&x!=10k++)

x+=2

printf ("%d, %d", k, x)

6. 写出下列程序段的输出结果。

printf(“%d, %d”, NULL, EOF)

7. 对于以下递归函数f,调用 f (3) 的返回值是_____。

f (int n)

{ return ((n>0) ? 2*f(n-1)+f(n-2) : -1) }

8. 写出下列程序段的输出结果。

char str[]="hello\tworld\n"

printf("%d, %c\n", sizeof(str), *(str+10))

9. 输入12345#后,写出下列程序的输出结果。

void main()

{ char c

for(c=getchar()getchar()!=’#’c=getchar())

putchar(c)

}

10. 执行程序find –nx ould text.txt时,*++argv[1]的值是_______。

三、程序阅读题

1. 若输入 3 1 2 3 <回车>, 则以下程序的输出结果是_______。

#include "stdio.h"

void main()

{ int i, j, n, a[10]

scanf("%d", &n)

for (i=0i<ni++)

scanf("%d",&a[i])

for (i=0i<ni++)

for (j=0j<nj++)

printf("%d, ", a[(i+j)%n])

}

2. 若输入89 76 24 25 9 8 11 16 35 4 <回车>, 则以下程序的输出结果是_______。

#include "stdio.h"

#define N 10

main()

{

int x[N], y1[N], y2[N]

int i, j, n1, n2, t, p

n1=n2=0

for(i=0i<Ni++){

scanf(“%d”, &x[i])

if(x[i] % 2==0) y1[n1++]=x[i]

else y2[n2++]=x[i]

}

for(i=1i<n1i++)

for(j=0j<n1-1j++)

if(y1[j]>y1[j+1]){

t=y1[j]y1[j]=y1[j+1]y1[j+1]=t

}

for(i=0i<n2-1i++){

p=i

for(j=i+1j<n2j++)

if(y2[p]<y2[j]) p=j

if(p!=i){

t=y2[i]y2[i]=y2[p]y2[p]=t

}

}

for(i=0i<n1i++) printf("%d, ", y1[i])

for(i=0i<n2i++) printf("%d, ", y2[i])

}

3. 以下程序的输出结果是_______。

#include <stdio.h>

int z

void p(int *x, int y)

{++*x

y--

z=*x+y+z

printf("%d, %d, %d#", *x, y, z)

}

void main()

{int x=1, y=5, z=9

p(&x, y)

printf("%d, %d, %d#", x, y, z)

}

4. 若输入 -6+15*3/5=<回车>, 则以下程序的输出结果是_______。

#include <stdio.h>

void main()

{

int m=0, sum=0

char c, oldc='+'

do {

c=getchar()

if(c<='9'&&c>='0') m=10*m+c - '0'

else {

if(oldc=='+') sum += m

else sum -= m

m=0

oldc=c

printf("%d, ", sum)

}

} while(c!='=')

}

四、程序填空题

下列程序的功能是创建单向链表。

#include <stdio.h>

#include <alloc.h>

struct link {

char name[10]

int mark

struct link * next

}

void insert(char *, int)

struct link * head = NULL

main()

{

charname[10]

intmark

struct link * t

while ( 1 ) {

scanf("%s %d", name, &mark)

if ( strcmp(name, "#") == 0 ) break

______(1)_______

}

for (t=head______(2)_______)

printf("<%s>: %d\n", t->name, t->mark)

}

void insert(char * name, int mark)

{

struct link * p

p = ______(3)_______

strcpy(p->name, name)

p->mark = mark

______(4)_______

if ( head != NULL ) ______(5)_______

head = p

}

答案

2000~2001学年《程序设计基础C》参考答案

一、单项选择题

C D A D A B C B D B A B C A C

二、填空题

1 1, 0.5

2 1

3 -3

4 c>=’a’&&c<=’z’|| c>=’A’&&c<=’Z’

5 5, 10

6 0, -1

7 -17

8 13, d

9 13

10 ‘n’

三、程序阅读题

1 1, 2, 3, 2, 3, 1, 3, 1, 2,

2 4, 8, 16, 24, 76, 89, 35, 25, 11, 9,

3 2, 4, 6#2, 5, 9#

4 0, -6, 9, 6, 1,

四、程序填空题

(1) insert(name, mark)

(2) t!=NULLt=t->next

(3) (struct link *)malloc(sizeof(struct link))

(4) p->next = NULL

(5) p->next = head

编程

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

给定平面任意两点坐标 (x1, y1) 和 (x2, y2),求这两点之间的距离(保留2位小数)。

要求定义和调用函数 dist(x1, y1, x2, y2)计算两点间的距离,函数形参x1、y1、x2和y2的类型都是double,函数类型是double。

输入输出示例:括号内是说明

输入

1 (repeat=1)

10 10 (x1=10, y1=10)

200 100 (x2=200, y2=100)

输出

Distance = 210.24

#include <stdio.h>

#include <math.h>

double dist(double x1, double y1, double x2, double y2)

int main(void)

{

int repeat, ri

double distance, x1, y1, x2, y2

scanf("%d", &repeat)

for(ri = 1ri <= repeatri++){

scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2)

/*---------*/

printf("Distance = %.2f\n", distance)

}

}

/*---------*/

程序填空。

求1~100中能被6整除的所有整数的和

#include <stdio.h>

int main(void)

{

int i, sum = 0

/*---------*/

printf("%d", sum)

}

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

读入1 个实数x和正整数 n(n<=50),计算并输出 x 的 n 次幂(保留2位小数),不允许调用pow函数求幂。

输入输出示例:括号内是说明

输入

2 (repeat=2)

1.5 2 (x=1.5,n=2)

2 7 (x=2,n=7)

输出

2.25

128.00

#include <stdio.h>

int main(void)

{

int i, n

int repeat, ri

double mypow, x

scanf("%d", &repeat)

for(ri = 1ri <= repeatri++){

scanf("%lf%d", &x, &n)

/*---------*/

printf("%.2f\n", mypow)

}

}

……编程题还有好多~~需要的话可以发给你~

2010年9月全国计算机二级C语言笔试试题:文字版

一、选择题(每小题2分,共70分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

(1)下列叙述中正确的是

A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D)上述三种说法都不对

(2)下列叙述中正确的是

A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D)上述三种说法都不对

(3)软件测试的目的是

A)评估软件可靠性

B)发现并改正程序中的错误

C)改正程序中的错误

D)发现程序中的错误

(4)下面描述中,不属于软件危机表现的是

A)软件过程不规范

B)软件开发生产率低

C)软件质量难以控制

D)软件成本不断提高

(5)软件生命周期是指

A)软件产品从提出、实现、使用维护到停止使用退役的过程

B)软件从需求分析、设计、实现到测试完成的过程

C)软件的开发过程

D)软件的运行维护过程

(6)面向对象方法中,继承是指

A)一组对象所具有的相似性质

B)一个对象具有另一个对象的性质

C)各对象之间的共同性质

D)类之间共享属性和 *** 作的机制

(7)层次型、网状型和关系型数据库划分原则是

A)记录长度

B)文件的大小

C)联系的复杂程度

D)数据之间的联系方式

(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是

A)一对一

B)一对多

C)多对多

D)多对一

(9)数据库设计中反映用户对数据要求的模式是

A)内模式

B)概念模式

C)外模式

D)设计模式

(10)有三个关系R、S和T如下:

则由关系R和S得到关系T的 *** 作是

A)自然连接

B)交

C)投影

D)并

(11)以下关于结构化程序设计的叙述中正确的是

A)一个结构化程序必须同时由顺序、分支、循环三种结构组成

B)结构化程序使用goto语句会很便捷

C)在C语言中,程序的模块化是利用函数实现的

D)由三种基本结构构成的程序只能解决小规模的问题

(12)以下关于简单程序设计的步骤和顺序的说法中正确的是

A)确定算法后,整理并写出文档,最后进行编码和上机调试

B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档

C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档

D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构

(13)以下叙述中错误的是

A) C程序在运行过程中所有计算都以二进制方式进行

B)C程序在运行过程中所有计算都以十进制方式进行

C)所有C程序都需要编译链接无误后才能运行

D)C程序中整型变量只能存放整数,实型变量只能存放浮点数

(14)有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是

A)a%(int)(x-y)

B)a=x!=y

C)(a*y)%b

D)y=x+y=x

(15)以下选项中能表示合法常量的是

A)整数:1,200

B)实数:1.5E2.0

C )字符斜杠:‘\’

D)字符串:"\007"

(16)表达式a+=a-=a=9的值是

A)9

B)_9

C)18

D)0

(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是

A)a<>b+c

B)ch=getchar()

C)a==b+c

D)a++

(18)有以下程序

#include<stdio.h>

main()

{int a=1,b=0;

if(!a) b++;

else if(a==0)if(a)b+=2;

else b+=3;

printf(”%d\n”,b);

程序运行后的输出结果是

A)0

B)1

C)2

D)3

(19)若有定义语句int a, b;double x;则下列选项中没有错误的是

A)switch(x%2) B)switch((int)x/2.0

{case 0: a++break {case 0: a++break

case 1: b++breakcase 1: b++break

default : a++b++default : a++b++

} }

C)switch((int)x%2)D)switch((int)(x)%2)

{case 0: a++break {case 0.0: a++break

case 1: b++break case 1.0: b++break

default : a++b++ default : a++b++

}}

(20)有以下程序

#include <stdio.h>

main()

{int a=1,b=2;

while(a<6){b+=a;a+=2;b%二10;}

printf(”%d,%d\n”,a,b);

程序运行后的输出结果是

A)5,11

B)7,1

C)7,11

D)6,1

(21)有以下程序

#include<stdio.h>

main()

{int y=10;

while(y--);

printf(”Y=%d\n”,Y);

程序执行后的输出结果是

A)y=0

B)y= -1

C)y=1

D)while构成无限循环

(22)有以下程序

#include<stdio .h>

main()

{char s〔」=”rstuv";

printf(”%c\n”,*s+2);

程序运行后的输出结果是

A)tuv

B)字符t的ASCII码值

C)t

D)出错

(23)有以下程序

#include<stdio.h>

#include<string.h>

main()

{char x〔〕=”STRING”;

x〔0」=0;x〔1〕=’\0’;x〔2」=’0’;

printf(”%d %d\n”,sizeof(x),strlen(x));

程序运行后的输出结果是

A)6 1

B)7 0

C)6 3

D)7 1

(24)有以下程序

#include<stdio.h>

Int f(int x);

main()

{int n=1,m

m=f(f(f(n)));printf(”%d\n”,m)

int f(int x)

{return x*2;}

程序运行后的输出结果是

A)1

B)2

C)4

D)8

(25)以下程序段完全正确的是

A)int *p scanf("%d",&p)

B)int *p scanf(“%d”,p)

C)int k, *p=&k scanf("%d",p)

D)int k, *p: *p= &k scanf(“%d”,p)

(26)有定义语句:int *p[4]以下选项中与此语句等价的是

A)int p[4]

B)int **p

C)int *(p「4」)

D)int (*p)「4」

(27)下列定义数组的语句中,正确的是

A)int N=10;B)#define N 10

int x[N] int x[N]

C)int x[0..10〕 D)int x〔〕;

(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是

A)int a[5]={0}

B)int b[]={0,0,0,0,0}

C)int c[2+3]

D)int i=5,d[i]

(29)有以下程序

#include<stdio.h>

void f(int *p);

main()

{int a〔5〕={1,2,3,4,5},*r=a;

f(r);printf(”%d\n”;*r);

void f(int *p)

{p=p+3;printf(”%d,”,*p);}

程序运行后的输出结果是

A)1,4

B)4,4

C)3,1

D)4,1

(30)有以下程序(函数fun只对下标为偶数的元素进行 *** 作)

# include<stdio.h>

void fun(int*a;int n)

{int i、j、k、t;

for (i=0i<n一1;1+=2)

{k=i‘

for(j=i;j<n;j+=2)if(a〔j〕>a〔k])k=j;

t=a〔i];a〔i]=a〔k];a〔k]=t;

main()

{int aa「10」={1、2、3、4、5、6、7},i;

fun(aa、7);

for(i=0,i<7i++)printf(”%d,”,aa〔i〕))

printf(”\n”);

程序运行后的输出结果是

A)7,2,5,4,3,6,1

B)1,6,3,4,5,2,7

C)7,6,5,4,3,2,1

D)1,7,3,5,62,1

(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是

A)if(strcmp(s2,s1)==0)ST

B)if(sl==s2)ST

C)if(strcpy(s l ,s2)==1)ST

D)if(sl-s2==0)ST

(32)以下不能将s所指字符串正确复制到t所指存储空间的是

A)while(*t=*s){t++s++;}

B)for(i=0t[i]=s[i〕i++);

C)do{*t++=*s++}while(*s)

D)for(i=0,j=0t[i++]=s[j++])

(33)有以下程序( strcat函数用以连接两个字符串)

#include<stdio.h>

#include<string .h>

main()

{char a〔20〕=”ABCD\OEFG\0”,b〔〕=”IJK”;

strcat(a,b);printf(”%s\n”,a);

程序运行后的输出结果是

A)ABCDE\OFG\OIJK

B)ABCDIJK

C)IJK

D)EFGIJK

(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母

#include<stdio.h>

#include<ctype.h>

void fun(char*p)

{int i=0;

while (p[i〕)

{if(p[i]==’ ’&& islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’

i++;

main()

{char s1〔100〕=”ab cd EFG!”;

fun(s1); printf(”%s\n”,s1);

程序运行后的输出结果是

A)ab cd EFG!

B)Ab Cd EFg!

C)aB cD EFG!

D)ab cd EFg!

(35)有以下程序

#include<stdio.h>

void fun(int x)

{if(x/2>1)fun(x/2);

printf(”%d”,x);

main()

{fun(7);printf(”\n”);}

程序运行后的输出结果是

A)1 3 7

B)7 3 1

C)7 3

D)3 7

(36)有以下程序

#include<stdio.h>

int fun()

{static int x=1;

x+=1;return x;

main()

{int i;s=1;

for(i=1;i<=5;i++)s+=fun();

printf(”%d\n”,s);

程序运行后的输出结果是

A)11

B)21

C)6

D)120

(37)有以下程序

#inctude<stdio.h>

#include<stdlib.h>

Main()

{int *a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b;

printf(“%d,%d,%d\n”,*a,*b,*c);

程序运行后的输出结果是

A)3,3,3B)2,2,3C)1,2,3D)1,1,3

(38)有以下程序

#include<stdio.h>

main()

{int s,t,A=10;double B=6;

s=sizeof(A);t=sizeof(B);

printf(“%d,%d\n”,s,t);

在VC6平台上编译运行,程序运行后的输出结果是

A)2,4 B)4,4 C)4,8 D)10,6

(39)若有以下语句

Typedef struct S

{int gchar h}T

以下叙述中正确的是

A)可用S定义结构体变量

B)可用T定义结构体变量

C)S是struct类型的变量

D)T是struct S类型的变量

(40)有以下程序

#include<stdio.h>

main()

{short c=124;

c=c_______;

printf(“%d\n”、C);

若要使程序的运行结果为248,应在下划线处填入的是

A)>>2 B)|248 C)&0248D)<<I

二、填空题(每空2分,共30分)

请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。

(1)一个栈的初始状态为空。首先将元素5,4,3,2,1依次入栈,然后退栈一次,再将元素 A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为【1】

(2)在长度为n的线性表中,寻找最大项至少需要比较【2】次。

(3)一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有【3】个结点。

(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是【4】程序。

(5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计【5】。

(6)以下程序运行后的输出结果是【6】。

#include<stdio.h>

main()

{int a=200,b=010;

printf(”%d%d\n”,a,b);

(7)有以下程序

#include<stdio.h>

main()

{int x,Y

scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);

程序运行时输入:1234567程序的运行结果是【7】。

(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【8】时表示逻辑值“真”。

(9)有以下程序

#include<stdio.h>

main()

{int i,n[]={0,0,0,0,0}

for (i=1;i<=4i++)

{n[i]=n[i-1]*3+1printf(”%d ",n[i]);}

}

程序运行后的输出结果是【9】。

(10)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)

int fun(int x〔N〕)

{int i,k=0;

for(i=0;i<N;I++)

if(x〔i〕

return x〔k〕;

}

(11)有以下程序

#include<stdio.h>

int*f(int *p,int*q);

main()

{int m=1,n=2,*r=&m;

r=f(r,&n);printf(”%d\n”,*r);

int*f(int *p,int*q)

{return(*p>*q)?p:q;}

程序运行后的输出结果是【11】

(12)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设M,. N已定义)

int fun(int a〔N〕[M))

{int i,j,row=0,col=0;

for(i=0;i<N;I++)

for(j=0;j

if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}

return(【12】):

}

(13)有以下程序

#include<stdio.h>

main()

{int n[2],i,j;

for(i=0;i<2;i++)n[i]=0;

for(i=0;i<2;i++)

for(j=0;j<2;j++)n〔j〕=n「i」+1;

printf(”%d\n”,n[1]);

程序运行后的输出结果是【13】

(14)以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。

#include<stdio.h>

main()

{int a〔10〕,*p,*s;

for(p=a;p-a<10;p++)scanf(”%d”,p);

for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;

printf("max=%d\n”,【14】);

(15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。

#include<stdio.h>

main()

{【15】*fp;

char a〔5〕={’1’,’2’,’3’,’4’,’5’},i;

fp=fopen(”f .txt”,”w”);

for(i=0;i<5;i++)fputc(a[i],fp);

fclose(fp);

为大家收集整理了《2006年3月全国计算机等级考试二级C语言笔试试题及答案》供大家参考,希望对大家有所帮助!!!

一、选择题(每小题2 分,共70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)下列选项中不符合良好程序设计风格的是______。

A)、源程序要文档化

B)、数据说明的次序要规范化

C)、避免滥用goto 语句

D)、模块设计要保证高耦合,高内聚

(2)从工程管理角度,软件设计一般分为两步完成,它们是______。

A)、概要设计与详细设计

B)、数据设计与接口设计

C)、软件结构设计与数据设计

D)、过程设计与数据设计

(3)下列选项中不属于软件生命周期开发阶段任务的是______。

A)、软件测试

B)、概要设计

C)、软件维护

D)、详细设计

(4)在数据库系统中,用户所见的数据模式为______。

A)、概念模式

B)、外模式

C)、内模式

D)、物理模式

(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。

A)、编码设计

B)、测试阶段

C)、运行阶段

D)、物理设计

(6)设有如下三个关系表下列 *** 作中正确的是

A)、T=R∩S

B)、T=R∪S

C)、T=R×S

D)、T=R/S

(7)下列叙述中正确的是

A)、一个算法的空间复杂度大,则其时间复杂度也必定大

B)、一个算法的空间复杂度大,则其时间复杂度必定小

C)、一个算法的时间复杂度大,则其空间复杂度必定小

D)、上述三种说法都不对

(8)在长为64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为______。

A)、63

B)、64

C)、6

D)、7

(9)数据库技术的根本目标是要解决数据的______。

A)、存储问题

B)、共享问题

C)、安全问题

D)、保护问题

(10)对下列二叉树: 进行中序遍历的结果是______。

A)、ACBDFEG

B)、ACBDFGE

C)、ABDCGEF

D)、FCADBEG

(11)下列有关内联函数的叙述中,正确的是______。

A)、内联函数在调用时发生控制转移

B)、内联函数必须通过关键字inline 来定义

C)、内联函数是通过编译器来实现的

D)、内联函数体的最后一条语句必须是rennin 语句

(12)下列情况中,不会调用拷贝构造函数的是______。

A)、用一个对象去初始化同一类的另一个新对象时

B)、将类的一个对象赋予该类的另一个对象时

C)、函数的形参是类的对象,调用函数进行形参和实参结合时

D)、函数的返回值是类的对象,函数执行返回调用时

(13)下列有关继承和派生的叙述中,正确的是______。

A)、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员

B)、派生类的成员函数可以访问基类的所有成员

C)、基类对象可以赋值给派生类对象

D)、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

(14)下列运算不能重载为友元函数的是______。

A)、= ( ) [] ->

B)、+ - ++ --

C)、> >= <=

D)、+= -= *= /=

(15)关于在调用模板函数时模板实参的使用,下列表述正确的是______。

A)、对于虚类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

B)、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,FC EA DBG则都可以省略

C)、对于虚拟型参数所对应的模板实参,若能够省略则必须省略

D)、对于常规参数所对应的模板实参,任何情况下都不能省略

(16)下列关于输入流类成员函数getline( )的描述中,错误的是______。

A)、该函数是用来读取键盘输入的字符串的

B)、该函数读取的字符串长度是受限制的

C)、该函数读取字符串时,遇到终止符便停止

D)、该函数读取字符串时,可以包含空格

(17)下列符号中,正确的C++标识符是______。

A)、enum

B)、2b

C)、foo-9

D)_32

(18)下列语句中,错误的是______。

A)、const int buffer=256

B)、const double*point

C)、int const buffer=256

D)、double*const point

(19)if 语句的语法格式可描述为

格式1:if(条件>)语句>

格式2:if(条件>)语句1>else语句2>

关于上面的语法格式,下列表述中错误的是

A)、条件>部分可以是一个if 语句,例如if(if(a =0)?)?

B)、条件>部分可以是一个if 语句,例如if(?)if(?)?

C)、如果在条件>前加上逻辑非运算符!并交换语句1>和语句2>的位置,语句功能不变

D)、语句>部分可以是一个循环语句,例如if(?)while(?)?

(20)有如下说明

int a [10]={1,2,3,4,5,,6,7,8,9,10},*p=a

则数值为9 的表达式是______。

A)、*p+9`

B)、*(p+8)

C)、*p+=9

D)、p+7

(21)或下面的函数调用

fun(a+b,3,max(n-1)b)

则fun 的实参个数是______。

A)、3

B)、4

C)、5

D)、6

(22)以下关键字不能用来声明类的访问权限的是______。

A)、public

B)、static

C)、protected

D)、private

(23)在公有继承的情况下,允许派生类直接访问的基类成员包括______。

A)、公有成员

B)、公有成员和保护成员

C)、公有成员、保护成员和私有成员

D)、保护成员

(24)关于运算符重载,下列表述中正确的是______。

A)、C++已有的任何运算符都可以重载

B)、运算符函数的返回类型不能声明为基本数据类型

C)、在类型转换符函数的定义中不需要声明返回类型

D)、可以通过运算符重载来创建C++中原来没有的运算符

(25)关于关键字class 和typename,下列表述中正确的是______。

A)、程序中的typename 都可以替换为class

B)、程序中的class 都可以替换为typename

C)、在模板形参表中只能用typename 来声明参数的类型

D)、在模板形参表中只能用class 或typename 来声明参数的类型

(26)有如下程序

#include

#include

using namespace std

int main(){

countreturn 0

}

若程序的输出是:

**12.345**34.567

则程序中下划线处遗漏的 *** 作符是______。

A)、setprecision(3)

B)、fixed

C)、setfill(*)

D)、stew(8)

(27)有如下程序

#include

#include

using namespace std

class MyClass{

public:

MyClass(){cout<<’A”}

MyClass(char c {cout<~MyClass(){sout<<’B”}

}

Int main(){

MyClassp1,*p2

p2=new MyClass(‘X’)

delete p2

return 0

}

执行这个程序幕上将显示输出______。

A)、ABX

B)、ABXB

C)、AXB

D)、AXBB

(28)有如下程序

#include

using namespace std

int i=1

class Fun{

public

static int i

int value(){return i-1}

int value ()const{return i+1}

}

int Funi=2

int main(){

int i=3

Fun Fun1

const Fun fun2

return 0

}

若程序的输出结果是:

123

则程序中下划线处遗漏的语句是______。

A)、cout<

B)、cout<

C)、cout<

D)、cout<

(29)有如下程序

#include

using namespace std

class Obj{

static int i

public:

Obj(){i++}

~Obj(){i--}

static int getVal(){teturn i}

}

int Obj::i=0

void f (){Obj ob2coutObj obl

F()

Obj*ob3=new ObjcoutDelete ob3cout}

程序的输出结果是______。

A)、232

B)、231

C)、222

D)、221

(30)有如下程序

#include

using namespace std

class Base{

protected

Base(){cout<<’A’}

Base(char c){cout<}

class Derivedpublic Base{

public:

Derived(char c ){cout <}

int main(){

Derived d1(‘B’)

return 0

}

执行这个程序屏幕上将显示输出______。

A)、B

B)、BA

C)、AB

D)、BB

(31)有如下类定义:

class MyBase{

int k

public

MyBase(int n=0):k(n){}

int value()const{return k}

}

class MyDerivedMyBase{

int j

public

MyDerived(int i): j(i){}

int getK()const {return k}

int gutj()const{return j}

}

编译时发现有一处语法错误,对这个错误准确的描述是

A)、函数getK 试图访问基类的私有成员变量K

B)、在类MyDerived 的定义中,基类名MyBase 前缺少关键字public、protected 或private

C)、类MyDerived 缺少一个无参的构造函数

D)、类MyDerived 的构造的数没有对基数数据成员K 进行初始化

 

(32)在一个派生类对象结束其生命周期时

A)、先调用派生类的析构函数后调用基类的析构函数

B)、先调用基类的析构函数后调用派生类的析构函数

C)、如果基数没有定义析构函数,则只调用派生类的析构函数

D)、如果派生类没有定义析构函数,则只调用基类的析构函数

(33)有如下的运算重载函数定义:

Double operator+(int i, int k){return double(i+k)}

但定义有错误,对这个错误的最准确的描述是______。

A)、+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B)、两个int 型参数的和应该是int 型,而这里将+的返回类型声明为double

C)、没有将运算符重载函数声明为某个类的友元

D)、C++已经提供了求两个int 型数据之和运算符+,不能再定义同样的运算符

(34)语句ofstreamf(“SALARY.DAT”,ios_base::app)的功能是建立流对象f,并试图打开文件SALARY.DAT 与f 关联,而且______。

A)、若文件存在,将其置为空文件;若文件不存在,打开失败

B)、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件

C)、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败

D)、若文件存在,打开失败;若文件不存在,建立一个新文件

(35)有如下程序

#include

using namespace std

class A{

public:

virtual Void funcl(){cout<<“A1”}

void fune2(){cout<<“A2”}

}

class B: public A{

public:

void func1(){cout<<“B1”}

void func2(){cout<<“B2”}

}

Int main(){

A*p=new B

p->funcl()

p->func2()

retum0

}

运行程序,屏幕上将显示输出______。

A)、B1B2

B)、A1A2

C)、B1A2

D)、A1B2

二、填空题(每空2 分,共30 分)请将每一个空的正确答案写在答题卡[1]~[15]序号的横线上,答在试卷上不得分。

(1)下列软件系统结构图的宽度为 [1] 。

(2) [2] 的任务是诊断和改正程序中的错误。

(3)一个关系表的行为 [3] 。

(4)按“行进后出”原则组织数据的数据结构是 [4] 。

(5)数据结构分为线性结构和非线性结构,带链的队列属于 [5] 。

(6)若有定义语句:int*a,b,则变量b 的数据类型是 [6] 。

(7)已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i-1 的单元,其中1≤i<n。例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a中元素为2,3,4,4。请将语句补充完整:

For(int i=0i(8)已知递归函数f 的定义如下:

int f (int n)

{

If(n<=1)return 1//递归结束情况

else return n*f(n-2)//递归}则函数调用语句f(5)的返回值是 [8] 。

(9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数,下列程序涉及到对象数组的创建和单个对象的创建,其输出结果是 [9] 。

#include

using namespace std

class Foo{

public:

Foo(int X){cout <<’A”}

Foo(){}

}

int main()

Foo f[3],g(3)

return 0

}

(10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。

#include

Using namespace atd

Class Foo{

int value

public:

Foo():value(0){}

Void setvalue(int value)

{ [10] =value//给Foo 的数据成员value 赋值}void print(){cout<}

Int main()

{

Foo f

f.setvalue(42)

f.print()

retum0

}

(11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是 [11] 。

#include

using namespace std

class Base{

public:

Void print(){cout<<‘B’}}

class Derived: public Base{

public

void print(){cout<<‘D’}}

int main()

{

Derived*pd=new Dreived)

Base*pb=pd

pb->print()

pd->print()

delete pd

return 0

}

(12)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承

private。已知有如下类定义:

class Base{

protected:

void fun(){}

}

Class Derived: Base{}

则Base 类中的成员函数fun(),在Derived 类中的访问权限是 [12] (注意:要求填写private、protected 或public 中的一项)。

(13)在MyClass 类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。

[13] MyClass::operator=(const MyClass rhs)

{

if(this=&rhs)return*this

value=rhs. value

return*this

}

(14)插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置,InsertSort 类的成员函数sort()实现了插入排序算法,请将画线处缺失的部分补充完整。

class InsertSort{

public:

InsertSort(int*a0,int n0):a(a0),n(n0){}//参数组首地址,n 是数组元素个数

void sort()

{//此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]?a[n-1]

for (int i=1iint j

for( [14] j>0--j){

if(t>a[j-1])break

a[j]=a[j-1]}

a[j]=t}}

protected:

int*a,n//指针a 用于存放数组首地址,n 用于存放数组元素个数

 };

(15)下列程序的输出结果是 [15]

#include

using namespace std

class A{

int a

public:

A():a(9){}

virtual void print() const {cout<}

class B:public A{

char b

public:

B(){b= ‘S’}

void print()const{cout<}

void show(Aa&X){X,print()}

int main()

{ Ad1*p

Bd2

p=&d2

d1,print()

d2,print()

p->print()

show(d1)

show(d2)

return 0}

一、 选择题:

01—05 DACBD 06—10CDBBA

11—15 ADDAD 16—20CCBBC

21—25 DACBC 26—30ABCDC

31—35 ADBAD 36—40BBADC

41—45 CBBCD 46—50BABDC

二、 填空题:

1、3

2、调试

3、元组

4、栈

5、线性

6、12346.0

7、10 11

8、1

9、 7 4

10、n=n/10

11、(x+8)

12、sin(x)

13、0

14、i%2==0

15、s--

16、*s++

17、18

18、16 11

19、->data

20、”rb”


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11666175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存