VC++考试试题

更新时间:2023-11-24 09:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

使用前注意保密

Visual C++ 程序设计语言第二次月考试卷

(第1-4章)

说明:

1、 本试卷为笔试题,含选择、填空、及编程三部分。 2、 本试卷满分为100分,考试时间为120分钟。 3、 所有答案必须写在答题纸上,否则不计成绩。

4、 填写答案时,注意题号;特别是填空题,做到题号、空格号与

试题对应。

5、 答题纸上必须写明学号(含班级号)、姓名。

一、选择题(每题1分,计20分)

1、设有变量说明:int a=5,b=4,c=3;下列表达式中,值为1的是 。

共10页,第1页

A.b –4||c-3 B.a%=a –1 C.a+=a-=a=a D.a+b>c&&b==c

2、设有说明语句“int a=4,b=5,c=6,d=7,m=1,n=1;”,则执行语句“c=(m=a>b)&&(n=c>d);”后,m和n的值分别为 。

A 1、1 B 1、0 C 0、1 D 0、0 3、已知int m=0;则下列正确的引用方法是 。

A.int &x=m; B.int &y=10; C.int &z; D.float &a=m;

4、设有说明语句:

char a[]=”12\\012!”,*p=a;

以下选项中,正确的是_________。

A.sizeof(a)的值与strlen(a)的值相等

B.strlen(a)的值与strlen(p)的值相等

C.sizeof(a)的值与sizeof(p)的值相等 D.sizeof(a)的值与sizeof(*p)的值相等

5、关于下面程序段的正确说法是 。

int n=0,s=0;

while(!n!=0) s+=++n; cout<

A.执行结果是0 B.执行结果是1

C.程序段中控制表达式是非法的 D.程序段执行无限次

6、设有说明“int a,b;”,执行语句“b=(a=3*5,a*4),a+15”之后,b的值为 。

A 15 B 30 C 60 D 90

7、以下函数定义编译不出错的为 。

A.double fun(int x,int y){z=x+y; return z; } B.fun(int x,y){int z=x+y; return z; }

C.fun(int x,int y){ int x,y;double z;z=x+y; return z;} D.double fun(int x,int y){double z=x+y;return z;}

8、设有说明语句int b[20],*p1=b; char c[20],*p2=c;则下列选项中存在语法错误的

是 。

A.cin>>p1; B.cout<>p2; D.cout<

9、设有说明语句int a[5][4],(*p)[4]=a;则下列选项中 不能表示a[2][3]

A.*(*(p+2)+3) B.*(p[2]+3) C.*(&p[2]+3) D.p[2][3]

10、设有int x,a,b,c; 下列合法的if语句是 。

A.if(a==b) x++; C.if(a<>b) x++;

B.if(a=b) x++;

11、设有说明语句int a[5]={1,2,3,4,5},b[5];char c[5]=”abcd”,d[5];则下列选项中正确是 。

共10页,第2页

A.b=a;

B.b[5]=a[5]; D.strcpy(d,c);

C.strcpy(b,a);

12、设有变量说明“int a[][2]={{2,5},{4,8}};int *pa,(*pb)[2];\则执行语句\;pb=a;\后,(*(pa+1))与(*(pb+1))的值为: 。

A.5,4 B.&a[1][0],4 C.5,&a[1][0] D. &a[0][1], &a[1][0]

13、执行以下程序时,假设输入字符串为:This is a apple! 则输出结果为 。

#include void main(void ) {

char s[100]; cin>>s; cout<

A、T int a=0; if(a>0) a++; else if(a<4) if(a<3)a+=3; else a+=4; else a+=5;

B、This C、This is a apple! D、不输出

14、程序下列程序段后,a的值为 。

A.2 B.3 C.4 D.5

15、判断字符串s1是否大于字符串s2,应当使用 。

A.if(strcmp(s1,s2)>0) B. if(strcmp(s1,s2)) C.if(strcmp(s2,s1)>0) D. if(s1>s2)

16、设有函数定义F(int &i),变量定义int n=10,则下面调用正确的是 。

A.F(20) B.F(10+n) C.F( n ) D.F( &n ) 17、下列有关函数缺省参数的描述中,正确的是 。

A.设置了缺省值的参数左边不允许出现没有指定缺省值的参数 B.同一个函数在同一个文件中可以提供不同缺省参数值

C.参数缺省值要设置在函数定义语句中,不能设置在函数说明语句中D.一个函数具有缺省值的参数只能有一个

18、在C++中,以下说法正确的为 。

A.定义函数时,形参类型说明可以放在函数体内 B.return后面的值不能为表达式

共10页,第3页

C.如果函数值的类型与返回值类型不同,则以函数值类型为准 D.如果形参与实参的类型不一致,以实参类型为准

19、下列关于条件语句的描述中, 是错误的。

A.if语句中只有一个else子句 B.if语句中可以有多个else if子句 C.if语句中if体内不能是switch语句 D.if语句的if体中可以是循环语句

20、不能作为函数重载判断依据的是 。

A.函数名相同 B.返回类型 C.参数个数不同 D.参数类型不同

二、填空题(计50分)

? 基本概念题(每题1分,计4分)

1、当数组名作为函数实参时,这属于函数参数三种传递方式中的 ① 传递。

2、在调用f1()函数的过程中,又调用了f1()函数,这种调用称为直接递归调用,而在调用f1()函数的过程中,调用了f2()函数,又在调用f2()函数的过程中调用了f1()函数,这种调用称为 ② 调用。

