牛客C/C++刷题笔记(五)
创始人
2025-06-01 08:16:39
0

122、对于"int *pa[5];"的描述中,( )是正确的。
在这里插入图片描述
123、以下叙述中正确的是()
在这里插入图片描述

C语言的源程序中对缩进没有要求,所以A选项错误。C语言中区分大小写,main函数不能写成Main或_main,所以B选项错误。一个C程序有且只有一个主函数,所以C选项错误。

124、在嵌套使用if语句时,C语言规定else总是()
在这里插入图片描述
125、下列程序的输出是()

#include 
int main(void) {int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p[4], i;for (i = 0; i < 4; i++) p[i] = &a[i * 3];printf("%d\n", p[3][2]);return 0;
}

在这里插入图片描述

int p[4]: p 是指针数组, 数组内包含 4 个元素, 每个元素都是 int 类型.
p[3] = &a[9], 即第 3 个元素是指向 a[9] 的
p[3][2] = p[3]+2, p[3] 是 int* 类型, 偏移 2 个单位后指向 a[11]

126、假设数原型和变量说明如下:

void f4(int **p);
int a[4]={1,2,3,4};
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *q[3]={b[0],b[1],b[2]};

下面调用合法的是()
在这里插入图片描述

f(a). a 被传入函数形参时, 会退化成指向其首元素的指针, 类型是 int*, 不符.
f(&a). &a 是数组 a 的地址, 其类型是 int()[4], 不符.
f(b). b 是数组的数组. b 被传入函数形参时, 会退化成指向其首元素的指针, 也就是 b[0] 的地址, b[0] 的类型是 int[4], 故 &b[0] 类型是 int(
)[4], 不符.
f(q). q 是一个指针数组, 在初始化时, 用 b[0], b[1], b[2] 初始化了, 此时 b[0], b[1], b[2] 会退化成指向各首元素的指针(int* 类型, 因此类型符合, 可以用它们初始化). q 被传入函数形参时, 退化成指向其首元素的指针, 即 int**. 符合

127、循环语句whlie(int i=0 )i–;的循环次数是()
在这里插入图片描述
128、对于代码段

#define D 2 
int x = 5;
float y = 3.83;
char c = 'D'; 

则下面选项中错误的是( )
在这里插入图片描述

char c=‘D’ c++就是字符D的ASCII码加一,变成E
我们不能对宏进行取地址操作,而++操作是先从内存取值到寄存器 然后寄存器加一后再写入内存中必然涉及如地址操作

129、对于代码段

char c = 48;
int i = 1, j = 10;
j = !(c > j)&&i++;

则i和j的值分别是1和0。请问这句话是正确的吗?
在这里插入图片描述
130、面向对象的基本特征有哪些()
在这里插入图片描述

重载是属于多态的一类
在这里插入图片描述

131、有以下程序,程序运行后的输出结果是()

int f (int n)
{if (n==1) return 1;else return f(n-1)+1;
}
int main()
{int i, j = 0;for (i=1; i < 3; i++)  j += f(i);printf("%d\n",j);     return 0;
}

在这里插入图片描述
132、定义一个输出文件流对象,并打开d盘du文件夹下的abc.dat文件的代码如下所示:

ofstream fout;
fout.open("d:\\du\\abc.dat");

在这里插入图片描述
133、

int foo(int n) {if (n < 2) return n;return foo(n - 1) + foo(n - 2);
}

当 n = 6 时,函数的返回值是()
在这里插入图片描述
134、在64位系统下,分别定义如下两个变量:char *p[10]; char(*p1)[10];请问,sizeof§和sizeof (p1)分别值为____。
在这里插入图片描述

64位系统指针为8字节 ,所以10*8=80 p1是一个指针,8字节

135、下列代码运行出错,可能会是哪一行引起的?

void getMemory(char *p) {p = (char *)malloc(100); // 1
}int main(int argc, char const *argv[]) {char *str = NULL;getMemory(str);strcpy(str, "hello wrold"); // 2printf("%s\n", str);        // 3free(str);                  // 4
}

