mooc程序设计基础(C++)答案(慕课2023完整答案)

分类: 外贸类考试发布于:2024-06-02 13:00:34ė04890次浏览615条评论

mooc程序设计基础(C++)答案(慕课2023完整答案)

第二章 基本类型与变量

第2章测试

1、程序以下可以作为C++自定义标识符的设计是:
A、dollar#
B、基础sqrt
C、案慕案break
D、课完123

2、整答下列选项中合法的程序用户标识符是:
A、10ng
B、设计_2Text
C、基础3Dmax
D、案慕案A.dat

3、课完以下各选项组中,整答均可作为自定义标识符的程序组是:
A、public _No1 this
B、设计shod No.1 sta
C、基础i while >=
D、No1 Cout a

4、以下不符合C++语法规则的数值常量是:
A、034
B、2.1E3
C、0Xab23
D、2E1.4

5、存储下列数据,占用存储字节最多的是:
A、0
B、'0'
C、"0"
D、0.0

6、在32位系统中,基本数据类型所占字节长度,正确的是:
A、char<int<float<double
B、char<int<double<float
C、char<short<float<int
D、char<short<int<double

7、以下说明语句中,不存在语法错误的是:
A、int 10long;
B、int _2int;
C、float X3-Dmax;
D、char X.txt;

8、以下选项中,不能将字母A的ASCII码保存到变量ch的语句是:
A、char x= "A";
B、char x=’A’;
C、char x=’\101’;
D、char x=65;

9、下面哪一个不能作为合法的标识符?
A、integer
B、7days
C、V
D、chen

10、下面哪一种类型数据是4 字节长度?
A、wchar_t
B、unsigned long long
C、long long
D、char32_t

11、下面哪一个可作为合法的标识符?
A、default
B、register
C、extern
D、sqrt

12、下面哪一种类型不属于字符类型?
A、uchar
B、char32_t
C、char16_t
D、wchar_t

13、下面哪一个字面值与其它3 个不同?
A、38
B、046
C、038
D、0B100110

14、下面哪一个是非法的字面值?
A、0xEF
B、1.2e0.6
C、5L
D、'\56'

15、下面哪一个是非法的数据类型?
A、signed short int
B、unsigned double
C、unsigned long int
D、unsigned int

16、下面哪一个是非法的十六进制的整型字面值?
A、0xbe
B、0x2c
C、xef
D、0xEF

17、下面哪一个是合法的字符型字面值?
A、"A"
B、72
C、'\326'
D、D

18、下面哪一条语句导致编译警告或错误?
A、unsigned a1;
B、unsigned a2 = -1;
C、unsigned a3(-1);
D、unsigned a4{ -1};

19、下面哪一个变量类型为unsigned long long?
A、auto v1 = 123;
B、auto v2 = 123u;
C、auto v3 = 123lu;
D、auto v4 = 123llu;

第三章 运算符与表达式

第3章测试

1、以下运算符中运算对象一定不能是double类型的是
A、%
B、/
C、=
D、<=

2、设有语句:char x=6,y=10;int z; z=(x^y)<<2; 则z的值是
A、3
B、48
C、-4
D、-52

3、执行语句unsigned a=-1;long b=1;auto c=a<b;后,c的值为:
A、0
B、1
C、true
D、false

4、设有int a=3,b=2,x=4; 则cout<<(a<x<b)输出为:
A、0
B、1
C、3
D、5

5、若有声明int m=7,n=4;float a=38.4,b=6.4,x;则执行语句x=m/2*n+a/b+1/2;后,x的值为:
A、18
B、18.5
C、20
D、20.5

6、若有int a=1,b=2,c=3,d=4; 则表达式b<a?a:c<d?c:d的值为(运算符?:的结合性为从左向右):
A、1
B、2
C、3
D、4

7、执行下面语句: int i = -5; cout<<-(i++)<<";"; cout<<i<<endl; 输出结果是下面哪一个?
A、4;-4
B、5;-4
C、4;-5
D、5; -5

8、尝试执行下面语句: unsigned int i = 2; int j = -3; cout<<(i*j)<<endl; 输出结果是下面哪一个?
A、-6
B、6
C、一个无符号整数
D、编译出错,无输出

9、下列字符串常量表示中,错误的是()。
A、"\"yes\"or\"
B、"\\Right\""
C、"abcdef\0"
D、"ABCD\t\\"

10、设int a=5,b;,执行以下代码后,b的值不为2的是:
A、b=a/2;
B、b=6-(a--);
C、b=a>>1;
D、b=a^7;

11、假设变量a、i 已正确定义,且i 已正确赋值,下列哪一个是合法的赋值表达式?
A、a==1
B、a=++i++
C、a=a++=5
D、a=int(i)

