资源描述
面向对象程序设计形成性考核册作业一
一、单选题
1. C++源程序文献缺省扩展名为( A )。
A. cpp B. exe C. obj D. lik
2. 编写C++程序普通需通过几种环节依次是( B )。
A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试
C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接
3. 程序中主函数名字为( A )。
A. main B. MAIN C. Main D. 任意标记符
4. 存储如下数据,占用存储字节最多是( D )。
A. 0 B. ‘0’ C. “0” D. 0.0
5. 假设在程序中 a、b、c 均被定义成整型,所赋值都不不大于1,则下列能对的表达代数式表达式是( D )。
A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c
6. x>0 || y==5相反表达式为( B )。
A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5
7. 字符串”a+b=12\n”长度为( B )。
A. 6 B. 7 C. 8 D. 9
8. 循环语句“for(int i=0;i<n;i++) cout<<i*i<<’ ’;”中循环体执行次数为( C )。
A. 1 B. n-1 C. n D. n+1
9. 在下面循环语句中循环体执行次数为( C )。
int i=0,s=0;while(s<20) {i++;s+=i;}
A. 4 B. 5 C. 6 D. 7
10. 在下面循环语句中循环体执行次数为( C )。
int i=0,s=0;while(s<20) {i++;s+=i;}
A. 4 B. 5 C. 6 D. 7
11. 循环体至少被执行一次语句为( C )。
A. for循环 B. while循环 C. do循环 D. 任一种循环
12. 在下面一维数组定义中,哪一种有语法错误。( C )
A. int a[]={1,2,3}; B. int a[10]={0};
C. int a[]; D. int a[5];
13. 假定一种二维数组定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]值为( C )。
A. 2 B. 4 C. 6 D. 8
14. 如下说法中对的是( B )。
A. C++程序总是从第一种定义函数开始执行
B. C++程序总是从main函数开始执行
C. C++函数必要有返回值,否则不能使用函数
D. C++程序中有调用关系所有函数必要放在同一种程序文献中
15. 如下关于函数模板论述对的是( C )。
A. 函数模板也是一种详细类型函数
B. 函数模板类型参数与函数参数是同一种概念
C. 通过使用不同类型参数,函数模板可以生成不同类型函数
D. 用函数模板定义函数没有类型
16. 函数原型语句对的是( B )。
A. int Function(void a); B.void Function (int);
C. int Function(a); D.void int(double a);
17. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参个数为( B )个。
A. 1 B. 2 C. 4 D. 5
18. 如下对的说法是( B )。
A. 顾客调用原则库函数前,必要重新定义
B. 顾客可以重新定义原则库函数,若如此,该函数将失去原有含义
C. 系统不容许顾客重新定义原则库函数
D. 顾客调用原则库函数前,不必使用预编译命令将该函数所在文献涉及到顾客源文献中
二、填空题
1. C++语言编译单位是扩展名为___.cpp_________程序________文献。
2. 用于输出表达式值原则输出流对象是__cout_______。
3. 当执行cin语句时,从键盘上输入每个数据后必要接着输入一种__空白______符,然后才干继续输入下一种数据。
4. 一条表达式语句必要以__分号____作为结束符。
5.若一种函数定义处在调用它函数之前,则在程序开始可以省去该函数_原型(或声明)_____语句。
6.当使用__void_____保存字作为函数类型时,该函数不返回任何值。
7. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y值分别为____4______和_____11_____。
8. 十进制常数245相应十六进制C++表达为___0Xf5_______。
9. float和double类型数据分别占用_____4____和___8_____个字节。
10. 字符串”This\’s a book.\n”长度为___15_______。
11. 假定x和y为整型,其值分别为16和5,则x%y和x/y值分别为____1______和______3____。
12. 假定x是一种逻辑量,则x || true值为___true_______。
13. 假定x是一种逻辑量,则x && !x值为____false______。
14. 数学算式C++表达式为__3*x*y/(x+y)______________。
15. 常数-4.205和6.7E-9分别具备____4______和_____2_____位有效数字。
16. 若x=5,y=10,则计算y*=++x表达式后,x和y值分别为__6____和__60____。
17. 含随机函数表达式rand()%20值在___0__至___19___区间内。
18. 假定x=5,y=6,则表达式x++*++y值为____35______。
三、程序填空:
1. 打印出2至99之间所有素数(即不能被任何数整除数)。
#include<iostream.h>
#include<math.h>
void main()
{
int i,n;
for(n=2;___(1)___;n++) {
int temp=int(sqrt(n)); //求出n平方根并取整
for(i=2;___(2)___;i++)
if(n%i==0) ___(3)___;
if(i>temp) cout<<n<<' ';
}
cout<<'\n';
}
(1) n<100或n<=99 (2) i<=temp或i<temp+1 (3) break
2. 下面函数是求两个整型参数a和b最小公倍数。
int f2(int a,int b)
{
int i=2,p=1;
do {
while(a%i==0 && ___(1)___) {
p*=i;a/=i;b/=i;
}
___(2)___;
}while(a>=i && ___(3)___);
return p*a*b;
}
(1)b%i==0或!(b%i) (2) i++ (3)b>=i
3. 主函数调用一种fun函数将字符串逆序。
#include<iostream.h>
#include<string.h>
___(1)___;
void main( ) {
char s[80];
cin>>s;
___(2)___;
cout<<”逆序后字符串:”<<s<<endl ;
}
void fun(char ss[]) {
int n=strlen(ss);
for(int i=0;___(3)____;i++) {
char c=ss[i];
ss[i]=ss[n–1–i];
ss[n–1–i]=c;
}
}
(1) void fun(char ss[]) (2) fun(s) (3)i<n/2
四、写出程序运营成果
1. #include<iostream.h>
void main()
{
int a,b;
for(a=1,b=2;b<50;) {
cout<<a<<' '<<b<<' ';
a=a+b;
b=a+b;
}
cout<<endl;
cout<<a<<' '<<b<<' '<<endl;
}
程序运营成果为:
1 2 3 5 8 13 21 34
55 89
Press any key to continue
2. #include<iostream.h>
void main()
{
int x=5;
switch(2*x-3) {
case 4:cout<<x<<’ ’;
case 7:cout<<2*x+1<<’ ’;
case 10:cout<<3*x-1<<’ ’;break;
default:cout<<"default"<<endl;
}
cout<<"switch end."<<endl;
}
程序运营成果为:
11 14 switch end.
Press any key to continue
3. #include<iomanip.h>
const int M=20;
void main()
{
int c2,c3,c5;
c2=c3=c5=0;
for(int i=1;i<=M;i++) {
if(i%2==0) c2++;
if(i%3==0) c3++;
if(i%5==0) c5++;
}
cout<<c2<<' '<<c3<<' '<<c5<<endl;
}
程序运营成果为:
10 6 4
Press any key to continue
五、指出程序或函数功能
1. #include<iostream.h>
void main()
{
int i,s=0;
for(i=2;i<=30;i+=2) s+=i*i;
cout<<"s="<<s<<endl;
}
功能是:计算并输出22+42+62+……+302值。
2. #include<iostream.h>
double f1(int n) {
double sign=1,s=1;
for(int i=2;i<=n;i++) {
s+=sign/(i*i);
sign*=-1;
}
return s;
}
void main()
{
int a;
cin>>a;
cout<<f1(a)<<endl;
}
功能是:计算并输出1+值,其中a值由键盘输入。
六、程序改错,请依照程序段或函数模块功能改写个别地方错误。
1. 假定规定下面程序输出成果为“11/15”,其主函数中存在着三行语句错误,请指出错误语句行行号并改正错误行。
#include<iostream.h>
class Franction { //定义分数类
int nume; //定义分子
int deno; //定义分母
public:
//把*this化简为最简分数,补出函数定义如下:
void FranSimp()
{
int m,n,r;
m=nume;n=deno;
r=m%n;
while(r!=0){m=n;n=r;r=m%n;}
if(n!=1){nume/=n,deno/=n;}
if(deno<0){nume=-nume;deno=-deno;}
}
//返回两个分数*this和x之和,补出函数定义如下:
Franction FranAdd(const Franction& x)
{
Franction c;
c.deno=deno*x.deno;
c.nume=nume*x.deno+x.nume*deno;
c.FranSimp();
return c;
}
//置分数分子和分母分别0和1
void InitFranction() {nume=0;deno=1;}
//置分数分子和分母分别n和d
void InitFranction(int n,int d) {nume=n;deno=d;}
//输出一种分数
void FranOutput() {cout<<nume<<'/'<<deno<<endl;}
};
void main() //1行
{ //2行
Franction a,b,c; //3行
a.InitFranction(6,15); //4行
b.InitFranction(1); //5行
c.InitFranction(); //6行
c= FranAdd(a,b); //7行
cout<<nume<<'/'<<deno<<endl; //8行
} //9行
//作业本本来未给出定义而只是用函数原型对FranAdd()作了声明,
//当前下面补出定义,否则整个程序虽能通过编译但无法运营
错误行行号为___5___、__7_____和__8_____。
分别改正为__ InitFranction(1,3);_、_ c=a.FranAdd(b);__和__ c.FranOutput();_。
∵11/15-6/15=5/15=1/3 ∴b分母是3
七、编程:
1. 计算1+3+32+...+310值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量标记符。
#include<iostream.h>
void main()
{
int i; //用i作为循环变量
int p=1; //用p作为累乘变量
int s=1; //用s作为累加循环变量
for(i=1;i<=10;i++) {p*=3;s+=p;}
cout<<s<<endl;
}
2. 求出从键盘上输入10个整数中最大值,规定输入变量用x表达,存储最大值变量用max表达。
#include<iostream.h>
void main()
{
int x,max;
cin>>x;
max=x;
for(int i=0;i<9;i++) {
cin>>x;
if(x>max) max=x;
}
cout<<"max:"<<max<<endl;
}
3. 某班级学生进行百米跑测试,规定成绩在12秒以内(含12秒)为先进,在12秒以上至15秒为达标,在15秒以上为不达标,编一程序,从键盘上输入每个人成绩,以x作为输入变量,并以不大于0任何数作为终结标志,分别用变量c1,c2和c3记录出成绩为先进、达标和不达标人数。
#include<iomanip.h>
void main()
{
int c1,c2,c3;
double x;
c1=c2=c3=0;
cin>>x;
while(x>0) {
if(x<=12) c1++;
else if(x<=15) c2++;
else c3++;
cin>>x;
}
cout<<c1<<' '<<c2<<' '<<c3<<endl;
}
展开阅读全文