在这里插入图片描述

参数本身就是指针了,传str实际就是按值传递(因为str就是指针)。如果想传递str的指针,应该将参数定为指针的指针。
p所分配的空间和str所占用的空间完全不是一个,所以给p分配malloc(100)空间是符合语法的;但是它是在动态空间中分配的,函数a运行结束时,已经不存在了而str的空间一直都是0未曾改变过,所以在向str内拷贝字符串时,会出现无空间接收的情况!!!

136、设有定义 int a=3 , b=4, c=5; 则以下的表达式中 , 值为 false 的是 ()
在这里插入图片描述
137、设有数组定义 int a[][4]={0,0}; 则数组的行数为 1
在这里插入图片描述

二维数组初始化有两种方式:一种顺序初始化, int array1[3][2]={4,2,5,6};//顺序初始化;另一种按行初始化,如 int array2[3][2]={{4,2},{5},{6}};//按行初始化
本题是顺序初始化,初始化的元素个数不超过一行规定的个数,所以只有一行

138、设有下面的程序段:char s[]="china";char *p=s,p 和 s 可以随意替换使用
在这里插入图片描述

数组名作为指针是个常量,而指针则是变量

139、以下字符串定义与赋值中,正确的是()
在这里插入图片描述

在这里插入图片描述

140、

#include
int main(){unsigned char i = 7;int j = 0;for(;i > 0;i -= 3){++j;}printf("%d\n", j);return 0;
}

请问该程序的输出是多少?
在这里插入图片描述

141、输入字符数组的字符串个数应短于定义的字符数组的个数否则下标越界,这句话是否正确?
在这里插入图片描述
142、若有定义

typedef char T[10] ; 
T * a ; 

上述定义中a的类型与下面选项中完全相同的是?
在这里插入图片描述

typedef char T[10] 的意思是 T为包含10个char元素的数组,是一个数组
T * a;就是指a为指向T类型的指针,是指针,即指向包含10个char元素数组的指针
typedef并不创建新的类型,只是对已存在类型使用一个新的名字,在出现新名字的地方可以直接替换为原来的类型来处理,选项D正确。

143、以下对选择语句描述错误的是()
在这里插入图片描述

流程控制语句分类:
顺序结构
选择结构:if语句、switch语句
循环结构:while语句、for语句

144、有以下程序

#include 
#include 
void fun(int *p1, int *p2, int *s) {s = (int *)malloc(sizeof(int));*s = *p1 + *(p2++);
}
int main() {int a[2] = {1, 2}, b[2] = {10, 20}, *s = a;fun(a, b, s);printf("%d \n", *s);
}

程序运行后的输出结果是?
在这里插入图片描述

数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1

145、C语言允许函数类型缺省定义,此时函数值隐含的类型是( )
在这里插入图片描述

隐含类型是 int型,如int main()常常可写为 main()

146、若有以下说明和定义语句:

union uti {int n;double g;char ch[9];
} struct srt {float xy;union uti uv;
} aa;

考虑内存对齐,则变量aa所占内存的字节数是( )

在这里插入图片描述

在这里插入图片描述

147\有以下程序

#define N  20
void fun(int a[], int n, int m)
{int i, j;for(i=m;i>=n;i--) a[i+1]=a[i];
}
int main()
{int i, a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};fun(a,2,9);for(i = 0; i < 5; i++)printf("%d", a[i]);
}

程序运行后的输出结果是()
在这里插入图片描述
148、以下程序运行时,若输入1abcedf2df<回车>输出结果是?
在这里插入图片描述
149\以下正确的函数原型声明语句是( )。

在这里插入图片描述
150. 32位系统中,如下程序执行的结果是()

#include 
int main() {char str[] = {"hello world"};printf("%s",str);return 0;
}

在这里插入图片描述
151.有如下一段程序:

int f1(float);
int f2(char);
void f3(float);
int (*pf)(float);

在这里插入图片描述
152.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是( )。
在这里插入图片描述

引用数组元素,只要是整形就可以可,常量也行,变量也行

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...