12、若变量a 是int 类型,并执行了语句a='A'+1.6; 下列哪一个叙述是正确的?
A、a 的值是字符'A'
B、a 的值是浮点型
C、不允许字符型与浮点型相加
D、a 的值是字符'B'

13、下列程序的运行结果是 。 int main() { int a=5,b=4,c=3,d; d = (a > b > c); cout<<d<<endl; return 0; }
A、5
B、3
C、1
D、0

14、在算术表达式中,下面哪一种类型转换是错误的?
A、一个int 值加上一个float 值的类型为float。
B、两个unsigned char 值相加的类型为int。
C、一个char 值加上一个short 值的类型为int。
D、一个unsigned int 值加上一个int 值的类型为int。

15、有下面语句,变量a 的值为____。 int a = 3;if (++a < 4)a++; a++;
A、3
B、4
C、5
D、7

16、下面哪一个表达式能正确表示逻辑关系:"age≥18 或age≤60"?
A、age>=18 or age<=60
B、age>=18 | age<=60
C、age>=18 && age<=60
D、age>=18 || age<=60

17、设有语句int a=5; 则执行表达式a-=a+=a*a 后,a 的值是 。
A、-5
B、25
C、0
D、-20

18、表达式16/4*float(4)+2.0 的数据类型是 。
A、int
B、float
C、double
D、不确定

19、设有语句int a=5, b=6, c=7, d=8, m=2, n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n 的值为 。
A、3
B、2
C、1
D、0

20、整型变量m 和n 的值相等,且为非0 值,下面哪一个表达式的值为零?
A、m | n
B、m ^ n
C、m || n
D、m & n

第3章作业

1、低六位置1

2、温度转换

3、四则运算

第四章 基本语句

第4章测试

1、执行语句:for(int k=43210;k=k/10;cout<<k%10); 其输出结果是:
A、1234
B、01234
C、4321
D、43210

2、执行程序段: int x,y; x=3; do { y=x--; if(!y) { cout<<'#'; continue;} cout<<'#'; } while((x=1)||(x=2));
A、将输出##
B、将输出###
C、将进入死循环
D、将输出#

3、执行程序段: int x=6; do { if(x%3) { cout<<'#'; continue;} } while(x--);
A、将输出#
B、将输出##
C、将输出###
D、将输出####

4、执行以下语句,输出结果是 int x=3; do{ cout<<(x-=2)<<" "; }while(!--x);
A、1
B、3 0
C、1 -2
D、0 -1

5、执行以下程序段 int k=5,n=0; while(k--) switch(k) { case 1: case 3:n+=1;break; default:n+=2; case 2: case 4: n+=3;break; }后,n和k的值分别为:
A、10 -1
B、13 -1
C、8 0
D、10 0

6、以下语句段执行结果: int a=2,b=0; while(!b--)cout<<a--<<' '<<b;
A、2 -1
B、1 -1
C、没有输出
D、2 0

7、在下列选项中,没有构成死循环的语句段是:
A、int i=100;while(1){ i=i%100;if(i>=100)break;}
B、for(;;);
C、int k=1000;do{ k;}while(k>1000);
D、int s=3;while(s);--s;

8、以下说法正确的是:
A、while语句中,循环体语句可能是一条语句,也可能没有语句。
B、执行do-while语句时,可能不执行循环体语句。
C、for语句如果第2个表达式为空,则必然进入死循环。
D、do-while语句总能用while或for语句实现

9、已有预处理命令“#include <cmath>”和声明“int a=4,b;”,以下语句中语法正确的是:
A、if(a%2=1) b=a;
B、if(sqrt(a)%2) b=a;
C、if(a==1) b=a;
D、if(a==1) b=*a;

10、运行下面程序段: for (int i = 1,sum = 0; i < 5; i++){ if (!(i%3)) continue; sum += i; }变量sum的值为:
A、0
B、3
C、7
D、10

11、下列程序的输出结果是 。 using namespce std; #include <iostream> int main() { int x=1,i=1; for (; x < 50; i++) { if(x >= 10) break; if(x % 2 != 0){ x += 3; continue; } x-=-1; } cout<<x<<' '<<i<<endl; return 0; }
A、12 7
B、11 6
C、12 6
D、11 7

12、有下面语句,输出结果为_____。int x = 3;do{ cout<<(x-=2)<<" ";}while (!(--x));
A、1
B、3 0
C、1 -2
D、死循环

13、有下面语句段,输出结果为_____。 using namespace std; #include <iostream> int main(){ char c = 'B'; switch (c) { case 'A':cout << "1"; case 'B':cout << "2"; case 'C':cout << "3"; default: cout << "4"; } return 0; }
A、2
B、23
C、234
D、编译错误

14、下列for 语句的循环次数为: for (int i = 1; i <= 5; sum++) sum += i;
A、5
B、4
C、0
D、无限

