大学MOOC 程序设计与算法语言(C++)(厦门理工学院)1450288225 最新慕课完整章节测试答案
第1章 绪论
文章目录
第1章 绪论 测验
1、单选题:
下列程序段的输出是()。short int i=65536; cout<<i<<’n’;
选项:
A: 65536
B: 0
C: -1
D: 有语法错,无输出结果。
答案: 【 0】
2、单选题:
下面的说法正确的是()。
选项:
A: cin对象设置的域宽只对与其相邻的下一个输入有效。
B: cin对象设置的域宽对所有输入有效。
C: 流插入符>>能够读取含空格的字符串。
D: 调用cin的getline函数不能读取含空格的字符串。
答案: 【 cin对象设置的域宽只对与其相邻的下一个输入有效。】
3、填空题:
C++语言是从 两种语言发展来的。
答案: 【 SIMULA语言和C语言】
4、填空题:
cin对象指定输入域宽的两种方法分别是 。
答案: 【 用操作符setw ()和直接调用width()】
第2章 C++的数据类型
第2章 C++的数据类型 测验
1、单选题:
以下对C++中变量使用的说法,正确的是()。
选项:
A: 变量名可以随意命名
B: 变量必须先定义再使用
C: 变量可以不区分数据类型
D: 变量未初始化时,其值为零
答案: 【 变量必须先定义再使用】
2、单选题:
以下常量表示中不正确的是()。
选项:
A: 0
B: ‘55’
C: 0x2a3
D: 103
答案: 【 103】
3、单选题:
下列选项中属于字符串常量的是()。
选项:
A: 'hello'
B: “ab0x123cd”
C: Hello
D: ‘a’
答案: 【 “ab0x123cd”】
4、单选题:
说明enum money {Fen, Jiao, Yuan=100, Tenyuan};中每个枚举变量所对应的实际值为()。
选项:
A: 0, 1, 100, 101
B: 1, 2, 100, 101
C: “Fen”, “Jiao”, “Yuan”或100, “Tenyuan”或101
D: “Fen”或1, “Jiao”或2, “Yuan”或100, “Tenyuan”或101
答案: 【 0, 1, 100, 101】
5、单选题:
若x, y, z的初值均为1,则执行表达式w=++x||++y&&++z后,x, y, z的值分别为()。
选项:
A: x=1, y=1, z=2
B: x=2, y=2, z=2
C: x=1, y=2, z=1
D: x=2, y=1, z=1
答案: 【 x=2, y=1, z=1】
6、单选题:
设a是整型变量,初值是6,执行完表达式a+=a-=a*a后,a的值为()。
选项:
A: 36
B: -60
C: 60
D: 0
答案: 【 -60】
7、单选题:
在C++中,要求运算数必须是整型的运算符是()。
选项:
A: %
B: /
C: <
D: !
答案: 【 %】
8、单选题:
关系式x>=y>=z的C++语言表达式是()。
选项:
A: (x>=y)&&(y>=z)
B: (x>=y)||(y>=z)
C: (x>=y>=z)
D: (x>=y)&(y>=z)
答案: 【 (x>=y)&&(y>=z)】
9、单选题:
设a、b、c都是int型变量,a=3, b=4, c=5,下列表达式中,值为0的表达式是()。
选项:
A: ‘a’&&’b’
B: a<=b
C: a||b+c&&b-c
D: !((a<b)&&!c||1)
答案: 【 !((a<b)&&!c||1)】
10、单选题:
下列语句中符合C++语法的语句是()。
选项:
A: a=7+b+c=a+7;
B: a=7+b++=a+7;
C: a=7+b, b++, a+7
D: a=7+b, c=a+7;
答案: 【 a=7+b, c=a+7;】
11、单选题:
下面程序的运行结果是()。#include <iostream>using namespace std;void main(){ int x=040; cout<<(x=x<<1)<<endl; }
选项:
A: 100
B: 160
C: 120
D: 64
答案: 【 64】
12、判断题:
常变量必须在定义时赋初值,且在程序的运行中值不可变。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、填空题:
设x=3, y=5, 表达式x=y==3运算后的值为 。
答案: 【 0】
14、填空题:
表示10<x<100或x<0的C++表达式是 。
答案: 【 (x>10)&&(x<100)||(x<0)】
15、填空题:
下列程序的运行结果是 。#include <iostream>using namespace std;void main( ){ int n1, n2; n1=123, n2=234; cout<< n1 & n2<<endl;cout << n1 | n2 <<endl;cout<< n1 ^ n2 <<endl; }
答案: 【 106
251
145】
16、填空题:
下列程序的运行结果是 。 #include <iostream>using namespace std;void main() { int num=39, mask; num >>= 3; mask = ~ ( ~0 << 3); cout<<"result="<<hex<<num & mask<<endl;}
答案: 【 result=0x4】
17、填空题:
下列程序的运行结果是 。#include <iostream>using namespace std;void main(){unsigned a=3,b;b=~a|a<<2+1;cout<<hex<<b<<endl; }
答案: 【 fffc】
18、填空题:
设a, b为整型量,且a=7, b=8,则表达式a=a|b<<2&&~b的值为 。
答案: 【 1】
19、填空题:
设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b应是 。
答案: 【 11110000】
第3章 C++语句
3.1 算法的基本概念和表示方法随堂测验
1、单选题:
对于用C++语言实现的算法,以下叙述中正确的是 ( )。
选项:
A: 必须要有输入和输出操作
B: 可以没有输出但必须要有输入
C: 可以没有输入但必须要有输出
D: 可以既没有输入也没有输出
答案: 【 可以没有输入但必须要有输出】
2、填空题:
三种基本结构分别是 、 和 。
答案: 【 顺序 选择 循环】
3.2 随堂测验填空题
1、填空题:
当从键盘输入10 20时,以下程序段的输出结果是 。 (区分==和=)#include<iostream>using namespace std;void main(){ int num1, num2; cout<<"Please input num1 and num2:n"; cin>>num1>>num2; if(num1 = num2) cout<<"num1=num2"<<endl; else cout<<"num1!= num2"<<endl;}
答案: 【 num1=num2】
2、填空题:
当输入1 0 0时,以下程序段的输出结果是 。 (易错的关系表达式)#include<iostream>using namespace std;void main(){ int a, b, c; cout<<"Please input a, b and c:n"; cin>>a>>b>>c; if(a<=b<=c) { cout<<"min=a="<<a<<endl; cout<<"max=c="<<c<<endl; }}
答案: 【 min=a=1
max=c=0】
3、填空题:
以下程序运行后的输出结果是 。 (条件表达式的多样性)#include<iostream>using namespace std;void main() { int a = 3, b = 4, c = 5, t = 99; if(b) if(a) cout<<a<<b<<t<<endl; else cout<<a<<b<<c<<endl; }
答案: 【 3499】
4、填空题:
以下程序运行后的输出结果是 。#include<iostream>using namespace std;void main(){ int a=5, b=8 , c=4 , d=3 , m=1, n=0, p; if( (m = a > b) && (n = c > d)) p = m + n; else p = m – n; cout<<"m="<<m<<", n="<<n<<", p="<<p<<endl;}
答案: 【 m=0,n=0,p=0】
3.2 随堂测验选择题
1、单选题:
要使以下程序的输出结果为10,则a和b应满足的条件是( )。#include<iostream>using namespace std;void main(){ int s, t, a, b; cin >> a >> b; s = t = 5; if(a > 0) s += 2; if(a > b) t = s + t;else if(a == b) t = 5; else t = 2 * s;cout << t << endl;}
选项:
A: a>0并且a<b
B: a<0并且a<b
C: a>0并且a>b
D: a<0并且a>b
答案: 【 a<0并且a<b】
2、单选题:
执行以下程序段后,a,b,c的值分别是( )。 int a, b = 20, c, x = 9, y = 8; a = (--x == y)? --x : y++; if(x < 9) b = x++; c=y;
选项:
A: 7, 8, 8
B: 7, 7, 8
C: 7, 8, 9
D: 8, 9, 9
答案: 【 7, 7, 8】
3.3 随堂测验填空题
1、填空题:
当从键盘输入'c'时,以下程序段的输出结果是 。 cin>>n; switch(n) { default: cout<<"errorn";break; case 'a': case 'A':case 'b':case 'B':cout<<"goodn";break; case 'c': case 'C':cout<<"passn"; case 'd': case 'D':cout<<"warnn"; }
答案: 【 pass
warn】
2、填空题:
以下程序的输出结果是 。 #include<iostream> using namespace std; void main( ) { int i=4; switch(i%4) { case 0: case 1: cout<<'D'+i<<endl; case 2: cout<<'E'+i<<endl; break; default: cout<<"n"; } }
答案: 【 72
73】
3、填空题:
以下程序的运行结果是 。#include<iostream>using namespace std;void main(){ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; case 1: b++; } case 2: a++;b++; break; case 3: a++;b++; } cout<<"a="<<a<<", b="<<b<<"n”;}
答案: 【 a=2, b=2】
3.3 随堂测验选择题
1、单选题:
若a和b均是整型变量,以下正确的switch语句是( )。
选项:
A: switch(a/b) {case 0:case1.5:y=a+b;break; case 2:case 3:y=a-b; }
B: switch(a*a+b*b); { case0:y=a+b;break; case1:y=b-a;break; }
C: switch a {case 0:x=a+b; case 1:y=a-b;break;}
D: switch(a+b) {case 0:x=a+b;break; case 1:y=a-b;break; }
答案: 【 switch(a+b) {case 0:x=a+b;break; case 1:y=a-b;break; }】
3.4 随堂测验填空题
1、填空题:
以下程序的输出结果是 。#include<iostream>using namespace std;void main(){ int num = 2; while(num-- ) ; cout<<num<<endl;}
答案: 【 -1】
2、填空题:
以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。(答案中请不要带空格,答案之间用3个空格键间隔) #include<iostream> using namespace std; void main() { float x,max,min; cin>>x; max=x; min=x; while( ) { if ( ) max=x; if( ) min=x; cin>>x; } cout<<"nmax="<< max <<"nmin="<< min<<"n"; }
答案: 【 x!=-1 x>max x<min】
3、填空题:
以下程序的输出结果是 。 #include<iostream> using namespace std;void main() { int x=5,y=9,a=0; while (x++!=y--) a+=1; cout<<"x="<<x<<",y="<<y<<",a="<<a<<"n"; }
答案: 【 x=8,y=6,a=2】
3.4 随堂测验选择题
1、单选题:
有以下程序段:int k = 0;while(k = 1) k++;则while循环执行的次数是()。
选项:
A: 无限次
B: 有语法错,不能执行
C: 一次也不执行
D: 执行1次
答案: 【 无限次】
3.5 随堂测验填空题
1、填空题:
以下程序的输出结果是 。 #include<iostream> using namespace std; void main() { int x = 4; do { x -= 3; cout<<x<<endl; }while(!( --x )); }
答案: 【 1
-3】
3.5 随堂测验选择题
1、单选题:
有以下程序段:#include<iostream>using namespace std;void main(){ int k = 0; do { k--; cout<<k<<endl; }while(k >= 0); }则do-while循环执行的次数是()。
选项:
A: 无限次
B: 有语法错,不能执行
C: 一次也不执行
D: 执行1次
答案: 【 执行1次】
3.6 随堂测验填空题
1、填空题:
以下程序的输出结果是 。#include<iostream>#include<iomanip>using namespace std;void main(){ int i; for (i=1;i>=0;) cout<<i--;}
答案: 【 10】
2、填空题:
下述程序计算Fibonacci数列的前20个数,且每行输出5个数,请填空。(答案中请不要带空格,答案之间用3个空格键间隔)#include<iostream>#include<iomanip>using namespace std;void main(){ int f,f1=1,f2=1; int i; cout<<setw(6)<<f1; cout<<setw(6)<<f2; for (i=3;i<=20;i++) { f = ; cout<<setw(6)<<f; if( ) cout<<endl; f1=f2; ; }}
答案: 【 f1+f2 i%5==0 f2=f】
3、填空题:
下述程序计算从键盘输入的两个数的最大公约数,请填空。(答案中请不要带空格,答案之间用3个空格键间隔)#include<iostream>#include<iomanip>using namespace std;void main(){ int x, y, r, gcd; cout<<"Enter two number: n "; cin>> x>>y; r= ; while ( ) { x=y; y=r; r= ; } cout<<"The result is "<<y<<endl;}
答案: 【 x%y r!=0 x%y】
3.6 随堂测验选择题
1、单选题:
以下程序的执行结果是( )。#include<iostream>using namespace std;void main(){ int i, sum=0; for(i=1;i<=5;sum++) sum+=i; cout<<sum<<endl;}
选项:
A: 6
B: 5
C: 无限循环
D: 0
答案: 【 无限循环】
3.7 随堂测验填空题
1、填空题:
以下程序的运行结果是 。#include<iostream>using namespace std;void main(){ int a = 0, b = 1; for ( ; a<5 ; a++, b++) { if (( a+b ) % 5 == 0) continue; b += a; } cout<<"a="<<a<<", b="<<b<<"n";}
答案: 【 a=5, b=13】
2、填空题:
当从键盘输入2453时,以下程序的运行结果是 。#include<iostream>using namespace std;void main(){ char c; cin.get(c); while(c !='n') { switch(c - '2') { case 0: case 1: cout<<(char)(c+1); break; case 2: cout<<(char)(c+2); break; case 3: cout<<(char)(c+3); default: cout<<(char)(c+4); break; } cin.get(c); };}
答案: 【 36894】
3.7 随堂测验选择题
1、单选题:
在循环结构的循环体中执行break语句,其作用是( )。
选项:
A: 结束本次循环,进行下次循环
B: 继续执行break语句之后的循环体中各语句
C: 跳出该循环体,提前结束循环
D: 终止程序运行
答案: 【 跳出该循环体,提前结束循环】
2、单选题:
以下程序的运行结果是( )。#include<iostream>using namespace std;void main(){ int i=1; while(i) { cout<<"*"; i++; if(i<3) break; } cout<<"n";}
选项:
A: *
B: ***
C: **
D: ****
答案: 【 *】
3、单选题:
以下程序的运行结果是( )。#include<iostream>using namespace std;void main(){ int i, sum=0; for(i=1;i<10;i++) { if(i%5==0) continue; sum+=i; break; } cout<<sum<<"n";}
选项:
A: 1
B: 40
C: 无限循环
D: 无输出结果
答案: 【 1】
第3章 C++语句 测验
1、单选题:
以下关于switch 语句和break 语句中,_______是正确的。
选项:
A: 在switch语句中,可以根据需要使用或不使用break语句
B: switch语句中必须用break 语句
C: break语句只能用于switch 语句
D: break语句是switch 语句必须的一部分
答案: 【 在switch语句中,可以根据需要使用或不使用break语句】
2、单选题:
三元条件运算符ex1?ex2:ex3,相当于下面_______语句。
选项:
A: if(ex2) ex1;else ex3;
B: if(ex1) ex2;else ex3;
C: if(ex1) ex3;else ex2;
D: if(ex3) ex2;else ex1;
答案: 【 if(ex1) ex2;else ex3;】
3、单选题:
以下程序运行后的输出结果为_______。#include<iostream.h>void main(){ int i=-1, j=1; if((++i<0)&&!(j--<=0)) cout<<i<<" "<<j<<endl; else cout<<j<<" "<<i<<endl;}
选项:
A: -1 1
B: 1 0
C: 0 1
D: 0 0
答案: 【 1 0】
4、单选题:
若有程序段如下: a=b=c=0;x=35; if(!a) x; else if(b); if (c) x = 3; else x = 4;执行后,变量x 的值是_______________。
选项:
A: 35
B: 4
C: 34
D: 3
答案: 【 4】
5、单选题:
运行下列程序段后a的值是_______________。int a = 10; switch(a){ case 9: a++;case 10: a++;case 11: a++;default: a++;}
选项:
A: 10
B: 11
C: 12
D: 13
答案: 【 13】
第3章补充 结构体与链表
(补充)3.1 结构体的定义随堂测验
1、填空题:
为了建立如图所示存储结果,data为数据区,next为指向结点的指针域,请填空: data next struct link{ char data; ;}node;
答案: 【 struct link *next】
(补充)3.2 结构体的应用随堂测验
1、单选题:
以下程序的运行结果是()。 #include<iostream>using namespace std;void main( ){ struct cmplx { int x; int y;} cnum[2]={1, 3, 2, 7}; cout<<(cnum[0].y/ cnum[0].x* cnum[1].x)<<endl;}
选项:
A: 0
B: 1
C: 3
D: 6
答案: 【 6】
(补充)3.3 用typedef定义类型随堂测验
1、单选题:
下列说法中,不正确的是()。
选项:
A: typedef 只能用于为已知数据类型名定义新的类型名。
B: typedef 应用于软件移植。
C: typedef并没有增加新的数据类型。
D: typedef和define等价。
答案: 【 typedef和define等价。】
(补充)3.4 链表的建立随堂测验
1、填空题:
以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾。单向链表的头指针作为函数值返回。请填空。#include<iostream>using namespace std;struct list{ char data; list *next;};list *creat( ){ list *h,*p,*q; char ch; h= (1) ; p=q=h; cin>>ch; while (ch!=’?’) { p= (2) ; p->data=ch; q->next=p; q=p; cin>>ch; } p->next=NULL; (3) ;}
答案: 【 (1) new list (2) new list (3) return (h)】
(补充)3.6 链表的插入及有序链表的建立随堂测验
1、单选题:
若已建立以下链表结构,指针p,s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是:
![]()
选项:
A: s->next=NULL; p=p->next; p->next=s;
B: p=p->next; s->next=p->next; p->next=s;
C: p=p->next; s->next=p; p->next=s;
D: p=(*p).next; (*s).net=(*p).next; (*p).next=s;
答案: 【 p=p->next; s->next=p; p->next=s;】
2、填空题:
有定义:struct node { int num; node *next;} *head, *p;假定head是一链表首指针,则欲将p指向的结点插入到该链表首部,应做的操作是 。
答案: 【 p->next=head; head=p;】
第4章 函数
3.9 编译预处理随堂测验
1、单选题:
编译预处理包括()。
选项:
A: 构造工程文件
B: 语句注释
C: 宏定义、文件包含和条件编译
D: 编译源程序
答案: 【 宏定义、文件包含和条件编译】
2、单选题:
预处理命令不具有如下特点:
选项:
A: 均以“#”开头
B: 必在程序开头
C: 后面不加分号
D: 在真正编译前处理
答案: 【 必在程序开头】
3、单选题:
设有以下宏定义 #define MOD(x, y) x%y则执行语句:int z, a=5, b=10; z=MOD(b+3, a); cout<<z++;后,输出为()。
选项:
A: 5
B: 3
C: 13
D: 14
答案: 【 13】
4、单选题:
设有以下宏定义和语句:#define P(x, y) x/y#define PP(a, b) a*bint c=P(2+3, 2+3)+PP(2+3, 2+3);则变量c的值是()。
选项:
A: 26
B: 17
C: 17.5
D: 31
答案: 【 17】
5、单选题:
下面程序的运行结果是()。#include <iostream>using namespace std;#define SUB(X, Y) (X)*Yvoid main(){ int a=3, b=4; cout<<SUB(a++, b++)<<endl;}
选项:
A: 12
B: 15
C: 16
D: 20
答案: 【 12】
6、单选题:
假设有宏定义:#define NUM 15#define DNUM NUM+NUM则表达式DNUM/2+NUM*2的值为()。
选项:
A: 45
B: 67
C: 52
D: 90
答案: 【 52】