3、在VC集成环境下,系统默认的源程序扩展名为 ③ 。

4、设e是表达式,其类型可以是:float, int,char、enum。C++中规定,在开关语句中switch(e)中,e的值类型不能是 ④ 。

? 阅读程序题(每空2分) 5、执行下列程序后,输出的第一行为 (1) ,第二行为 (2) 。 #include

void swap1(int &p1,int &p2){int t; t=p1; p1=p2; p2=t;} void swap2(int *p1,int *p2){int *t; t=p1; p1=p2; p2=t;} void main(){

int a=5,b=6;

swap1(a,b);cout<

6、下列程序的输出结果第一行是 (3) ,第二行结果是 (4) 。

#include

void main(void)

{ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i=0,j=1;

for(;j<10;j++){

if(j>5){i+=2;break;} if(j%2!=0){

共10页,第4页

j+=2; continue;

}

cout<

cout<

7、以下程序输出的第二行是 (5) ,第三行是 (6) ,第四行是 (7) 。 # include int f(int i)

{ if(i==1) return 1; return i*f(i-1); }

void main(void) { int sum=0,t;

for(int j=1;j<=4;j++)

{ t=f(j);sum+=t;cout<< t << '\\t'<< sum <<'\\n';}

}

8、以下程序输出结果的第一行是 (8) ,第三行是 (9) 。 # include void show(char *s)

{ if (*s) {show(s+1);cout << *s;} } void main(void)

{ show( \ } 9、执行下列程序后,输出的第一行为 (10) ,最后一行为 (11) 。

#include int fun(int x,int y) { }

void main(void) {

cout<y?x:y);

int a=3,b=6,k=4,m; m=fun(fun(a,b), k);

共10页,第5页

}

cout<<\

10、执行下列程序时,输出的第一行为 (12) ,第二行为 (13) ,第三行为 (14) 。

#include #include void main() { }

int a[30],*p1=a,*p2,j=2; while(p1

for(p1=a;p1

for(p2=p1+1;p2

if(*p1&&*p2&&(*p2%*p1==0))*p2=0; *p1=j++; p1++;

for(j=0,p2=a;p2

if(*p2) { }

cout<<'\\n';

cout<

? 完善程序题(每空2分)

11、下面程序的功能是将从键盘输入的偶数写成两个素数之和。如32=3+29、32=13+19。请完善程序。 #include #include void main() {

int a,b,c,d; cin>>a;

for(b=3;b<=a/2;b+=2){

for(c=2; (15) ;c++)

if(b%c==0)break;

if(c>sqrt(b)) d= (16) ; else break;

共10页,第6页

}

for(c=2; (17) ;c++) }

if(d%c==0) (18) ; if(c>=d) cout<

12、以下程序的功能是:输入两个字符串,把这两个字符串拼成一个新的字符串,输出拼接后代字符串。

#include

char *stringcat(char *to,char *from)

//实现字符串拼接,返回值指向拼接后的字符串 { //将from所指向的字符串拼接到to所指向的字符串后面 char *p= to;

while(*to++); (19) ; while(*to++= *from++);return p; }

void main(void) {

char s1[200],s2[200];

cout<<\输入第一个字符串:\cout<<\输入第二个字符串:\

//把s1拼接到s2后面

cout<<\拼接后的字符串为:\ (20) ) <<'\\n';

}

13、下面的程序中,函数delstr的功能是:将字符串str中所有出现的子串str1全部删除。如字符串str为\ou are a student.He is a student too. \,子串str1为\,则本程序的输出为:“I am a. You are a. He is a too.”。 #include #include

char *delstr(char *str, char *str1) { char *p,*p1,*q1; int i;

if (*str=='\\0'||*str1=='\\0') return str; p=str; while(*p!='\\0')

{ p1=p;q1=str1;

while(*p1==*q1 && *q1!='\\0') (21) ;

共10页,第7页

if(p!=p1 && *q1=='\\0') { for(i=0;*p1!='\\0';i++,p1++) (22) =*p1; (23) ; } {

}

} p++;

return str;

void main(void)

char line[80] = \ou are a student.He is a student too.\

cout<

三、编程题(3*10分=30分)

1、把一组数据输入到整型数组a[10]中,使之升序排列后输出。(要求定义一个函数实现n个整数的从小到大排序,且在主函数中调用该函数。)

2、设计一个函数实现在字符串s1中从第m个字符开始插入字符串s2,在主程序中对该函数进行测试。(要求:不许使用库函数!)

3、实现对字符串循环左移的功能。即从第二个字符开始以后的每个字符都依次前移一个字符,而原来的第一个字符放在串中的最后一个字符,当要平移m个字符时,则要进行m次的循环左移。比如:“ABCD”循环左移3个字符后为“DABC”。

共10页,第8页

张家港校区2012年Visual C++第二次月考考试答题纸

班级: 学号: 姓名:

题号 得分 一、选择题 二、填空题 三、编程题 总计 一、选择题(每题1分,计20分) 题号 答案 题号 答案 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 二、填空题(前4空每空1分,其它空每空2分,计50分) ① ② (1) (2) (3) (4) (5) (6) (7) (8) (9)

③ ④

(13) (14) (15) (16) (17)

(18)

(19) (20) (21)

(10) (11) (12)

(22)

(23)

注意题目序号!

三、编程题(30分) 1、[程序] (10分)

共2页,第1页

2、[程序]

3、[程序]

10分) 10分)请把答案写到背面

共2页,第2页((

本文来源:https://www.bwwdw.com/article/9szt.html

Top