15、下列程序的输出结果是 。 using namespace std; #include <iostream> int main() { int n = 'm'; switch(n++){ default: cout<<"error";break; case 'k':case 'K':case 'l':case 'L':cout<<"good"<<endl;break; case 'm':case 'M':cout<<"pass"<<'\t'; case 'n':case 'N':cout<<"warn"<<endl; } return 0; }
A、pass
B、warn
C、pass warn
D、error

第4章作业

1、16进制显示

2、计算方程的根

3、求整数的因子

第五章 函数和编译预处理

第5章测试

1、设有“#define M(a,b,c) a*b-c”,执行“cout<<M(2+3,2+3,4);”输出为
A、21
B、7
C、0
D、1

2、若有宏: #define AA 10 #define D(x) x*x 则执行cout<<D(1+2)*AA;,输出结果为:
A、23
B、50
C、90
D、编译出错

3、考虑函数原型void test(int,char='*',int=7); 以下合法的函数调用是:
A、test(5)
B、test(5,"0");
C、test(5,"&" ,6);
D、test(5,6,"%");

4、下列定义中不正确的是:
A、#define PI 3.1415926
B、#define S345
C、int max(x,y);
D、static char c;

5、以下正确的说法是:
A、用户调用标准库函数前,必须重新定义
B、用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C、系统不允许用户重新定义标准库函数
D、用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中

6、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用:
A、带缺省值的函数
B、重载函数
C、内联函数
D、递归函数

7、不能作为重载函数的调用的依据是
A、参数个数
B、参数类型
C、函数返回类型
D、函数名称

8、尝试执行下面程序: using namespace std; #include <iostream> void f(int n){ if (n/10){ cout<<n%10<<","; f(n/10);} else cout<<n; } int main(){ f(638); cout<<endl; return 0; }输出结果为:
A、6,3,8
B、8,3
C、8,3,6
D、语法错

9、下面程序输出是: using namespace std; #include <iostream> int t(){ static int i; i+=5; return i; } int main(void){ cout << t() << '\t'; cout << t() << '\n'; return 0 ; }
A、0 5
B、5 5
C、5 10
D、随机数

10、以下关于文件包含的描述中正确的是:
A、每个C++程序必须包含预处理命令:#include <iostream>
B、#include 后面的文件名用双引号("")括起和尖括号(<>)括起完全等效
C、#include 命令行可以出现在源程序中需要的任意行
D、用#include 所包含的文件称为头文件,必须以.h作为扩展名

11、以下程序执行后的输出为: using namespace std; #include <iostream> double f1(double x) { return 1.0/x;} double f2(double x) { return x*x;} int main() { int i=3; double (*f[2])(double)={ f1,f2}; cout<<f[i%2](i)<<endl; return 0; }
A、0.333333
B、0.5
C、9
D、4

12、下列代码执行结果是 。 using namespace std; #include <iostream> int f(int Int) { if (Int==0) return 1; return (Int + f(Int-1)); } int main() { int inT=9; cout<< "result=" << f(inT) <<'\n'; return 0; }
A、result=1
B、result=37
C、result=46
D、编译错误

13、下面代码运行结果是 。 using namespace std; #include <iostream> int f(int x) { static int u=1; x += x; return u *= x; } int main(){ int x=10; cout<<f(x)<< '\t'; cout<<f(x)<<endl; return 0; }
A、10 20
B、20 800
C、20 400
D、20 20

14、下面代码运行结果是 。 using namespace std; #include <iostream> int t(void){ static int i = 1; i += 2; return i; } int t1(void){ int j =1; j += 2; return j; } int main(){ int j=2; t(); cout << "I="<<t( )<<" "; t1(); cout << "J="<<t1( )<< '\n'; return 0; }
A、I=5 J=3
B、I=5 J=5
C、I=3 J=5
D、I=3 J=-3

15、执行下面程序: #include<iostream> using namespace std; void f(int n){ if (n/10){ cout<<n%10<<","; f(n/10);} else cout<<n; } int main(){ f(638); cout<<endl;return 0; }输出结果为:
A、6,3,8
B、8,3
C、8,3,6
D、语法错

16、设有宏定义如下: #define MIN(x,y) (x)>(y)?(x):(y) #define T(x,y,r) x*r*y/4 则执行以下语句后,s1和s2的值分别为 。 int a=1,b=3,c=5,s1,s2 ; s1=MIN(a=b,b-a); s2=T(a++,a*++b,a+b+c) ;
A、3 27
B、27 3
C、24 1
D、3 24

17、下列函数原型说明中,错误的是________。
A、int &f1();
B、int f2(double=5);
C、void f3(void (*p)());
D、int f4(int a=0,int b);

