牛客C/C++刷题笔记(六)

153、函数的递归调用不过是一个函数直接或间接地调用它自身。()
牛客C/C++刷题笔记(六)_第1张图片
154、在上下文及头文件均正常的情况下,执行程序段
牛客C/C++刷题笔记(六)_第2张图片
155、以下哪项不属于STL container()
牛客C/C++刷题笔记(六)_第3张图片
156、使用C语言将一个1G字节的字符数组从头到尾全部设置为字’A’,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近()
牛客C/C++刷题笔记(六)_第4张图片

现在机器cpu都是GHz,每次需要若干个指令,大约在1秒。

157、64位机上,一个结构体有三个成员,分别是char、int、short类型,三个成员位于结构体中不同位置时整个结构体的大小可能是下面哪些值?
牛客C/C++刷题笔记(六)_第5张图片
158、以下叙述中正确的是()
牛客C/C++刷题笔记(六)_第6张图片

A选项,for(int i=0;i B选项,if语句开头和结尾也可以用,它说函数就不对
C选项, C 语言中的语句必须以分号 “;” 结束 , 所以空语句表示为 “;”, 不是空行

159、在C语言系统中,假设int类型数据占2个字节,则double、long、unsigned int、char类型数据所占字节数分别多少()
牛客C/C++刷题笔记(六)_第7张图片

C语言系统中,如果int型数据占2个字节,则说明该系统是16位的系统,此时double型数据占8个字节,long型数据占4个字节,unsigned int占2个字节,char型数据占1个字节

160、以下#pragma预处理命令哪个是改变编译器的对齐方式()
牛客C/C++刷题笔记(六)_第8张图片
161、有以下表达式:

int a = 248, b = 4;
int const c = 21;
const int *d = &a; 
int *const e = &b;
int const * const f = &a; 

请问下列表达式哪些会被编译器禁止?
牛客C/C++刷题笔记(六)_第9张图片

int const c=21; //变量c的值不能改变

162、有以下定义: char a; int b; float c; double d;则表达式a*b+d-c值的类型为:
牛客C/C++刷题笔记(六)_第10张图片

牛客C/C++刷题笔记(六)_第11张图片

163、下列静态数据成员的特性中,错误的是()
牛客C/C++刷题笔记(六)_第12张图片

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) ;
}

牛客C/C++刷题笔记(六)_第13张图片

165、以下程序的输出结果是()

int main() {
    char st[20]="hello\0\t\\\"";
    printf ("%d %d \n",strlen (st),sizeof (st));
    return 0;
}

牛客C/C++刷题笔记(六)_第14张图片

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;
}

牛客C/C++刷题笔记(六)_第15张图片

168、以下叙述中正确的是()
牛客C/C++刷题笔记(六)_第16张图片

169、静态变量和外部变量都是全局变量,它们的存储是静态的。请问这句话的说法是正确的吗?
牛客C/C++刷题笔记(六)_第17张图片
170、执行下面代码后

int num = 7, sum = 7;
sum = num++, sum++, ++num;

后sum的值为( )
牛客C/C++刷题笔记(六)_第18张图片
171、有如下类定义:

class A {
  public:
    int fun1();
    virtual void fun2();
 
  private:
    int _a1;
    static int _a2;
};
class B : public A {
  public:
    virtual void fun2();
};

请问sizeof(B)的值为:

牛客C/C++刷题笔记(六)_第19张图片

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)));

牛客C/C++刷题笔记(六)_第20张图片

牛客C/C++刷题笔记(六)_第21张图片

173、下面关于if语句和switch语句的叙述中错误的是:
牛客C/C++刷题笔记(六)_第22张图片
174、假设i=2,执行下列语句后i的值为()

switch( i )
{
case 1 : i ++;
case 2 : i --;
case 3 : ++ i; break;
case 4 : -- i;
default : i ++;
}

牛客C/C++刷题笔记(六)_第23张图片
175、执行下面语句序列后,a和b的值分别为()

int a=5, b=3, t;
int &ra = a;
int &rb = b;
t = ra;
ra = rb;
rb = t;

牛客C/C++刷题笔记(六)_第24张图片

176、

class A;
class B;
int main() {
    A a;  
    B b;  
    return 0;
}

牛客C/C++刷题笔记(六)_第25张图片

创建对象时会调用构造函数对对象进行初始化,对象销毁时会调用析构函数释放一些资源。
这里 a 对象和 b 对象都是局部变量,位于栈上。且 a 先于 b 创建,所以先执行 a 的构造函数,然后执行 b 的构造函数。
当 main 函数执行完以后,b 对象先出栈,所以先调用 b 的析构函数,然后 a 对象出栈,调用 a 的析构函数。

