文档视界 最新最全的文档下载
当前位置:文档视界 › 东南大学C程序设计上考试卷A卷.doc

东南大学C程序设计上考试卷A卷.doc

东南大学C程序设计上考试卷A卷.doc
东南大学C程序设计上考试卷A卷.doc

自觉遵守考场纪律

如名姓

东南大学 C++程序设计 ( 上 ) 考试卷 ( A卷)

课程名称考试学期得分

适用专业电类、非电类考试形式闭卷考试时间长度100 分钟

(一)选择题(每空 2 分;共 20 分)

1. 设有说明“ int i=10;float x; ”, 执行“ x=5/i; ”后 ,x 的值为 _____

A. 0.5

B. 0

C. 1.0

D. 以上皆否

2. 在 while(!a) 中;其中 !a 与表达式 __________等价。

A. a==0

B. a==1

C. a!=1

D. a!=0

线

3.下面的整型常数中错误的是 __________。

A. 123

B. 380

C. 038

D. 0xAF

4. 以下 __________不能用作标识符

A. a6.3

B. _1234

C. GetName

D. b_tree

5.设以下变量均为 int 类型;则值不等于 10 的表达式是 ________。

A.x=y=9,x+y,x+1 B .x=y=9,x+y,y+1

C.x=9,y=1,y=x,x+y D.y=9,y+1,x=y,x+1

6.若定义函数;int f(int x) {x*=10;return x;}执行以下语句;int

a=3,b;b=f(a) + f(a)之后a,b的值是________。

A.3,30B.30,60 C.300,330 D .3,330

7.已知int i=0;while(i++!=7);当while循环结束后;变量i的值为

________。

A.5B.6 C .7 D.8

8.表达式 __________是满足:当 c 的值为 1、 3、 5 三个数时值为“真” ;否

则值为“假”的表达式

A. (c=1)||(c=3)||(c=5)B.(c!=1)&&(c!=3)&&(c!=5)

C. (c==1)&&(c==3)&&(c==5)D.(c==1)||(c==3)||(c==5)

1 / 11

9.对于 C++的函数 , 正确的叙述是 __________________

A.函数的定义不能嵌套 , 但函数的调用可以嵌套

B.函数的定义可以嵌套 , 但函数的调用不能嵌套

C.函数的定义和调用都不能嵌套

D.函数的定义和调用都能嵌套

10.若定义函数时未指定函数的返回类型;则函数的返回类型为_______________

A.void B.int C.double D.编译出错(二)填空题(每空1分;共10分)

1.已知小写字母 A 的 ASCII 码值是 65;则下列语句执行后输出是

char c = 66;cout<

2.设 y 是 int 型变量;判断 y 为奇数的关系表达式为 _______________。

3.整型变量 n 的当前值是 6;执行以下 switch 语句后 n 的值是

switch(n){

case 6: ++n;

case 7: n--;

case 8: ++n;

default: n/=2;

}

4.全局与静态变量在程序运行时自动初始化为

5.已知x为double型;执行语句(float)x之后;x为类型。

6. break语句只能用在循环语句和______________语句中。

2 / 11

7.变量可分为局部变量和全局变量;其中全局变量的作用域范围______________

8.函数具有相同的函数名;但具有不同的参数个数或不同的参数类型;编译系统根据不同的参数去调用不同的函数;称 ____________函数。

9.有整型变量 a、b;则下列 for 循环中的输入语句最多可执行 __________ 次for(a=0,b=0;b!=10&&a<5;a++)cin>>b;

10.若有下列程序;则程序运行后的输出是

#include

using namespace std;

void f(int);

int main()

{

f(123);

return 0;

}

void f(int n)

{

if(n >= 10)

f(n/10);

cout<

}

(三)阅读程序并填空(每空 2 分;共 30 分)

1.有程序如下:

void main (void)

