选择题
以下是曾经考过的
1、C语言结构体类型变量在程序执行期间( )。
A.所有成员一直驻留在内存中
B.没有成员驻留在内存中
C.部分成员驻留在内存中
D.只有一个成员驻留在内存中
答案:A
解析:在C语言的结构体类型变量在程序执行期间所有成员一直驻留在内存中。
2、以下选项中表示一个合法的常量是(说明:符号口表示空格)( )。
A.9□9□9
B.0Xab
C.123E0.2
D.2.7e
答案:B
解析:当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。
3、关于C语言中数的表示,以下叙述正确的是( )。
A.只有整型数在允许范围内能精确无误的表示,实型数会有误差
B.只要在在允许范围内整型和实型都能精确表示
C.只有实型数在允许范围内能精确无误的表示,整型数会有误差
D.只有八进制表示的数在不会有误差
答案:A
解析:实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差。
4、表达式18/4*sqrt(4.0)/8值的数据类型为______。
A.int
B.float
C.double
D.不确定
答案:C
解析:根据数据类型转换时的就长转换规则,可以得到最后的结果应是实型。
5、有如下说明: int a[10] ={1,2,3,4,5,6,7,8,9,10},* p=a; 则数值为9的表达式是
A.*p+9
B.* (p+8)
C.* p+=9
D.p+8
答案:B
解析:按照C++语言的数组元素的引用方法,如数组元素a[0] ,可以用表达式 * (p+0) ,即* p来引用,对于数组元素a[1] ,可以用表达式 * (p+ 1) 来引用,在这里,p+1的值就是数组元素a[1] 的地址,对此地址使用“间接访问运算符”:* (p+1) 就代表存储单元a[1] ,注意一对圆括号不可少。同样,对于数组元素a[2] ,则可以用表达式 * (p+2) 来引用…,对于数组元素a[9] ,可以用表达式 * (p+9) 来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i< 10,则数组元素a[i] 可以用表达式 * (p+i) 来引用。
6、以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原是( )。
#include<iostream.h>
void main()
{
int*p,*q,a,b;
p=&a;
eout<<"input a:";
cin>>p;
}
A.*p表示的是指针变量p的地址
B.p表示的是变量a的地址,而不是变量a的值
C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
答案:B
解析:p表示的是变量a的地址,定义后*p表示的是变量a的值。
7、有以下程序
#include<iostream.h>
void main() {
int a=5,b=0,c=0;
if(a=b+c)cout<<"***"<<endl;
else cout<<"$$"<<<endl;
}
下列选项叙述正确的是( )。
A.有语法错不能通过编译
B.可以通过编译但不能通过连接
C.输出***
D.输出$$
答案:D
8、若定义:int a=511,*b=&a