18、以下关于C++函数的描述中,正确的是________。
A、内联函数就是定义在另一个函数体内部的函数
B、函数体的最后一条语句必须是return语句
C、c++要求在调用一个函数之前,该函数已定义或已有该函数的原型说明
D、编译器会根据函数的返回值类型区分函数的不同重载形式

19、以下叙述中不正确的是_________。
A、在函数内的复合语句中定义的变量在本函数范围内有效
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在不同函数中可以使用相同名字的变量

20、执行以下程序输出是: #include<iostream> using namespace std; #define P 5 #define R (P+P) int main(void) { float a1; a1 = P* R * R; cout << "a1="<<a1<<'\n'; return 0;}
A、a1=55
B、a1=75
C、a1=250
D、a1=500

第5章作业

1、Hanoi问题

2、正序反序输出

第六章 数组与字符串

第6章测试

1、执行下面语句,输出结果是______。 int b[3][3] = { 0,1,2,0,1,2,0,1,2},t = 1; for(int i = 0; i < 3; i++) for(int j = i; j <= i; j++) t += b[i][i] + b[j][j]; cout<<t<<endl;
A、7
B、9
C、4
D、6

2、以下正确的数组定义语句是:
A、char a[5]={ '1', '2', '3', '4', '5', ''};
B、int b[2][ ]={ { 1}, { 2}};
C、float c[ ][3]={ 1, 2, 3, 4, 5};
D、char d[5]="CHINA";

3、设有说明性语句:char s[]="a\'\029";sizeof(s)的结果是:
A、3
B、4
C、5
D、6

4、一个数组作为实参调用某个函数,实际传递给形参的值是
A、该数组的长度。
B、该数组的首地址。
C、整个数组。
D、该数组的元素个数。

5、设有说明语句:char s[80]="Hello"; int a[20]={ 1,2}; 下列选项中,存在语法错误的是________。
A、cin>>s;
B、cout<<s;
C、cin>>a;
D、cout<<a;

6、若有说明语句:int y[ ][4]={ 0,0}; 则下面叙述不正确的是 。
A、数组y的每个元素都可得初值0
B、二维数组y的行数为1
C、该说明等价于int y[ ][4]=;
D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0

7、设有声明"int p[10]={ 1,2},i=0;",以下语句中与"p[i]=p[i+1],i++;"等价的是:
A、p[i]=p[i++];
B、p[++i]=p[i];
C、p[++i]=p[i+1];
D、i++,p[i-1]=p[i];

8、设有说明语句:char s[5][5] ={ "abc","efgh"}; 值为字符g的数组元素是:
A、s[4][4]
B、s[1][4]
C、s[1][3]
D、s[1][2]

9、以下数组声明中正确的是:
A、int a[];
B、int a[3.14];
C、int a[2+3]=;
D、int a[3]={ 1,2,3,4};

10、以下选项中,能正确计算数组a中元素个数的表达式是:
A、a/sizeof(a);
B、a[0]/sizeof(a);
C、sizeof(a)/sizeof(a[0]);
D、sizeof(a[0])/sizeof(a);

11、假设有:int a[10]={ 9,1,6,0,8}; 数组元素a[5]的值是:
A、8
B、0
C、6
D、随机值

12、下面哪一个语句编译会告警?
A、int a[] { 1, 2, 3, 4 };
B、float b[]{ 1.1f, 2.2f, 3.3f };
C、double c[]{ 3, 4.3, 5.5, 6 };
D、char cc[] { 128, 127, 126 };

13、假设有float af[] = { 1.1f, 2.2f, 3.3f, 4.4f, 5.5f };下面那一条语句是错误的?
A、for (double e : af) { cout << e << " "; }
B、for (auto e : af) { cout << e << " "; }
C、for (float &e : af) { cout << e << " "; }
D、for (int &e : af) { cout << e << " "; }

14、下面哪一个数组说明语句是错误的?
A、int b[][3]={ 0,1,2,3};
B、int d[3][ ]={ { 1,2},{ 1,2,3},{ 1,2,3,4}};
C、int c[100][100]=;
D、int a[2][3];

15、有语句:int b[][3]={ { 9},{ 1,6},{ 0,8},{ 1,2,3}}; 数组元素b[3][2]的值是:
A、3
B、8
C、6
D、9

16、下面哪一个数组说明语句是正确的?
A、char s4[2][3]={ "xyz","abc"};
B、char s1[]="xyz";
C、char s3[][]={ 'x','y','z'};
D、char s2[3]="xyz";

17、下面哪一个数组说明语句是错误的?
A、char s4[]="Ctest\n";
B、char s3[20]="Ctest";
C、char s2[]={ 'C', 't', 'e', 's', 't'};
D、char s1[10]; s1="Ctest";

18、对于一个函数void sort(int a[], int n);设有语句:int b[7]; 下面哪一个函数调用能正确执行?
A、sort(b);
B、sort(b, 9);
C、sort(b, sizeof(b)/sizeof(int));
D、b = sort(b, 7);

