第24节 习题解析

第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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值