【临时抱佛脚】C++程序设计基础 选择填空题库整理

2023-12-30 21:19:00

还有一周就要期末了!快把学校的题库做一遍吧 ,说不定期末原题就在其中!!!

(C++题库附详细答案)

先放个答案:

选填答案:

第一次实验1-5daa

第二次实验1-5bacba 6-10bb

1.? 14 2

2.? 6

第三次实验1-5abcba 6-10cddbb 11-13add

1.2 3

2、8

3、5

第四次实验1-5bcbbd 6-10b

1\120

2\23

3\x=4

4\*

5\5

第五次实验1-5adcac 6-10bddd

第六次实验1-5ccdbd 6-10cbcbc 11-12bd

第七次实验1-5dbccd 6c

1\5,6.00

2\600

3\15

第八次实验1-5dbcbc 6-10abacc 11-15xcddd 16-20daaaam21-25bdcba

1\i=j

2\4 2

3\不正确

4、a=10,b=20

5\C B

6\language?OK!

7\60

第一次实验


1、在C语言中的if语句中,用作判断的表达式为

?A 关系表达式
?B 逻辑表达式
?C 算术表达式
?D 任意表达式

2、一个C程序的执行是从?
A. 本程序的main函数开始,到main函数结束

B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C. 本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

3、已知:char a=’a’;float b=2.3;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为???????
(A) int? (B) char? (C) float? (D) double

第二次实验

1、设字符型变量ch中存放字符'A',则执行'ch+++5'后,ch中的字符是??正确答案:

A.?A
B.?B
C.?F
D.?G

2、下列哪个数不是正确的int类型?【?正确答案: 】。
?A 32768? B -32768? C 057 D 0xAC

3、设整型变量x和y的值均为7,则表达式"x/(y-4)"的值是?【?正确答案:

A.?3
B.?
-3
C.?2
D.?1

4、执行以下程序段后,变量a,b,c的值分别为??正确答案:
int x = 10, y = 9;
int a, b, c;
a = (--x == y++)? --x: ++y;
b = x++;
c = y;

A)a = 9, b = 9, c = 9??
B)a = 8, b = 8, c = 10
C)a = 9, b = 10, c = 9??
D)a = 9, b = 10, c = 11

5、已知:char a=’a’;float b=2.3;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为???【?正确答案: 】????
(A) int? (B) char? (C) float? (D) double

6、若定义int i=3, 则表达式i+++i+++i的值是?【?正确答案: 】。

A? 9? B 12? C 15

7、字符串"\ta\017bc"的长度(不包括结束符)是???正确答案: 】?????????
(A)? 9
(B)? 5
(C)? 6
(D)? 7

1、已知 int a=8,则运算a+=a-=a/a后a的值为???? 14 ?????【?正确答案: 】,? 运算表达式a+=a%=2+a/a后a的值为???? 4 ?????【?正确答案: 】。

2、已知:int a=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z);”后b 的值为???? 6 ?????【?正确答案:

第三次实验

1、选择运行结果?【?正确答案: 】。

#include <iostream>

using namespace std;

int main()

{ int n=4;

? while(n--)

? ? ? printf("%d ",--n);

}

(A)2 0
(B)3 1
(C)3 2 1
(D)2 1 0

2、写出下述程序的输出结果??【?正确答案: 】????????????

#include <iostream>

using namespace std;

int main()

{

? ?int a=0,b=0,c=1,d=10;

? ?if (a) d=d-5;

? ?else if (c)

? ? ? ? ? ? ? ?if (!b) d==15;

? ? ? ? ? ? ? ?else d==25;

? ?printf("%d\n",d);

}

A:5

B:10

C:15

D:25

3、以下程序的运行结果是??【?正确答案:

#include <iostream>

using namespace std;

int main()