19、下列程序的输出结果是 。 int main(){ int i, k, a[10], p[3]; k=5; for (i=0; i<10; i++) a[i]=i; for (i=0; i<3; i++) p[i] = a[i *(i+1)]; for (i=0; i<3; i++) k+=p[i] *2; cout<<k<<endl; return 0; }
A、21
B、22
C、23
D、24

第6章作业

1、过滤空格

2、史密斯数

3、统计数字出现次数

第七章 结构、枚举、联合体

第7章测试

1、假设有下面语句: enum tag{ Up=1,Down,Left,Right}a; 下面哪一条语句不正确:
A、a=tag(2);
B、a=2;
C、a=Down;
D、a=(tag)2;

2、下面哪一条语句出现编译错误: enum Gender{ female, male}; //A struct Person{ char name[20]; Gender sex; //B Person father; //C }; Person members[30]; //D
A、行A
B、行B
C、行C
D、行D

3、设有以下枚举说明语句: enum weekday{ Mon=1,Tues,Wed,Thurs,Fri,Sat,Sun=0}week; 下面那一条赋值语句是错误的?
A、week=weekday(1);
B、week=1;
C、week=Mon;
D、week=(weekday)1;

4、设有结构定义及变量声明如下: struct product { char code[5]; float price;}y[4]={ "200",100}; 以下表达式中正确的是:
A、y.code[0]='b';
B、y[0].code[0]=45;
C、y[0].code='a';
D、y.price=100;

5、已知有声明“struct data{ int y,m;}a={ 2014,6},b=;”,以下选项中合法的语句是:
A、if(a>b) cout<<a;
B、a++;
C、b=a;
D、b={ a.y,a.m};

6、设有语句:struct xy{ int x ; float y; char z ;} example; 下面哪一个叙述错误?
A、struct 是结构类型的关键字。
B、example 是结构类型的名称。
C、x,y,z 都是结构的成员名称。
D、xy 是结构类型的名称。

7、union Numeric{ int i; float f; double d;}u; 变量u 所占存储单元的字节数为 。
A、16
B、4
C、8
D、12

8、下面代码的输出结果是 。 int main(void){ union baby { char name[10]; int number; }b={ "YangYang"}; cout<<b.name<<" "; b.number=65; cout<<b.name<<" "<<b.number<<endl; return 0; }
A、YangYang YangYang 65
B、YangYang 65 65
C、YangYang A 65
D、YangYang 65

9、有以下语句:struct Point{ int x, y;}ps[3]={ { 1, 2}, { 3, 4}}; 那么ps[1].x 和ps[2].y 的值分别是_______。
A、1 2
B、1 4
C、3 4
D、3 0

10、设有语句struct mys { int m1 = 2; int m2; }; 下面哪一个语句是错误的?
A、mys a0;
B、mys a1();
C、mys a2{ };
D、mys a3{ 5, 6};

11、分析下面语句:struct Property{ char name[20];char value[40];}p1 = { "name", "ZhangSan"}, p2 = { "age"}, p3 = { ,"blue"}, p4 = p1;
A、p1 出错
B、p2 出错
C、p3 出错
D、p4 出错

12、下列程序的输出结果是_______。 int main(){ enum tag{ Up=1, Down, Left, Right} x = Up, y; enum tag z = Left; y = Down; cout<<x<<" "<<y<<" "<<z<<endl; return 0; }
A、Up Down Left
B、1 2 3
C、0 1 2
D、Up Left Down

13、设有enum struct Myenum{ Red, Green, Yellow};下面哪一条语句是错误的?
A、Myenum e1;
B、Myenum e2 = Red;
C、Myenum e3 = Myenum::Green;
D、Myenum e4[4];

第7章作业

1、身高排序

第八章 指针和引用

第8章测试

1、设有语句int k=8,*p=&k; *p 的值是:
A、指针变量p 的地址值
B、变量k 的地址值
C、变量k 的值8
D、无意义

2、下面哪一个初始化是正确的?
A、float f; int *p = &f;
B、int *p = 0x3000
C、int k, *p = &k;
D、int k, &p = &k;

3、下面代码段执行输出结果为________。 int a = 2, *pa = &a; int b = 3, *pb = &b; *pa*=*pa**pb; cout<<a<<endl;
A、2
B、6
C、12
D、语法错误

4、下面哪一个值不能表示空指针?
A、NULL
B、0
C、nullptr
D、ptrnull

5、执行下面代码段后,b 的值为________。 int a[] = { 1,2,3,4,5,6,7,8}; int * p = a + 4; int b = 4+ ++*p++;
A、8
B、9
C、10
D、语法错误

6、要使语句p=new double[20];能够正常执行,p应声明为:
A、double **p;
B、double &p;
C、double (*p)[20];
D、double *p;

