东南大学C++程序设计(上)考试卷( A 卷)课程名称考试学期得分适用专业电类、非电类考试形式闭卷考试时间长度100分钟(一)选择题(每空2分,共20分)1. 设有说明“int i=10;float x;”,执行“x=5/i;”后,x的值为_____A. 0.5B. 0C.D. 以上皆否2. 在while(!a)中,其中!a与表达式__________等价。
A. a==0B. a==1C. a!=1D. a!=03. 下面的整型常数中错误的是__________。
A. 123B. 380C. 038D. 0xAF4. 以下__________不能用作标识符A. B. _1234 C. GetName D. b_tree5. 设以下变量均为int类型,则值不等于10的表达式是________。
A.x=y=9,x+y,x+1 B.x=y=9,x+y,y+1C.x=9,y=1,y=x,x+y D.y=9,y+1,x=y,x+16. 若定义函数,int f(int x) {x*=10;return x;} 执行以下语句,int a=3,b;b=f(a) + f(a) 之后a,b的值是________。
A.3,30 B.30,60 C.300,330 D.3,3307. 已知int i=0;while(i++!=7); 当while循环结束后,变量i的值为________。
A.5 B.6 C.7 D.88. 表达式__________是满足:当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)9. 对于C++的函数,正确的叙述是__________________A.函数的定义不能嵌套,但函数的调用可以嵌套B.函数的定义可以嵌套,但函数的调用不能嵌套C.函数的定义和调用都不能嵌套D.函数的定义和调用都能嵌套10. 若定义函数时未指定函数的返回类型,则函数的返回类型为_______________A.void B.int C.double D.编译出错(二)填空题(每空1分,共10分)1.已知小写字母A的ASCII码值是65,则下列语句执行后输出是char c = 66;cout<<c;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语句只能用在循环语句和______________语句中。
7. 变量可分为局部变量和全局变量,其中全局变量的作用域范围______________8. 函数具有相同的函数名,但具有不同的参数个数或不同的参数类型,编译系统根据不同的参数去调用不同的函数,称____________函数。
9. 有整型变量a、b,则下列for循环中的输入语句最多可执行__________ 次for(a=0,b=0;b!=10&&a<5;a++) cin>>b;10. 若有下列程序,则程序运行后的输出是#include<iostream>using namespace std;void f(int);int main(){f(123);return 0;}void f(int n){if(n >= 10)f(n/10);cout<<n%10;}(三)阅读程序并填空(每空2分,共30分)1.有程序如下:void main (void){for(int i=1;i<7;i++) if(i%3==0) break; cout<<i<<'\t';for(i=1;i<7;i++) if(i%3==0) continue; cout<<i<<'\t'; }请问:程序输出为。
2. void main(){int a,b,c;a=2,b=3,c=1;if(a<b){if (a>c) cout<<a;}else cout <<b;}问:执行上述程序后输出。
3. 写出下列程序段运行时的输出结果void count(int x){cout<<(x%10)%10<<x/10%10<<x/100; }void count(int x,int y){cout<<(x%10)%10<<(x-x%y)/y;}void main(void){int a=285,b=369;cout<<"原整数:"<<a<<endl;cout<<"结果数:";count(a,b);cout<<endl;}第一行是第二行是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; 设有如下程序。
void main(){char c;cin>>c;if(c<='z'&&c>='a')c=c-'a'+'A';if(c<='Z'&&c>='A')c=c-'A'+'a';cout<<c<<endl;}程序执行后,若输入英文字母’B’,则程序输出_______________;若输入英文字母’b’,则程序输出_______________。
6. 阅读下列程序#include<iostream>using namespace std;int a,b;void f(int j){static int i=a; 阅读下列程序int fun1(int x,int y);void main(){int k=4,m=1,p;p=fun1(k,m); cout<<p<<endl;p=fun1(k,m); cout<<p<<endl;}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( )s+=j;if( ){ cout<<i<<'\t';n++;if( )cout<<'\n';}}}2、将4~50之间的所有偶数用两个素数之和表示。
判断一个整数是否为素数用函数完成。
#include<iostream>#include<cmath>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<<n<<'='<<i<<'+'<<n-i<<endl;//列出所有可能组合}return 0;}3、程序功能:输入三个整数a、b、c,通过调用函数选出其中最大值,将该值输出。
(本题限非电类同学完成,电类同学完成第4题)#include<>int max(int,int,int);void main( ){int a,b,c;cout<<”input a,b,c:”<<endl;cin>>a>>b>>c;cout<<”a=”<<a<<”\tb=”<<b<<”\tc=”<<c<<endl;cout<<”max of a,b,c is:”<< <<endl;int max(int x,int y,int z){int m;if(x>=y&&x>=z) ;else if( ) m=y;else ;;}4、下面为复数类,其中设计了类的加号运算符重载。