第24节 习题解析
24.1-数据类型、控制结构、函数
1、数据类型与表达式
1. 类型修饰符不能修饰_____
A. char B. int C. long int D. float
2. 下列选项中,合法的整型常量的是_____
A. 60 B. 01a C. 986,012 D. 2e5
3. 字符串"\t\v\\\0which\n"的长度是_____
A. 4 B. 3 C. 9 D. 输出值不确定
4. 命题“10<m<15或m>20”的C++语言表达式是_____
A. (m>10)&&(m<15)||(m>20) B. (m>20)&&(m<15)||(m>10)
C. (m>10)||((m<15)&&(m>20)) D. (m>10)||(m<15)||(m>20)
5. 以下非法的赋值表达式是_____
A. n=(i=2,i++); B. j++; C. ++(i+1); D. x=j>0
6. 表达式!x等效于表达式_____
A. x==1 B. x==0 C. x!=1 D. x!=0
7. 在下列成对的表达式中,运算符+的意义不相同的是_____
A. 5.0+2.0和5.0+2 B. 5.0+2.0和5+2.0 C. 5.0+2.0和5+2 D. 5+2.0和5.0+2
答案:1D 2A 3B 4A 5C 6B 7C
2、程序控制结构
1. 执行语句序列: int x;
cin>>x;
if(x>250) cout<<'A';
if(x<250) cout<<'B';
else cout<<'A';
不可能出现的情况是_____
A. 输出:A B. 输出:B C. 输出:AB D. 输出:AA
2. 关于switch语句的说明中,错误的是_____
A. default语句是可缺省的 B. 各个分支中的break语句起着退出switch语句的作用
C. switch结构不可以嵌套 D. 每个case语句中不必用{},而整体的switch结构一定要写一对{}
3. 阅读下面的程序:int x;
cin>>x;
if(x++>5) cout<<x<<endl;
else cout<<x--<<endl;
如果两次执行上述程序,且键盘输入分别是4和6,则输出结果是_____
A. 4, 6 B. 3, 6 C. 4, 7 D. 5, 7
4. 已知int i=5,下列do-while循环语句的循环次数是_____
do{ cout<<i--<<endl;
i--;
}while(i!=0);
A. 0 B. 1 C. 5 D. 无限
5. for(int x=0,y=0;!x&&y<=5;y++);语句的循环次数是_____
A. 0 B. 5 C. 6 D. 无限
6. 下面有关for循环语句正确的描述是_____
A. for循环只能用于循环次数已经确定的情况
B. for循环是先执行循环体,后判断循环表达式
C. 在for循环中,不能用break语句跳出循环
D. for循环的循环体语句中可以包含多条语句,但必须用大括号括起来
7. 下列循环语句的循环次数是_____
while(int i=0) i--;
A. 0 B. 1 C. 2 D. 3
答案:1C 2C 3D 4D 5C 6D 7A
3、函数
1. C++语言中规定函数的返回值类型是由_____
A. return语句中的表达式类型决定
B. 调用该函数时的主调函数类型所决定
C. 调用该函数时系统临时决定
D. 在定义该函数时指定的函数数据类型所决定
2. 若调用一个没有return语句的函数,则正确的说法是该函数_____
A. 没有返回值 B. 返回若干个系统默认值 C. 有返回值,但返回一个不确定的值 D. 返回一个用户所希望的值
3. 在函数定义格式中,下面个组成部分中,_____是可以省略的。
A. 函数名 B. 函数数据类型说明 C. 函数体 D. 函数参数
4. 下列函数调用中,对主调函数没有起到任何作用的是_____
A. void f1(double &x) { --x; }
B. double f2(double x) { return x-1.5; }
C. void f3(double x) { --x; }
D. double f4(double *x) { --*x; return *x; }
5. 在_____情况下适宜采用inline内联函数。
A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少,频繁调用 D. 函数代码多,不常调用
6. 下列对定义重载函数的要求中_____是错误的提法。
A. 要求参数的个数相同 B. 要求参数类型相同时,参数个数不同
C. 函数的返回值类型可以不同 D. 要求参数个数相同时,参数类型不同
7. 一个函数为void x(int, char ch='a'); 另一个函数为void x(int); 则它们_____
A. 不能再同一程序中定义 B. 可以在同一程序中定义并可重载
C. 可以在同一程序中定义,但不可以重载 D. 以上说法均不正确
8. 下列函数原型说明中错误的是_____
A. void fun(int x=0,int y=0); B. void fun(int x,int y);
C. void fun(int x,int y=0); D. void fun(int x=0,int y);
9. 不能实现函数之间数据传递的是_____
A. 全局变量 B. 局部变量 C. 函数接口 D. 函数返回值
10. 如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能 被同一程序的其他文件中的函数调用,则这个函数是_____
A. 私有函数 B. 内部函数 C. 外部函数 D. 库函数
答案:1D 2C 3D 4C 5C 6A 7C 8D 9B 10B
24.2-预处理命令、数组、指针、自定义数据类型
4、预处理命令
1. 以下叙述中错误的是_____
A. 预处理命令都必须以#开头
B. 在程序中凡是以#开始的语句行都是预处理命令行
C. C++程序在执行过程中对预处理命令行进行处理
D. 预处理命令行可以出现在C++程序中任意一行上
2. 设#define P(x) x/x,执行语句cout<<P(3*5)后的输出结果是_____
A. 1 B. 0 C. 25 D. 15
3. 在“文件包含”预处理命令形式中,当#include后面的文件名用“”扩起来时, 寻找被包含文件的方式是_____
A. 直接按系统设定的标准方式搜索目录
B. 现在源程序所在的目录中搜索,再按系统设定的标准方式搜索
C. 仅仅搜索源程序所在的目录
D. 仅仅搜索当前目录
4. 若有宏定义:
#define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是_____
A. 出错 B. 42 C. 48 D. 54
答案:1C 2C 3B 4C
5、数组
1. 下列关于数组的描述正确的是_____
A. 数组的长度是固定的,而其中元素的数据类型可以不同
B. 数组的长度是固定的,而其中元素的数据类型必须相同
C. 数组的长度是可变的,而其中元素的数据类型可以不同
D. 数组的长度是可变的,而其中元素的数据类型必须相同
2. 在C++语言中引用数组元素时,下面关于数组下标数据类型的说法错误的是_____
A. 整形常量 B. 整形表达式 C. 整形常量或整形表达式 D. 任何类型的表达式
3. 下面二维数组的定义中正确的是_____
A. int a[ ][ ]={1,2,3,4,5,6}; B. int a[2][ ]={1,2,3,4,5,6};
C. int a[ ][3]={1,2,3,4,5,6}; D. int a[2,3]={1,2,3,4,5,6};
4. 下面有关字符数组的描述错误的是_____
A. 字符数组可以存放字符串
B. 字符串可以整体进行输入和输出
C. 可以在赋值语句中通过赋值运算符对字符数组整体赋值
D. 不可以用关系运算符对字符数组中的字符串进行比较
5. 字符数组s不能作为字符串使用的是_____
A. char s[ ]="happy"; B. char s[6]={'h','a','p','p','y','\0'};
C. char s[ ]={"happy"}; D. char s[5]={'h','a','p','p','y'};
6. 下面程序的输出结果是_____
char str[]="SSWLIA",c; int k;
for(k=2;(c=str[k])!='\0';k++){
switch(c){
case 'I': ++k; break;
case 'L': continue;
default : cout<<c; continue;
}
cout<<'*';
}
A. SSW B. SW* C. SW*A D. SW
7. 对数组名作为函数的参数,下面的描述正确的是_____
A. 数组名做函数的参数,调用时将实参数组复制给形参数组
B. 数组名做函数的参数,主调函数和被调函数共用一段存储空间
C. 数组名做函数的参数,形参定义的数组长度不能省略
D. 数组名做函数的参数,不能改变主调函数中的数据
答案:1B 2D 3C 4C 5D 6B 7B
6、指针与引用
1. 下面对指针的描述不正确的是_____
A. 指针是地址变量
B. 指针不能用除0以外的常量赋值
C. 两个指针变量的加法无意义
D. 指向不同类型变量的指针的长度也不同
2. 变量的指针,其含义是指该变量的_____
A. 值 B. 地址 C. 名 D. 一个标志
3. 对于类型相同的两个指针变量之间不能进行的运算是_____
A. < B. = C. + D. -
4. 若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;,则数值不为3的表达式 是_____ A. x[3] B. p1=x+3,*p1++ C. p1=x+2,*(p1++) D. p1=x+2,*++p1
5. 若有定义char ch[]="abc\0def",*p=ch;,执行语句cout<<*p+4;后的输出结果是_____
A. def B. d C. e D. 0
6. 若有定义int(*p)();,标识符p可以_____
A. 表示函数的返回值 B. 指向函数的入口地址 C. 表示函数的返回类型 D. 表示函数名 7. 下列引用的定义中,_____是错误的。
A. int i;int &j=i;
B. int i;int &j;j=i;
C. float i;float &j=i;
D. char d;char &k=d;
答案:1D 2B 3C 4C 5C 6C 7B
7、自定义数据类型
1. 设有结构体说明struct ex{int x; float y; char z;}example;,以下叙述中错误的是_____
A. struct是结构体类型的关键字
B. example是结构体类型名
C. x、y、z都是结构体成员名
D. struct ex是结构体类型
2. 在说明一个结构体变量时,系统分配给它的存储空间是_____
A. 该结构体中的第一个成员所需的存储空间
B. 该结构体中的最后一个成员所需的存储空间
C. 该结构体中占用最大存储空间的成员所需的存储空间
D. 该结构体中所有成员所需的存储空间之和
3. 若有定义struct ru{ long x; float y; }time,*timep=&time;,则对time中成员x 的正确引用是_____
A. ru.time.x B. timep.x C. (*timep).x D. time->x
4. 若有定义union data { char ch; int x; }a;,下列语句中_____是不正确的。
A. a={'x',10}; B. a.x=10; a.x++;
C. a.ch='x'; a.ch++; D. a.x=10; a.ch='x';
5. 若有定义enum color{ red,yellow=2,blue,white,black}r=white;,执行cout<<r;后的输出结果是_____
A. 0 B. 1 C. 3 D. 4
6. 下面对typedef的叙述中错误的是_____
A. 用typedef可以定义各种类型名,但不能用来定义变量
B. 用typedef可以增加新类型
C. 用typedef只是将已存在的类型用一个新的标识符来代表
D. 使用typedef有利于程序的通用和移植
答案:1B 2D 3C 4A 5D 6B
标签:24,函数,_____,int,数据类型,++,数组,习题,解析
From: https://blog.csdn.net/m0_69088645/article/details/140083861