{

? ? int s=1,t=1,a=5,b=2;

? ? if (a>0)

? ? ? ? s++;

? ? if (a>b)

? ? ? ? t+=s;

? ? else if (a==b)

? ? ? ? t=5;

? ? else

? ? ? ? t=2*s;

? ? printf("s=%d,t=%d\n",s,t);

}

A:s=2,t=5

B:2,3

C:s=2,t=3

D:s=2,t=4? ?

4、给出下述程序的输出结果??【?正确答案: 】?
?

#include <iostream>

using namespace std;

int main()

{

? ? int a=5,b=0,c=0;??

? ? if(a=b+c)

? ? ?printf("***");

? ? else

? ? ?printf("$$$");

?}

A:***

B:$$$

C:***$$$

D:$$$***

5、请选择下列程序的运行结果?【?正确答案: 】。

#include <iostream>

using namespace std;

int d=1;

fun(int p)

{

?int d = 5;

?d+= p++;

?cout<<d<<endl;

}

int main()

{

?int a=3;

?fun(a);

?d += a++;

?cout<<d<<endl;

}

(A)8 4
(B)9 6
(C)9 4
(D)8 5

6、若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为:?【?正确答案:
A. scanf("%d%f",a,b);
B. scanf("%d%f",&a,&b);
C. scanf("%d%lf",&a,&b);
D. scanf("%d%lf",a,b);

7、下面程序段执行结果为??正确答案:
char c = '0'+2;
switch (c){
case 1: ?printf("A"); break;
case '2' :?printf("B");
case 2:??printf("C");
default:?printf("D");
};
A) A? ?
B) D??
C) BC?
D) BCD

8、在执行以下程序过程中
#include<stdio.h>
void main() {
?char c1,c2,c3,c4,c5,c6;
?scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
?c5=getchar();
?c6=getchar();
?putchar(c1);
?putchar(c2);
?printf("%c%c\n",c5,c6);
}

如果输入数据:
987<CR>
65432<CR>
(
注意:从第一列开始,<CR>表示回车)
输出结果为??【?正确答案: ???????
(A)9843
(B)9854
(C)9832
(D)9865

9、以下不正确的语句是??正确答案: 】???????????
(A)? if (x > y);
(B)? if (x = y) && ( x!= 0) x += y;
(C)? if (x !=y) scanf("%d", &x); else scanf("%d", &y);
(D)? if (x < y) {x++; y++;}

若有以下语句
int x = 3;
do {
??? printf("%d\n", x -= 2);
} while (!(--x));
10、则上面程序段??
?正确答案: ?????

(A)? 输出的是1
(B)? 输出的是1和-2
(C)? 输出的是3和0
(D)? 是死循环

11、C语言中while和do-while循环的主要区别是??正确答案: ??????????
(A)? do-while
的循环体至少无条件执行一次
(B)? while的循环控制条件比do-while的循环控制条件严格
(C)? do-while允许从外部转到循环体内
(D)? do-while的循环体不能是复合语句

12、?在C语言中的if语句中,用作判断的表达式为?【?正确答案:
?A 关系表达式
?B 逻辑表达式
?C 算术表达式
?D 任意表达式

