153、函数的递归调用不过是一个函数直接或间接地调用它自身。()
154、在上下文及头文件均正常的情况下,执行程序段
155、以下哪项不属于STL container()
156、使用C语言将一个1G字节的字符数组从头到尾全部设置为字’A’,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近()
现在机器cpu都是GHz,每次需要若干个指令,大约在1秒。
157、64位机上,一个结构体有三个成员,分别是char、int、short类型,三个成员位于结构体中不同位置时整个结构体的大小可能是下面哪些值?
158、以下叙述中正确的是()
A选项,for(int i=0;i
B选项,if语句开头和结尾也可以用,它说函数就不对
C选项, C 语言中的语句必须以分号 “;” 结束 , 所以空语句表示为 “;”, 不是空行
159、在C语言系统中,假设int类型数据占2个字节,则double、long、unsigned int、char类型数据所占字节数分别多少()
C语言系统中,如果int型数据占2个字节,则说明该系统是16位的系统,此时double型数据占8个字节,long型数据占4个字节,unsigned int占2个字节,char型数据占1个字节
160、以下#pragma预处理命令哪个是改变编译器的对齐方式()
161、有以下表达式:
int a = 248, b = 4;
int const c = 21;
const int *d = &a;
int *const e = &b;
int const * const f = &a;
int const c=21; //变量c的值不能改变
162、有以下定义: char a; int b; float c; double d;则表达式a*b+d-c值的类型为:
164、执行下面程序,正确的输出是()。
int x=5,y=7;
void swap () {
int z;
z=x;
x=y;
y=z
}
int main (void) {
int x=3,y=8;
swap();
printf ("%d,%d\n",x, y) ;
}
165、以下程序的输出结果是()
int main() {
char st[20]="hello\0\t\\\"";
printf ("%d %d \n",strlen (st),sizeof (st));
return 0;
}
strlen计算字符串的长度,以\0为字符串结束标记;
sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系;
167、下面程序执行后s的值为()
#include
int main() {
int i=1, j=3, k=0, sum=5;
switch(k > -i++) {
case 2: sum += 1;
case 1: sum += j;
case 0: sum += i; break;
case -1: sum *= -1;
}
printf("%d",sum);
return 0;
}
169、静态变量和外部变量都是全局变量,它们的存储是静态的。请问这句话的说法是正确的吗?
170、执行下面代码后
int num = 7, sum = 7;
sum = num++, sum++, ++num;
class A {
public:
int fun1();
virtual void fun2();
private:
int _a1;
static int _a2;
};
class B : public A {
public:
virtual void fun2();
};
请问sizeof(B)的值为:
32位系统为8,int型4字节,指向虚函数表的指针一个,4字节,总共8字节。64为系统加倍,16字节
172、在上下文及头文件均正常的情况下,以下代码打印的结果是(假设运行在 64 位计算机上):
struct st_t {
int status;
short *pdata;
char errstr[32];
};
st_t st[16];
char *p = (char *)(st[2].errstr + 32);
printf("%d", (p - (char *)(st)));
173、下面关于if语句和switch语句的叙述中错误的是:
174、假设i=2,执行下列语句后i的值为()
switch( i )
{
case 1 : i ++;
case 2 : i --;
case 3 : ++ i; break;
case 4 : -- i;
default : i ++;
}
int a=5, b=3, t;
int &ra = a;
int &rb = b;
t = ra;
ra = rb;
rb = t;
176、
class A;
class B;
int main() {
A a;
B b;
return 0;
}
创建对象时会调用构造函数对对象进行初始化,对象销毁时会调用析构函数释放一些资源。
这里 a 对象和 b 对象都是局部变量,位于栈上。且 a 先于 b 创建,所以先执行 a 的构造函数,然后执行 b 的构造函数。
当 main 函数执行完以后,b 对象先出栈,所以先调用 b 的析构函数,然后 a 对象出栈,调用 a 的析构函数。
局部变量和全局变量都能被说明为static类型。
178、已知int i=1, j=2;,则表达式i+++j的值为( )
179、若输入ab('a’的ascii码是97),程序运行结果为()
int main(){
static char a[3];
scanf("%s",a);
printf("%d,%d",a[1],a[2]);
return 0;
}
静态局部变量,默认初始化为0,0 是\0的ascll码,所以一开始,数组是\0 \0 \0
180、代码段
char a[] = {'a','b','c'};
char b[] = {"abc"};
字符数组后面没有自动`\0’,字符串后面会加
181、若有定义int a[8];,则以下表达式中不能代表数组元素a[1]的地址的是()
&a[0]++包含有对&a[0]的赋值运算
183、下面函数输出结果是()
int main() {
int k = 12345;
printf("%2d\n", k);
return 0;
}
%nd 宽度不够,右对齐,左边补空格,宽度够了,以实际宽度输出。
184、能正确表达字母 c 为大写字母的 C 语言表达式是()
185、若所用变量都已正确定义,以下选项中,非法的表达式是()
'a’是个常数,不能赋值
186、以下程序的输出结果是()
int main() {
int s, i;
for(s = 0, i = 1; i < 3; i++, s += i);
printf("%d\n", s);
}
189、static 类型的变量,默认的初始化值是()
190、以下不是无限循环的语句为()
191、break语句只能跳出switch选择以及循环语句的当前嵌套层次,上述描述是否正确?
break跳过循环的剩余部分,到达下一条语句;continue跳过循环体剩余的语句,开始新的循环。
192、对C++语言和C语言的兼容性,描述正确的是( )
193、()是构成C语言的基本单位
194、下列程序执行后的输出结果是 __________
#include
void func(int *a, int b[]) { b[0] = *a + 6; }
main() {
int a, b[5];
a = 0;
b[0] = 3;
func(&a, b);
printf("%d\n", b[0]);
}
195、从下列选项中选择不会引起二义性的宏定义是()
196、C++是不是类型安全的?
C++中我们可以将0作为false,非零作为true。一个函数即使是bool类型的,但是我们还是可以返回int类型的,并且自动将0转换成false,非零转换成true。 java中int类型不能在自动转变成bool类型了。这就是类型安全的意思。
197、while(1) {x++;}, 当x的取合适的初值时,可以避免死循环。
198、若有定义:char *p(char a[10]);则p是函数名。()
199、下面关于C语言中sizeof(int)说法正确的是()
sizeof是关键字,不是函数,所以是编译时(A)确定的。
200、执行以下语句,输出结果为()
#include
int main( ) {
char *p1 = "hello";
char *p2 = "world";
char *p3 = "a piece of cake";
char *str[] = {p1, p2, p3};
printf("%c", *(str[0] + 1));
}
str为指针数组,str[0]=p1,因为p1指向char型,所以str[0]+1中的加1表示的意思是加一个字符的长度,所以输出为e. 指针加减,加减的是指针所指向的数据类型的长度单位。