7、以下说明语句中正确的是:
A、int a,&ra=a,&&ref=ra;
B、int &refa[10];
C、int a,&ra=a,&*refp=&ra;
D、int *pi,*&pref=pi;

8、以下程序的执行结果是: using namespace std; #inlcude <iostream> void f1(int *x){ ++*x;} void f2(int &x){ x++;} void f3(int x){ ++x;} int main(){ int a=10; f1(&a); f2(a); f3(a); cout<<a; return 0; }
A、10
B、11
C、12
D、13

9、若有语句int a, *(*fun)(int *);fun表示____
A、一个函数名,该函数返回int*;
B、一个函数名,该函数返回int;
C、指向函数的指针,该函数返回int*;
D、指向函数的指针,该函数返回int;

10、int a[][4]={ 1,2,3,4,5,6,7,8,9,10,11,12,13}; 若需要引用值为12的数组元素,则下列选项中错误的是:
A、*(a+2)[3]
B、*(*(a+2)+3)
C、*(a[2]+3)
D、a[2][3]

11、int a[] = { 1,2,3,4,5,6,7,8}; int * p = a + 4; int b = 4+ ++*p++; *p 的值为_____。
A、4
B、5
C、6
D、7

12、假设语句: struct Person { string name; Person *father; }; Person p1{ "tom" }, p2{ "jerry", &p1}, *p = &p2; 下面哪一个表达式的值不是"tom"。
A、p->father->name
B、p1.name
C、p2.father->name
D、p->name

13、假设有语句如下: void f3(int (*p)[4]); int a[4] = { 1,2,3,4}; int b[3][4] = { { 1,2,3,4}, { 5,6,7,8}, { 9,10,11,12}};下面哪一个调用是非法的?
A、f3(&a);
B、f3(b[1]);
C、f3(&b[1]);
D、f3(b);

14、设有下面语句: char *s1 = "C++ Programming"; char s2[]= "C++ Programming"; 下面哪一种操作不会导致错误?
A、strcpy(s1, "C++");
B、s1 = "C++";
C、s2 = s1;
D、strcpy(s2, "Java Programming");

15、设有int b[3][5]; 下面哪一条语句是正确的?
A、int (*p)[5] = b;
B、int *p[] = b;
C、int *p[5] = b;
D、(int *)p[5] = b;

16、设有语句int b[3][4]; 下面哪一条语句是正确的?
A、int *p[] = { b[0], b[1], b[2]};
B、int *p[] = b;
C、int *p[2] = { b[0], b[1], b[2]};
D、int *p[] = (int *[])b;

17、设有下面语句: void f4(int **p); int a[4] = { 1,2,3,4}; int b[3][4] = { { 1,2,3,4}, { 5,6,7,8}, { 9,10,11,12}}; int *q[3] = { b[0],b[1],b[2]}; 下面哪个调用是合法的?
A、f4(a);
B、f4(&a);
C、f4(b);
D、f4(q);

18、设有语句如下: char *c1[] = { "Red","Green","Blue"}; char c2[][6] = { "Red","Green","Blue"}; 32 位系统中下面哪一种说法是正确的?
A、sizeof(c1)等于sizeof(c2)
B、sizeof(c1)加4 等于sizeof(c2)
C、sizeof(c1)大于sizeof(c2)
D、sizeof(c1)加6 等于sizeof(c2)

19、下列哪一个main 函数原型是错误的?
A、main(int argv, char *argc[])
B、main(int arc, char **arv)
C、main(int argc, char *argv)
D、main(int a, char *c[])

20、设有语句:int k=2, *intp = &k; 那么表达式: (*fun)(*intp); 是:
A、说明一个函数指针fun。
B、将int 变量k 转换为指针类型fun。
C、通过函数指针fun 来调用函数,实参为*intp。
D、错误表达式。

第8章作业

1、字符串排序

C++程序设计测试

C++客观题

1、下面合法的自定义标识符是:
A、10dollar
B、bool
C、fabs
D、number-of-student

2、有if(表达式1)表达式2;,若a不等于0时执行表达式2,则表达式1可以为:
A、a<>0
B、!a
C、a=0
D、a

3、表达式(-3)|9的结果为:
A、true
B、-3
C、4294967293
D、1

4、int a=10,b;,以下表达式中错误的是:
A、a=b=1;
B、(b=a)=1;
C、++a=1;
D、(a++)=1;

5、若有unsigned short a=-1,b=100;,执行完语句(a<b)&&(++a);后a的值为:
A、-1
B、0
C、65535
D、65536

6、执行以下语句段后a的值为: int a,b; for(b=1,a=1;b<=10;b++) { if(a>=10) break; if(a%2==1){ a+=6; continue;} a-=3; }
A、7
B、13
C、301
D、其他选项均不对