13、有输入语句:int a,b,c; scanf("a=%d,b=%d,c=%d", &a, &b, &c); 为使变量a的值为1,b的值为3,c的值为2,
1、从键盘输入数据的正确形式应当是?
?正确答案: (注:#表示空格)
(A)? 132<回车>
(B)? 1,3,2<回车>
(C)? a=1#b=3#c=2<回车>
(D)? a=1,b=3,c=2<回车>

以下程序的运行结果是???? 2?3 ?????【?正确答案:

#include <iostream>

using namespace std;

int main()?

{

?int k=2;

?switch(k)

?{

? case 1:cout<<k++;

? ? break;

? case 2:cout<<k++;

? case 3:cout<<k++;

? ?break;

? case 4:cout<<k++;

? default:cout<<"Full!";

? }

}

2、给出下述程序的执行结果?????? 8 ?????【?正确答案: 】?? ? ? ? ??

#include <iostream>

using namespace std;

long fib (int x)

{

?switch(x)

?{

? case 0: return 0;

? case 1:

? case 2:? return 1;

?}

?return (fib(x-1)+fib(x-2));

}

int main()

{

?int x=6;

?cout<<fib(x)<<endl;

}

3、程序结果

#include <iostream>

using namespace std;

int main()

{

?int x=4;

?if (x++>5)

?printf("%d\n",x);

?else

?printf("%d\n",x--);

}

第四次实验

?1、以下正确的描述是???正确答案: ???????

(A)? continue语句的作用是结束整个循环的执行
(B)? 只能在循环体内和switch语句体内使用break语句
(C)? 在循环体内使用break语句或continue语句的作用相同
(D)? 从多层循环嵌套中退出时,只能使用goto语句

2、以下正确的函数声明形式是???正确答案: 】?????????

(A)? double fun(int x, int y)
(B)? double fun(int x; int y)
(C)? double fun(int x, int y);
(D)? double fun(int x, y);

3、对 for (表达式1; ; 表达式3)可理解为???【?正确答案: 】?????
(A)? for (表达式1; 0; 表达式3)
(B)? for (表达式1; 1; 表达式3)
(C)? for (表达式1; 表达式1; 表达式3)
(D)? for (表达式1; 表达式3; 表达式3)

4、下列关于switch语句和break语句的结论中,正确的是?【?正确答案:
(A)break语句是switch语句中的一部分
(B)在switch语句中可以根据需要使用或不使用break语句
(C)在switch语句中必须使用break语句
(D)break语句是switch语句的一部分

5、以下程序的输出结果是?【?正确答案: 】。
main()
{ int a=-1,b=4,k;
? k = (++a<0)&&!(b--<0);
? printf("%d%d%d\n",k,a,b);
}
(A)104
(B)103
(C)003
(D)004

6、给出下述程序的输出结果??【?正确答案: 】?????
?

#include <iostream>

using namespace std;

int main()

{

?int a,b;

?for(a=1,b=1;a<=100;a++)

?{

? if (b>=20)?

? ?break;

? if(b%3==1)?

? {

? ?b+=3;

? ?continue;

? }

? b-=5;

?}

?printf("%d,%d\n",a,b);

}

A:7,22

B:8,22

C:9,22

D:8,19

1、下面程序段的执行结果是????? ?????【?正确答案:

int a,b,c,t;
a=1;?
b=2;?
c=2;
while(a<b<c)
{
?t=a; a=b; b=t;
?c--;
}
printf("%d,%d,%d", a, b, c);

2、以下程序的运行结果是????? ?????【?正确答案: 】??

#include <iostream>

using namespace std;

int main()?

{

?int k=2;

?switch(k)

?{

? case 1:printf("%d",k++);

? ? break;

? case 2:printf("%d",k++);

? case 3:printf("%d",k++);

? ?break;

? case 4:printf("%d",k++);

? default:printf("Full!");

? }

}

3、给出下述程序的输出结果????? ?????【?正确答案:

#include <iostream>

using namespace std;

int main()

{

?int x=0;

?char ch='A';

?do{

? switch(ch++)

? {

? case 'A': x++;break;

? case 'B': x--;

? case 'C': x+=2;break;

? case 'D': x=x%2;continue;

? case 'E': x=x*10;break;

? default: x=x/3;

? }

? x++;

?}while(ch<'G');

?printf("x=%d\n",x);

}

4下述程序的输出结果是???? ????【?正确答案: 】??????????

#include <iostream>

using namespace std;

int main()

{

?int x=3,y;

?do{

? y=x--;

? if(!y)

? {

? ?printf("*\n");

? ?continue;

? }

}while(1<=x<=2);

}

5、以下程序的运行结果是????? ?????【?正确答案: 】??

#include <iostream>

using namespace std;

int main()?

{

?int x=4;

?if (x++>5)

?printf("%d\n",x);

?else

?printf("%d\n",x--);

}

6有以下程序:
?

#include <iostream>

using namespace std;

int main()

{

?int i=1;

?switch(i)

?{

?case 1:? printf("%d",i++);

?case 2:? printf("%d",i++);

?case 3:? printf("%d",i++);

?case 4:? printf("%d",i++);

? ?break;

?default:? printf("END");

?}

}

上述程序的输出结果为????? ?????【?正确答案:

第五次实验

1、在C++语言中,形参的隐含存储类别是??正确答案:
(A)自动(auto)??
(B)静态(static)?
(C)外部(extern)?
(D)寄存器(register)

2、在一个C++源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是???正确答案: 】?????????

(A)? extern
(B)? register
(C)? auto
(D)? static

3、设有函数模板

template?<class?T>

T?max(T?a,T?b)

{

???????return??(a>b)?a:b;

}

则下列语句中对该函数模板的错误使用是??正确答案:

(a)max(1,2)??????? (b)max(2.3,4.5)??????? (c)max(1,2.3)??????? (d)max(‘a’,’b’)

4程序输出结果是?【?正确答案:

#include <iostream>

using namespace std;

#define SUB(X,Y) (X)*Y
int main()
{ int a=3,b=4;
? printf("%d\n",SUB(a++,b++));
}
(A)12
(B)15
(C)16
(D)20

5、以下说法中正确的是?【?正确答案: 】。
(A)c++语言程序总是从第一个定义的函数开始执行
(B)在c++语言程序中,要调用的函数必须在main()函数中定义
(C)c++语言程序总是从main()函数开始执行
(D)c++语言程序中的main()函数必须放在程序的开始部分

6在C++语言程序中,以下正确的描述是??正确答案: 】?
?(A)? 函数的定义可以嵌套,但函数的调用不可以嵌套
?(B)? 函数的定义不可以嵌套,但函数的调用可以嵌套
?(C)? 函数的定义和函数的调用均不可以嵌套
?(D)? 函数的定义和函数的调用均可以嵌套

7、在C++语言中,调用函数时,下列说法正确的是??【?正确答案:
(A) 实参占有独立的存储单元,形参不占存储单元。
(B) 实参和形参必须共用存储单元。
(C) 实参和形参是否共用存储单元由用户指定。
(D) 实参和形参各自占有独立的存储单元。

8、以下不正确的说法是??正确答案: .
?(A)? 在不同函数中可以使用相同名字的变量
?(B)? 形式参数是局部变量
?(C)? 在函数内定义的变量只在本函数范围内有效
?(D)? 函数内定义的变量,在函数调用返回后,其值仍然存在可用

9、请选择下列程序的运行结果?【?正确答案: 】。

#include <iostream>?

using namespace std;

int Try ()

{

?static int x=3;

?x++;

?return (x);

}

int main ()

{

?int i,x;

?for(i=0;i<=2;i++)

? x = Try();

?printf("%d\n",x);

}

(A)3
(B)4
(C)5
(D)6

第六次实验

1、以下各组 选项中,均能正确定义二维数组a的选项是??【?正确答案:
(A) int a[][4];
????? int a[2][];
(B) int a(2,3);
????? int a[][3]={{0},{0}};
(C) int a[][4]={{0},{0}};
????? ?int a[][4]={{0},{0},{0}};
(D) int a[3][4];
?????? int a[][4];

2、已知:int i,x[3][3] = { 1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是?【?正确答案: 】。
for(i=0;i<3;i++)
?printf("%d ",x[i][2-i]);
(A)1 5 9
(B)1 4 7
(C)3 5 7
(D)3 6 9

3、如果数组名作为函数调用的实参,则传递给形参的是?【?正确答案: 】。
?A 数组中的全部元素的值
?B 数组中第一个元素的值
?C 数组中元素的个数
?D 数组的首地址

4、对以下说明语句的正确理解是??正确答案:】??????????
int a[10] = {6, 7, 8, 9, 10};
(A)?
将5个初值依次赋给a[1]至a[5]
(B)? 将5个初值依次赋给a[0]至a[4]
(C)? 将5个初值依次赋给a[6]至a[10]
(D)? 因为数组长度与初值的个数不相同,所以此语句不正确

5以下在任何情况下计算平方数时都不会引起二义性的宏定义是????正确答案: ????????
(A)? #define POWER(x) x * x
(B)? #define POWER(x) (x) * (x)
(C)? #define POWER(x) (x * x)
(D)? #define POWER(x) ((x) * (x))

6以下程序的运行结果是?【?正确答案: 】。
?#define? A 3.5
?#define S(b) A*b*b
?main()
?{
?? int x=1,y=2;
?? printf("%4.1f\n",S(x+y));
?}

?A 14.0?? B 3?? C? 7.5?? D 10.5

7、若有宏定义:#define INTEGER(x,y) x/y?
则执行以下语句后
int z,a=15,b=100;
z=INTEGER(b,a);
printf("%d\n",z++);
输出结果为??【
?正确答案:
(A) 宏定义非法
(B) 6
(C) 6.666667
(D) 7

8下述对C++语言字符数组的描述中错误的是??正确答案: ?????????
(A)? 字符数组可以存放字符串
(B)? 字符数组的字符串可以整体输入,输出
(C)? 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D)? 不可以用关系运算符对字符数组中的字符串进行比较

9、有如下定义:
??? int a[3][4][2];
则数组a的第10个元素是??
?正确答案: ???????????
(A)? a[2][1][2]
(B)? a[1][0][1]
(C)? a[2][0][1]
(D)? a[2][2][1]

10、当文件包含预处理命令#include后面的文件名用尖括号(<>)括起来时,寻找被包含文件方式是??【?正确答案:
(A) 先在源程序所在目录中搜索,然后按系统设定的标准方式搜索
(B) 只在当前目录搜索
(C) 只按系统设定的标准方式搜索
(D) 只在源文件所在目录中搜索

以下对二维数组a进行正确的初始化的是?【?正确答案:
(A)int a[2][3] = {{1,2}, {3,4}, {5,6}};
(B)int a[][3] = {1,2,3,4,5,6};
(C)int a[2][] = {1,2,3,4,5,6};
(D)int a[2][] = {{1,2},{3,4}};

11、已知以下程序段,?【?正确答案: 】。
char a[3],b[]="China";
a=b;
printf("%s",a);
(A)
运行后将输出China
(B)运行后将输出Ch
(C)运行后将输出Chi
(D)程序出错

第七次实验

1、如果数组名作为函数调用的实参,则传递给形参的是?【?正确答案: 】。
?A 数组中的全部元素的值
?B 数组中第一个元素的值
?C 数组中元素的个数
?D 数组的首地址

2以下给字符数组str定义和赋值正确的是?【?正确答案:
(A)char str[10]; str = {"China"};
(B)char str[] = "China";
(C)char str[10]; strcpy (str, "abcdefghijklmn");
(D)char str[10] = {"abcdefghigklmn"};

3下述对C++语言字符数组的描述中错误的是??正确答案: ?????????
(A)?
字符数组可以存放字符串
(B)? 字符数组的字符串可以整体输入,输出
(C)? 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D)? 不可以用关系运算符对字符数组中的字符串进行比较

