1. 判断字符串a是否大于b,应当使用( )
if (strcmp(a,b)) //只能判断是否相等
if (strcmp(a,b)>0) YES
2. 执行下面代码 , i = 19
#define MA (x,y) (x*y ) i=5; i=MA(i,i+1)-7;#define 宏定义只是替换,MA(i,i+1)替换成x = i,y = i + 1。执行 x * y == i * i + 1(注意此处i + 1没有括号)。所以结果是26,最终结果是19 (MA(i, i+1) --->>> i * i + 1,直接代入替换)
3.
以下逗号表达式的值为( 45 )。
(x=4*5, x*5), x+25计算 : (x=20 , 20*5) , 20+25 取最右边的值
4. 若有说明:int*p,m=5,n;则以下正确的程序段是()。
p=&n;scanf("%d",&p); p=&;scanf("%d",*p) scanf("%d”,&n); *p=n; p=&n;*p=m; // YES 先将n地址赋给p,再将m的值赋给p指向的内存单元即赋值给np为指针,m和n为整型变量,指针读入时不能使用&或*,应直接使用p。*p=n为野指针赋值,p未指向某一内存单元。
5. 设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为
0~65535 // 0~2^16-1
6. 关于重载和多态正确的是(未解决)
如果父类和子类都有相同的方法,参数个数不同,将子类对象赋给父类后,由于子类继承于父类,所以使用父类指针 调用父类方法时,实际调用的是子类的方法
选项全部都不正确 // YES
重载和多态在C++面向对象编程中经常用到的方法,都只在实现子类的方法时才会使用
class A{ void test(float a){cout<<"1";} }; class B:public A{ void test(int b){cout<<"2";} }; A *a=new A; B *b=new B; a=b; a.test(1.1); 结果是1
7. test.c文件中包括如下语句:文件中定义的四个变量,哪个变量不是指针类型? answer :b
#define INT_PTR int* typedef int*int_ptr; INT_PTR a,b; int_ptr c,d;#define 宏定义是一种替换,INT_PTR a,b即为 int* a,b 所以b为整形 ,typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
所以c,d都是指针
8. 有如下语句序列:
char str[10];cin>>str;
当从键盘输入”I love this game”时,str中的字符串是
char str[10];cin>>str;
当从键盘输入”I love this game”时,str中的字符串是
"I"cin>>
该操作符是根据后面变量的类型读取数据。
输入结束条件 :遇到Enter、Space、Tab键。
对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)