7、以下程序段的输出为: char s[]="abc\082\0c"; cout<<sizeof(s)<<" "<<s;
A、9 abc
B、7 abc 82 c
C、4 abc
D、其他选项均不对

8、若有函数:double f(double a){ return a+a;} double f(int x){ return x*x;} 则函数调用f('a')的结果为(字符a的ASCII码为97):
A、9409
B、194
C、f('a')所在行编译错误
D、函数f说明处编译错误

9、若有#define MAX(x,y) (x)>(y)?(x):(y),且int i=2, j=8;。 则表达式10*MAX(i,j)的结果为(其中优先级:乘法运算符>大于运算符>条件运算符):
A、8
B、2
C、80
D、20

10、以下说法错误的是:
A、在块作用域中说明的static变量,生存期是整个程序运行期。
B、在所有块外说明的static变量的作用域仅限于变量所在文件。
C、若有extern int g;,则g是全局变量,初值为0。
D、全局变量的生存期是整个程序运行期。

11、以下对字符串处理正确的是:
A、char s1[5]= "NJUST";
B、char *s2; s2="NJUST";
C、string s3[10]; s3="NJUST";
D、char s4[10]; s4="NJUST";

12、下面哪一个初始化是正确的?
A、float f; int *p = &f;
B、int *p = 0x3000
C、int k, *p = &k;
D、int k, &p = &k;

13、若有 int a[3][4]={ 1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]=a; 则++*(*++p)的值为:
A、1
B、2
C、5
D、6

14、若有void f(int *p,int n,int m){ …},在主函数中有 int a[3][4]={ 1,2,3,4,5,6,7,8,9,10,11,12}; f(*a,3,4); 则在函数f中能访问a[i][j]的表达式是:
A、*(*(p+i)+j)
B、*(p+i*n+j)
C、p[i][j]
D、p[i*m+j]

15、设有以下定义:char *ch[2]={ "abc", "xyz"};,则以下正确的叙述是:
A、数组ch的两个元素中分别存放了字符串"abc"和"xyz"的首地址
B、数组ch的两个元素分别存放了字符串"abc"和"xyz"
C、ch是指针变量,它指向含有两个数组元素的字符型一维数组
D、数组ch的两个元素的值分别是"abc"和"xyz"

16、假设有语句如下: void f3(int (*p)[4]); int a[4] = { 1,2,3,4}; int b[3][4] = { { 1,2,3,4}, { 5,6,7,8}, { 9,10,11,12}}; 下面哪一个调用是非法的?
A、f3(&a);
B、f3(&b[2]);
C、f3(&&b[1][0]);
D、f3(b);

17、下面哪一个指针的类型不同于其它三个?
A、auto p1 = new double;
B、auto *p2 = new double{ 3.2};
C、auto p3 = new double[3]{ 1,2.2};
D、auto p4 = *new double[3]{ 1,2.2};

18、设有语句:int* f(int* p, int a) { return p+a; }下面哪一个定义了返回值为int型指针的函数?
A、int*(*fp1)(int*, int) = f;
B、int* (*fp2[4])(int*, int) = { f};
C、int* f(int*(*fp)(int *, int)){ return fp(nullptr,3);}
D、int* (*f())(int*, int) { return f; }

19、以下语句段的输出为: struct s{ int n;int *m;}; int d[3]={ 10,20,30}; s arr[3]={ 100,&d[0],200,&d[1],300,&d[2]},*p=arr; cout<<++(p->n)<<" "; cout<<(++p)->n<<" "; cout<<*++(p->m);
A、101 200 30
B、101 200 21
C、200 101 21
D、100 101 10

20、有using AUTHOR = char[10];,则AUTHOR a[20];则等价于:
A、char a[10];
B、char a[20];
C、char a[10][20];
D、char a[20][10];

21、以下说明语句中,正确的是:
A、int a,break;
B、int x,&y=&x;
C、int For;&z=For;
D、int a.cpp;

22、设有说明性语句: char s[]="a\'\029";sizeof(s)的结果是:
A、3
B、4
C、5
D、6

23、设有typedef int INTA[80]; 则声明整型数组a的正确语句是:
A、INTA a[80];
B、int INTA a;
C、int INTA a[80];
D、INTA a;

24、执行下面程序,输出结果是______。 #include<iostream> using namespace std; #define P 5 #define R 2+P int main(){ float a1 = P*R*R; cout<<a1<<endl; return 0; } 输出结果为:
A、75
B、245
C、49
D、25

25、在一个源文件中定义的静态全局变量的作用域为:
A、本文件的全部范围
B、本程序的全部范围
C、本函数的全部范围
D、从定义该变量的位置开始至本文件结束