4在定义 int a[2][3]; 之后,对a的引用正确的是?【?正确答案:
(A)a(1,2)
(B)a[1,3]
(C)a[1>2}[!1]
(D)a[2][0]

5下面程序段的运行结果是?【?正确答案: 】。(其中#表示空格)
char a[7]="abcdef",b[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
(A)#
(B)\0
(C)e
(D)f

6在定义 int a[5][6];后,第10个元素是?【?正确答案:
(A)a[2][5]
(B)a[2][4]
(C)a[1][3]
(D)a[1][5]

1】以下程序的运行结果是?????? ?????【?正确答案: 】??

#include <iostream>

using namespace std;

int main()

{

?int a[10]={1,2,3,4,5,6,7,8,9,10};

?int k,s,i;

?float ave;

?for (k=s=i=0;i<10;i++)

?{

? if (a[i]%2!=0)

? ?continue;

? s+=a[i];

? k++;

?}

?if (k!=0)

?{

? ave=s/k;

? printf("%d,%.2f\n",k,ave);

?}

}

2下面程序段的运行结果是?????? ?????【?正确答案: ????????
char ch[ ] = "600";
int a, s = 0;
for (a = 0; ch[a] >= '0' && ch[a] <= '9'; a++)
??? s = 10 * s + ch[a] - '0';
printf("%d", s);

3以下程序运行后,k的值是????? ?????【?正确答案:】?????????

#include <iostream>

using namespace std;

#define MIN(x, y) (x) < (y)? (x): (y)

int main()

?{

int i = 10, j = 15, k;

? ? k = 10 * MIN (i, j);

?}

第八次实验

1、若有说明: char *language[] = {"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};则以下不正确的叙述是??正确答案: 】??????????
(A)? language+2
表示字符串"PASCAL"的首地址
(B)? *language[2]的值是字母P
(C)? language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针
(D)? language包含5个相同长度的数组

2以下正确的说明语句是??正确答案: ?????????
(A)? int *b[] = {1, 3, 5, 7, 9};
(B)? int a[5], *num[5] = {&a[0], &a[1], &a[2], &a[3], &a[4]};
(C)? int a[] = {1, 3, 5, 7, 9}; int *num[5] = {a[0], a[1], a[2], a[3], a[4]};
(D)? int a[3][4], (*num)[4]; num[1] = &a[1][3];

3、若有以下定义,则数值不为3的表达式是????正确答案: ?????????
int x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1;

(A)? x[3]
(B)? p1 = x + 3, *p1++
(C)? p1 = x + 2, *(p1++)
(D)? p1 = x + 2, *++p1

4、若有下面的程序片断:
void main( )
{
?int n;
char a[10][8];
?......
?sort(a, n);
?......
}
则正确的sort函数头部是?
?正确答案:

(A)?void sort ( char p[ ][ ], int x );??
(B)?void sort ( char p[ ][8], int x );
(C)?void sort ( char p[10][ ], int x );?
(D)?void sort ( char **p, int x );

5、以下与 int *q[5]; 等价的定义语句是????正确答案: ????????
(A)? int q[5] ;
(B)? int *q ;
(C)? int *(q[5]) ;
(D)? int (*q)[5] ;

6、若定义了int i, *p; 则能通过scanf函数给输入项读入数据的程序段是???正确答案:

(A)? p = &i; scanf ( "%d", p );??
(B) p = &i; scanf ("%d",?i );
(C)? *p = i; scanf ( "%d", p );??
(D) *p = i; scanf ("%d", &p);

7、若有定义语句 int (*p)(); ,则p的含义是???正确答案:
(A) p是一个函数,该函数返回指向整型数据的指针。
(B) p是一个指向函数的指针,该函数返回整型值。
(C) p是一个指向整型数据的指针变量。
(D) 以上说法都是错误的。

8、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为???正确答案: ??????

(A)? 自动(auto)
(B)? 静态(static)
(C)? 外部(extern)
(D)? 寄存器(register)

9、若有说明: char *language[] = {"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};则表达式 *language[1] > *language[3] 比较的是???正确答案: ???????
(A)?
字符F和字符P
(B)? 字符串BASIC和字符串JAVA
(C)? 字符B和字符J
(D)? 字符串FORTRAN和字符串PASCAL

10下面能正确进行字符串赋值,并且能确保字符串以'\0'结尾的操作是??正确答案: 】?????
(A)? char s[5] = {"ABCDE"};
(B)? char s[5] = {'A', 'B', 'C', 'D', 'E'};
(C)? char *s; s = "ABCDE";
(D)? char *s; scanf("%s", s);

11若有:
char *p[2][3] = {
"abc", "defg", "hi",
"jklmnop", "qrstuvwxyz", "ABCD"
};
则表达式(*(*(p+1)+1))[7]的值为?
?正确答案:

12设有说明 int (* ptr) [M]; 其中ptr是??正确答案: ?????????
(A)? M个指向整型变量的指针
(B)? 指向M个整型变量的函数指针
(C)? 一个指向具有M个整型元素的一维数组的指针
(D)? 具有M个指针元素的一维指针数组,每个元素都只能指向整型量

13已知int a, *p=&a; 则下列函数调用中错误的是????正确答案: 】????????
(A)? scanf("%d", &a);
(B)? scanf("%d", p);
(C)? printf("%d", a);
(D)? printf("%d", p);

14说明语句 int *(*p)();的含义是???正确答案: ??????
(A)?p是一个指向int型数组的指针
(B)?p是指针变量,它构成了指针数组
(C)?p是一个指向函数的指针,该函数的返回值是一个整型
(D)? p是一个指向函数的指针,该函数的返回值是一个指向整型的指针

15下列不属于C++语言关键字的是?【?正确答案: 】。
(A)default
(B)register
(C)enum
(D)external

16设有下面的程序段:
char s[] = "china";
char *p;
p = s;
则下列叙述正确的是?【
?正确答案:
(A)s和p完全相同
(B)数组s中的内容和指针变量p中的内容相等
(C)s数组长度和p所指向的字符串长度相等
(D)*p与s[0]相等

17、假设已定义double (*sin)();有一个函数的定义如下:
void newprint(double (*f)(), double x)
{
printf("%f", (*f)(x));
}
则正确的调用语句是?【
?正确答案:
(A)newprint(sin, 0.5);
(B)newprint(sin(0.5));
(C)newprint(&sin, 0.5);
(D)newprint((&sin)(0.5));

18、阅读程序,选择程序的输出结果。?【?正确答案:

#include <iostream> 

using namespace std;

int main()

{

?static int a[2][3] = {{1,2,3},{4,5,6}};

?int m, *ptr;

?ptr = &a[0][0];

?m=(*ptr)*(*(ptr+2))*(*(ptr+4));

?printf("%d\n",m);

}

A.15
B.48
C.24
D.
无定值

19、已知:int a[]={1,2,3,4},y,*p = &a[1];则执行语句“y=(*--p)++;”之后,变量y的值为?【?正确答案:
A.1
B.2
C.3
D.4

20、以下程序段的输出是?【?正确答案:】。

static char a[] = "-12345";

int k=0,symbol,m;

if(a[k]=='+'||a[k]=='-')

?symbol=a[k++]=='+'?1:-1;

for(m=0;a[k]>='0'&&a[k]<='9';k++)

?m = m*10+a[k]-'0';

printf("number = %d\n",symbol*m);

(A)number = -12345
(B)number = 12345
(C)number = -10000
(D)number = 10000

21、设 char **s; 以下正确的表达式是?【?正确答案:
(A)s = "computer";
(B)*s = "computer";
(C)**s = "computer";
(D)*s = ’c’;

22、下面程序的运行结果是??【?正确答案: 】.

#include <iostream> 

#include <string.h>

using namespace std;

void fun(char *s)

{

char a[7];

s = a;

strcpy(a, "look");

}

int main()

{

char *p;

fun (p);

puts(p);

}

(A)look###
(B)look
(C)look##
(D)
不确定的值
(选项中的#表示空格)

23、若有函数 max(a, b), 并且已使函数指针变量p指向函数max,当使用指针调用该函数时,正确的调用方法是?【?正确答案: 】.
(A)(*p)max(a, b);
(B)*pmax(a, b);
(C)(*p)(a, b);
(D)*p(a, b);

24已知:char *s="\t\"Name\\Address\n";则s所指的字符串的长度为?【?正确答案: 】。
(A)19
(B)15
(C)18
(D)
说明不合法

25下面关于字符串的说明中,错误的是?【?正确答案:
(A)char str[7]="FORTRAN";
(B)char str[]="FORTRAN";
(C)char *str="FORTRAN";
(D)char str[]={‘F','O','R','T','R','A''N','\0'};

1、函数int min(int *x, int n)计算并返回具有n个元素的数组x中的最小元素的下标(该函数不是递归函数)。请填空(表达式中间不要有空格)。
int min(int *x, int n)
{
? int i=0, j;
? for(j=0; j<n; j++)
??? if(x[j] < x[i])
????????????? ?????【?
正确答案: ;
? return i;
}

2、给出下述程序的执行结果?????? ?????【?正确答案: ?????????

#include <iostream> 

using namespace std;

int main()??

{

? ? ? int a[4] = {1,2,3,4};

? ? ? int *p;

? ? ? p=&a[2];

? ? ? printf("%d ",++*p);

? ? ? printf("%d\n",*--p);

}?

3、如果想输出字符串"hello",下列程序是否正确?如果正确,答案处填写正确;如果不正确,答案处填写不正确。????? ?????【?正确答案: ?????

#include <iostream> 

using namespace std;

void func(char *q)

{

? ? ? ? ? ?char a[]="hello";

? ? ? ? ? ?q=a;

}

int main()??

{

? ? ? ? ? ?char *p, b[]="hey";

? ? ? ? ? ?p=b;

? ? ? ? ? ?func(p);

? ? ? ? ? ?cout<<p;

}?

4、给出下述程序的执行结果????? ?????【?正确答案:】?????????

#include <iostream> 

using namespace std;

void swap(int *p, int *q)

{

? ? ? ? ?int *t;

? ? ? ? ?t=p;

? ? ? ? ?p=q;

? ? ? ? ?q=t;

}

int main()??

{

? ? ? ? ? int a=10,b=20;

? ? ? ? ? swap(&a,&b);

? ? ? ? ? printf("a=%d,b=%d\n",a,b);

}?

5、下面程序的功能是将字符串 s 中的内容按逆序输出,但不改变串中的内容,
请选择填空(答案请填写所选择的两个字母,中间用空格格开,如A A的形式):????? ?????【?
正确答案:

#include <iostream> 

using namespace std;

void inverp(char *a)

{

? ? if (_______________)

? ? ? ? return;

? ? inverp(a+1);

? ? printf("%c",______________);

}

int main()

{

? ? char s[10] = "hello!";

? ? inverp(s);

}

空 1 :
(A)? *a != '\0'
(B)? *a != NULL
(C)? *a == '\0'
(D)? ! a * == 0

空 2 :
(A)? * (a-1)
(B)? *a
(C)? * (a+1)
(D)? * (--a)

6以下程序的运行结果是?????? ?????【?正确答案:】??

#include <iostream> 

using namespace std;

char *strc(char *s1,char *s2)

{

?char *p=s1;

?while (*s2!='\0')

?{

? *p++=*s2++;

?}

?return s1;

}

int main()

{

?char s1[30]="computer OK!",s2[]="language",*pt;

?pt=strc(s1,s2);

?cout<<pt<<endl;

}

7、以下程序的运行结果是?????? ?????【?正确答案:】??

#include <iostream> 

using namespace std;

int main()

{

?int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

?int (*p)[4]=a,i,j,k=0;

?for (i=0;i<3;i++)

? for (j=0;j<2;j++)

? ?k+=*(*(p+i)+j);

?printf("%d\n",k);

}

文章来源:https://blog.csdn.net/yf743909/article/details/135183009
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。