收藏 分销(赏)

07-08C上非电类B卷B.doc

上传人:二*** 文档编号:4615000 上传时间:2024-10-07 格式:DOC 页数:9 大小:85KB 下载积分:5 金币
下载 相关 举报
07-08C上非电类B卷B.doc_第1页
第1页 / 共9页
本文档共9页,全文阅读请下载到手机保存,查看更方便
资源描述
东 南 大 学 考 试 卷( B 卷) 学号 姓名 密 封 线 课程名称 程序设计与C++语言(上) 考试学期 07-08-2 得分 适用专业 07级非电类专业 考试形式 闭卷 考试时间长度 120分钟 说明:此卷满分为100分。 一、单选题 (每题2分,共20分) 1. 建立C++语言的可执行程序,需要经过编辑源程序、对源程序编译、对多个程序文件进行连接和生成可执行程序等步骤,其中建立或生成文件的顺序如以文件扩展名识别,正确的顺序为 。 A、.exe .cpp .obj B、.cpp .exe .obj C、.obj .cpp .exe D、.cpp .obj .exe 2. 变量a, b, c,d均为double类型且已正确赋值,能够正确表示的表达式是___________。 A、 a+b/2*c-d B、(a+b)/2/(c-d)) C、(a+b)/2*(c-d) D、(a+b)/(2c-2d) 3. 若有如下程序段,其中s, x, y, z均为已定义的整型变量,且x, z均已赋值(z>0) s = x; y=1; while ( y<=z ) { s=s+1; y++; } 则与上述程序段功能等价的赋值语句是___________。 A、 s = x+y; B、s = s+z; C、s = x+z; D、s = y+z; 4. 以下程序段执行时的输出结果是___________。 int a=3, b=5, c=8, d; cout<<(d=a<b?(a>c?a:c):b)<<endl; A、3              B、5             C、8           D、不确定 5. 设有枚举类型定义:enum col{ left=6, right=1, up, down}; 则枚举量down的值为 。 A、 1 B、 3 C、 4 D、 9 6. 在以下程序段中,while语句的循环次数是 。 int i=2; while(i<10) { if(i<1) continue; if(i==6) break; i++; } A、5 B、6 C、10 D、无穷循环, 自 觉 遵 守 考 场 纪 律 如 考 试 作 弊 此 答 卷 无 效 7. 在一个程序段中,设已声明int a, b;则与下边语句等价的是____ ___。 switch(a) { case 1: case 2: b=a; break; case 3: case 4: b=2*a; } A、if((a==1) || (a==2)) b=a; else b=2*a; B、if((a==1) || (a==2)) b=a; else if((a==3) || (a==4)) b=2*a; C、if((a==1) && (a==2)) b=a; else if((a==3) && (a==4)) b=2*a; D、if((a==1)||(a==2)||(a==3)||(a==4)) b=2*a; 8. 以下关于调用函数时,形、实参结合的通用规则不正确的描述为_______。 A、实参可以是变量,也可以是常数或者表达式。 B、实参的个数可以多于形参,也可以少于形参。 C、系统将为形参分配内存单元。 D、实参必须与对应的形参类型相兼容。 9.下列哪个不是重载函数在调用时选择的依据_________。 A、形参类型 B、形参个数 C、函数名 D、函数返回值类型 10.若已定义double使用语句area=Trgl_Area(3.5, 4, 6.2);调用求三角形面积函数,则下列式中 是正确的函数原型说明。 A、float Trgl_Area(float,int, float); B、int Trgl_Area(x, y, z); C、double Trgl_Area(double, double, double); D、int Trgl_Area(float x, float y, float z); 二、概念填空题 (每空2分,共16分) 1. 变量的有效范围与其定义的位置有关,在函数外定义的变量其作用域在 (1) 中都有效。 2. 设有语句 int x; float y; 则计算表达式(x=7/2, y=x/2)后, x的值为 (2) ,y的值为 (3) 。 3. C++中的一些关键字可以代替逻辑运算符,如and代替&&,而not可以代 替 (4) 。 4. 若有宏定义:#defin A 2+radius #defin B 2*A #defin F(x)( (A+B) *x ) 则执行语句:int radius=5; int S = 2*( B+F(A+2) ); 后, S的值是 (5) 。 5. 一个试图从1到100求和的程序段: int Sum; for(int I = 1; I <= 100; I++) Sum += I; cout << Sum << endl; 执行后,屏幕输出的结果是-858988410,而不是5050,原因是: (6) 6. 如果定义了如下两个函数: int MoveValue(int A, int B = 3); double MoveValue(double A, int B, int C=1); 那么,调用语句 double X = MoveValue( '2' ); 的错误之处是: ___(7)___ 。 而调用语句 double Y = MoveValue(3.2/ 5, 6 / 7); 则是正确的,它调用的函数 是___(8)_ __ 。 三、阅读理解程序,写出输出结果 (共31分) 1.写出以下程序执行时的输出结果 (6分) #include <iostream.h> void main() { 答: int a=1, b=2, c, d; cout<<a<<'\t'<<b<<endl; d=a; for(int i=1; i<3; i++){ c=2*(a+b); d+=c; cout<<c<<'\t'<<d<<endl; a=b; b=c; } } 2写出以下程序段执行时的输出结果 (5分) #include <iostream.h> int f(int n) { if(n==1)return 1; else { cout<<n<<endl; 答: return 2*f(n-2); } } void main() { cout<<f(9)<<endl; } 3. 写出以下程序执行时的输出结果 (5分) #include <iostream.h> void main(){ 答: int s=0; for (int i=10; ; i--){ if (s>20) break; if (i%2==0) s+=i; } cout <<"s="<< s<<endl; for(i=2;i<=8;i++){ if(i%2) cout<<"M"; else continue; cout<<"S"; } cout<<"#\n"; } 4.写出以下程序执行时的输出结果 (5分) #include <iostream.h> int i=1; int fac(int n) { static int f=1; f=f*n; cout<< f<<','; return(f); } void main() 答: { int i, p=0; for(i=1;i<=3;i++) p=fac(i); cout<<"\np="<<p<<endl; p=0; for(i=1;i<=2;i++) p=fac(i)+::i++; cout<<"\np="<<p<<endl; p=0; for(i=1;i<=3;i++) p=p+::i; cout<<"p="<<p<<endl; } 5.写出以下程序执行时的输出结果 (6分) #include < iostream.h> void print(int m){ cout<<m%10<<','<<m/10%10<<','<<m/100; } void print(int x, int y){ 答: cout<<(x%10)*y<<endl; cout<<x%10<<(x-x%y)/y; } void main(){ int a=135, b=8642 ; print(a); cout<<endl; print(b, 1000); cout<<endl; } 6.阅读理解程序,回答问题 (4分) #include <iostream.h> int f(int a,int b) { if(a>6) return a+b; else f( a*=2, b++ ); return f(a,b); } 如果主函数中有语句 cout<<f(3,2)<<'\n'; 输出是: 如果主函数中有语句 cout<<f(1,3)<<'\n'; 输出是: 四、分析程序,填空完善程序 (共33分) 1. 验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+2 6=3+3 8=3+5 … … 50=3+47 此题要求将4~50之间的所有偶数用两个素数之和表示。用函数实现判断整数n是否为素数,若n是素数就返回1,否则返回0。 (8分) #include <iostream.h> int prime(int n){ for(int m=2; m<=sqrt(n); m++) if( (1) ){ return 0; } (2) } void main(){ for(int n=4; (3) ){ for(int a=2; a<=n/2 ; a++) if( prime(a) && (4) ) cout<<n<<'='<<a<<'+'<<n-a<<endl; } } 2. 利用展开式y=1/1!-2/2!+3/3!-…..,求y的近似值。要求前后两次求出的近似值x1和x0之差的绝对值小于10-6。其中,利用函数fc(int n)计算n!。(7.5分) #include<iostream.h> #include<math.h> int fc(int n) { int i,p=1; for(i=1;i<=n;i++) p*=i; (5) ; } void main() { int i=1,j=1; double x1=0,x0=1; while( (6) ) { (7) ; x1=x0+ (8) ; j= (9) ; i++; } cout<<"y="<<x1<<endl; } 3. 以下程序的功能是求出所有三位数中能被3整除,且至少有一位数字为5的所有整数,并要求输出的时候每行输出5个数。 (7.5分) #include <iostream.h> void main() { int i,a,b,c,j=1; for (i=100; i<1000; i++) if ( (10) ) { a= i/100 ; b= (11) ; c= (12) ; if ((a==5) (13) ) { cout<<i<<'\t'; if ( j%5==0 ) cout<<endl; (14) ; } } } 4. 本题包括Count()和Backout()两个函数,请阅读理解题目,完善程序。 Count()函数的功能是:从键盘输入一段英文文本,同时统计文本的行数、单词数及字符数。方法是逐个读入文本中的字符,边读入边处理,直到遇输入结束符EOF为止(假定单词之间以空格或换行符间隔,且文本开始没有空行)。最后输出统计结果。程序中定义变量line、word、chnum分别代表行数、单词数、字符数。另设一个变量isword,读到字符时isword=1,读到间隔符时isword=0;如果读到一个间隔符而此时isword值为1,则说明刚读完一个单词;(如果读到一个字符而此时isword值为0,则说明刚开始读一个单词;)。 (10分) #include<iostream.h> void Count(){ char ch; int line=0, word=0, chnum=0; int isword=0; do { ch=cin.get(); //从键盘读入字符 if (chnum=='\n') (15) if ( (16) ){ //读到非间隔符 if(isword==0) (17) ;//在单词的起始处给单词数+1 (18) ; //字符数加+1 isword=1; } else isword=0; //读到间隔符 } while(ch!= (19) ); cout<<"行数:"<<line<<endl; cout<<"单词数:"<<word<<endl; cout<<"字符数:"<<chnum<<endl; } Backout( )递归函数的功能是:从参数w表示的英文字母开始,倒序输出每个字母直至'Z'停止。 void Backout(char w){ if(w=='Z') (20) ; Backout(w+1); cout<< (21) <<','; } Main()函数的功能是:先调用Count()对一段文本作统计,再调用Backout()输出从Z至M的每一个字母。 void main( ) { char ch; Count(); (22) ='M'; cout<<"\n 从"<<ch<<"开始逆置输出:"; cout<< (23) <<','; Backout(ch+1); cout<< (24) <<endl; } 共 9 页 第 9 页
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服