26、设有宏定义如下: #define MIN(x,y) (x)>(y)?(x):(y) #define T(x,y,r) x*r*y/4 则执行以下语句后,s1和s2的值分别为 : int a=1,b=3,c=5,s1,s2 ; s1=MIN(a=b,b-a); s2=T(a++,a*++b,a+b+c) ;
A、3 27
B、27 3
C、24 1
D、3 24

27、以下程序段中能够正确实现p和q中两个字符串互换的是:
A、char p[10]="hello", q[10]= "world", *t; strcpy(t,p); strcpy(p,q); strcpy(q,t);
B、char p[10]= "hello", q[10]= "world", *t; t=p; p=q; q=t;
C、char p[10]= "hello", q[10]= "world", t[10]; strcpy(t,p); strcpy(p,q); strcpy(q,t);
D、char p[10]= "hello", q[10]= "world", t[10]; t=p; p=q; q=t;

28、下面哪一个表达式不能访问二维数组b的第i行第j列元素?
A、b[i][j]
B、*(*(b+i)+j)
C、*(b[i]+j)
D、*(b+i)[j]

29、若声明double *p[5];,系统分配的内存空间地址为2000,则2008是( )的地址。
A、p+2
B、p[1]
C、*(p+2)
D、*p+1

30、分析下面语句: struct Property{ char *name; char value[40]; }p1 = { "name", "ZhangSan"},p2 = { "age"},p3 = { ,"blue"},p4 = p1;
A、p1出错
B、p2出错
C、p3出错
D、p4出错

31、下面哪一个变量类型为unsigned long long?
A、auto v1 = 123;
B、auto v2 = 123u;
C、auto v3 = 123lu;
D、auto v4 = 123llu;

32、下面哪一个运算符要求操作数都是整型?
A、/
B、<=
C、%=
D、=

33、下面哪一个可作为合法的标识符?
A、default
B、register
C、extern
D、Void

34、下列十六进制的整型常数中,哪一个是非法的?
A、0xbe
B、0x2c
C、xef
D、0xEF

35、设有语句:int a=13, b=9, c; 执行 c = a / b + 0.8 后,c 的值为
A、1.8
B、1
C、2.24444
D、2

36、结构化编程的三种基本结构是
A、顺序结构、选择结构、循环结构
B、循环结构、转移结构、顺序结构
C、递归结构、循环结构、转移结构
D、嵌套结构、递归结构、顺序结构

37、为了避免嵌套的 if-else 语句的二义性,C++语言规定 else 与 哪个if配对?
A、垂直对齐的 if
B、在其之前未配对的最近的 if
C、在其之后最近的 if
D、同一行上的if

38、关于 for(表达式1;表达式2;表达式3); 语句,下面哪一种说法是错误的?
A、3 个表达式都可以为空。
B、如果第 2 个表达式为空,表示循环条件恒为真。
C、while 语句能实现的循环都能用 for 语句实现。
D、第 1 个表达式在每次循环中都要执行一次

39、关于 break 语句,下面哪一种说法是错误的?
A、break 语句可用于循环体内,终止循环语句的执行
B、break 语句可用于 if 体内,终止 if 语句的执行
C、break 语句可用于 switch 体内,终止 switch 语句的执行
D、在一个循环体内,break 语句可以出现多次。

40、对于C++的函数,下面哪一种说法是错误的?
A、函数的定义不能嵌套,但函数的调用可以嵌套。
B、函数的定义可以嵌套,但函数的调用不能嵌套。
C、一个程序执行从 main 函数开始。
D、main 函数可调用其它函数,而其它函数一般不调用 main 函数。

41、对于函数重载,下面哪一种说法是正确的?
A、函数名不同,但形参的个数与类型相同
B、函数名相同,形参的个数或类型不同
C、函数名相同,形参的个数和类型也相同
D、函数名相同,返回值不同,与形参无关

42、设有说明语句:char s[10]; 对 s 的数组元素正确引用是:
A、s(6)
B、s[10]
C、s[6+1]
D、s[1.5]

43、关于结构类型,下面哪一种说法是错误的?
A、每个结构类型都有一个名称。
B、结构中每个成员都用一个名称。
C、结构中各成员的名称不重复。
D、每个成员都有自己的类型。

44、设有语句 int k=8,*p=&k; *p 的值是 :
A、指针变量 p 的地址值
B、变量 k 的地址值
C、变量 k 的值 8
D、无意义

45、对于结构变量的操作,下面哪一种说法是错误的?
A、两个相同类型的结构变量之间可以赋值,就是复制全部成员的值。
B、两个结构变量之间不能进行关系运算。
C、不能用 “cin >>结构变量名;“的方式输入一个结构变量的全部成员。
D、可以用一个 “cout<<结构变量名;“的方式输出一个结构变量的全部成员的值。

C++编程题

1、计算亲密数

2、计算平均绩点



Ɣ回顶部