{

for(int i=1;i<7;i++) if(i%3==0) break; cout<

3 / 11

for(i=1;i<7;i++) if(i%3==0) continue; cout<

请问:程序输出为。

2.void main()

{

int a,b,c;

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

if(a

{if (a>c) cout<

else cout <

}

问:执行上述程序后输出。

3.写出下列程序段运行时的输出结果

void count(int x){

cout<<(x%10)%10<

}

void count(int x,int y){

cout<<(x%10)%10<<(x-x%y)/y;

}

void main(void){

int a=285,b=369;

cout<<" 原整数: "<

cout<<" 结果数: ";

count(a,b);

cout<

}

第一行是

第二行是

4 / 11

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

void main(void){

int a,b;

for(b=1,a=1;b<=50;b++)

{

if(a>=10) break;

if(a%2==1)

{ a+=5;

continue;

}

a-=3;

}

} 执行完毕之后 a 和 b 的值分别是 ___________和 _______________ 5、设有如下程序

int m=10;//A

int f(int x,int y)

{

int m=5;//B

m+=x*y; //C

return m; //D

}

void main()

{

int a=6,b=7;

cout<

}

执行完毕之后的输出结果是_________________

5.设有如下程序。

void main()

{

char c;

cin>>c;

if(c<='z'&&c>='a')

5 / 11

c=c-'a'+'A';

if(c<='Z'&&c>='A')

c=c-'A'+'a';

cout<

}

程序执行后 , 若输入英文字母’ B’, 则程序输出 _______________;若输入英文字母’ b’, 则程序输出 _______________。

6.阅读下列程序

#include

using namespace std;

int a,b;

void f(int j){

static int i=a; //注意静态局部变量

int m,n;

m=i+j; i++; j++; n=i*j; a++;

cout<<"i="<

cout<<"m="<

}

int main(){

a=1; b=2;

f(b); f(a);

cout<<"a="<

return 0;

}

该程序输出的第一行为;

第二行为;

第三行为 ___________________________________

7.阅读下列程序

int fun1(int x,int y);

void main()

{

int k=4,m=1,p;

6 / 11

p=fun1(k,m); cout<

p=fun1(k,m); cout<

}

int fun1(int x,int y)

{

static int m=0,i=2;

i+=m+1;

m=i+x+y;

return m;

}

该程序输出的第一行为;

第二行为 ___________________________________

8.阅读下列程序 ( 请注意 if 语句里面的符号 )

int num=4;

if(num=1) cout<< ”Alpha ”; else

if(num=2) cout<< ”Bata”; else

if(num=3) cout<< ”Gamma”; else

cout<< ”Delta ”;

上面程序段的输出分别为______________________。

(四)完善程序题(每空 2 分;共 20 分。其中非电类做 1-3 ;电类做 1-2 和第4题)

1.求出 1000 之内的“完数”。所谓“完数”;即这个数等于它的因子之和。例如: 6 是一个完数;即 6=1+2+3。要求每输出 4 个完数换一行。

#include

void main()

{ int n=0,s;

for(int i=1;i<=1000;i++)

{;

for(int j=1;j<=i/2;j++)

if()

7 / 11

s+=j;

if()

{ cout<

n++;

if()

cout<<'\n';

}

}

}

2、将 4~50 之间的所有偶数用两个素数之和表示。判断一个整数是否为素数用函数完成。

#include

#include

using namespace std;

bool prime(int m){

if(m==1||m==0) return false;

if(m==2) return true;

int k=(int)sqrt(m);

for(int i=2;i<=k;i++)//穷举法

if(m%i==0);

if(i>k);

else return false;

}

int main()

{

for(int n=4;n<=50;n+=2)

{

for(int i=2;i<=n/2;i++)

if(prime(i)&&prime(n-i))

cout<

return 0;

}

8 / 11

3、程序功能:输入三个整数 a、b、c;通过调用函数选出其中最大值;将该值输出。(本题限非电类同学完成;电类同学完成第 4 题)

#include

int max(int,int,int);

void main( ){

int a,b,c;

cout<< ”input a,b,c:”<

cin>>a>>b>>c;

cout<< ”a=”<

cout<< ”max of a,b,c is:”<<<

}

int max(int x,int y,int z){

int m;

if(x>=y&&x>=z);

else if() m=y;

else;

;

}

4、下面为复数类;其中设计了类的加号运算符重载。(本题限电类同学完成)#include

double Real,Image ;

:

)

{

}

void Print()

{cout<<"Real="<

/重载 +运算符函数

/重载 +运算符函数

};

9 / 11

){//重载 +

return; }

/重载 +

, Image); }

void main(void)

{

double d=0.5 ;

c3=c1+c2; c3.Print();

c4=c3+d; c4.Print();

}

(五)编程题(每题10 分;共 20 分;非电同学完成 1 和 2;电类完成 1 和 3)1、用任意一种方法求出费波纳切数列的前20 项并按每行 5 个数显示。

10 / 11

2、设计求 n!的函数; n 的缺省值为 10。

3、编写一个矩形类;其中数据成员包括矩形的左上和右下点的坐标共 4 个数值;函数成员包括类的构造函数、拷贝构造和打印函数(打印类的数据);并编写一个函数以求出矩形的面积。(本题限电类同学完成)

11 / 11

相关文档