177、下列说法错误的是:
牛客C/C++刷题笔记(六)_第26张图片

局部变量和全局变量都能被说明为static类型。

178、已知int i=1, j=2;,则表达式i+++j的值为( )
牛客C/C++刷题笔记(六)_第27张图片

牛客C/C++刷题笔记(六)_第28张图片

179、若输入ab('a’的ascii码是97),程序运行结果为()

int main(){
    static char a[3];
    scanf("%s",a);
    printf("%d,%d",a[1],a[2]);
    return 0;
}

牛客C/C++刷题笔记(六)_第29张图片

静态局部变量,默认初始化为0,0 是\0的ascll码,所以一开始,数组是\0 \0 \0

180、代码段

char a[] = {'a','b','c'};
char b[] = {"abc"};

牛客C/C++刷题笔记(六)_第30张图片

字符数组后面没有自动`\0’,字符串后面会加

181、若有定义int a[8];,则以下表达式中不能代表数组元素a[1]的地址的是()
牛客C/C++刷题笔记(六)_第31张图片

&a[0]++包含有对&a[0]的赋值运算

182、以下叙述中正确的是()
牛客C/C++刷题笔记(六)_第32张图片

牛客C/C++刷题笔记(六)_第33张图片

183、下面函数输出结果是()

int main() {
    int k = 12345;
    printf("%2d\n", k);
    return 0;
}

牛客C/C++刷题笔记(六)_第34张图片

%nd 宽度不够,右对齐,左边补空格,宽度够了,以实际宽度输出。

184、能正确表达字母 c 为大写字母的 C 语言表达式是()

牛客C/C++刷题笔记(六)_第35张图片

185、若所用变量都已正确定义,以下选项中,非法的表达式是()

牛客C/C++刷题笔记(六)_第36张图片

'a’是个常数,不能赋值

186、以下程序的输出结果是()

int main() {
    int s, i;
    for(s = 0, i = 1; i < 3; i++, s += i);
    printf("%d\n", s);
}

牛客C/C++刷题笔记(六)_第37张图片

187、关于局部变量和全局变量,下列说法错误的是()
牛客C/C++刷题笔记(六)_第38张图片

牛客C/C++刷题笔记(六)_第39张图片

188、下列关于内存分配和释放的函数及其区别描述正确的有?
牛客C/C++刷题笔记(六)_第40张图片

牛客C/C++刷题笔记(六)_第41张图片

189、static 类型的变量,默认的初始化值是()
牛客C/C++刷题笔记(六)_第42张图片
190、以下不是无限循环的语句为()
牛客C/C++刷题笔记(六)_第43张图片
191、break语句只能跳出switch选择以及循环语句的当前嵌套层次,上述描述是否正确?
牛客C/C++刷题笔记(六)_第44张图片

break跳过循环的剩余部分,到达下一条语句;continue跳过循环体剩余的语句,开始新的循环。

192、对C++语言和C语言的兼容性,描述正确的是( )
牛客C/C++刷题笔记(六)_第45张图片
193、()是构成C语言的基本单位
牛客C/C++刷题笔记(六)_第46张图片
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]);
}

牛客C/C++刷题笔记(六)_第47张图片
195、从下列选项中选择不会引起二义性的宏定义是()
牛客C/C++刷题笔记(六)_第48张图片
196、C++是不是类型安全的?
牛客C/C++刷题笔记(六)_第49张图片

C++中我们可以将0作为false,非零作为true。一个函数即使是bool类型的,但是我们还是可以返回int类型的,并且自动将0转换成false,非零转换成true。 java中int类型不能在自动转变成bool类型了。这就是类型安全的意思。

197、while(1) {x++;}, 当x的取合适的初值时,可以避免死循环。

牛客C/C++刷题笔记(六)_第50张图片

198、若有定义:char *p(char a[10]);则p是函数名。()
牛客C/C++刷题笔记(六)_第51张图片
199、下面关于C语言中sizeof(int)说法正确的是()
牛客C/C++刷题笔记(六)_第52张图片

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));
}

牛客C/C++刷题笔记(六)_第53张图片

str为指针数组,str[0]=p1,因为p1指向char型,所以str[0]+1中的加1表示的意思是加一个字符的长度,所以输出为e. 指针加减,加减的是指针所指向的数据类型的长度单位。

你可能感兴趣的:(c++,c语言,算法)