数据结构经典测试题1

ops/2024/10/18 9:26:03/

1. 

char a=101;
int sum=200;
a+=27;sum+=a;
printf("%d\n",sum);

上述代码运行结果是什么呢?

A: 327 B: 99 C: 328 D: 72

答案为D。

char为有符号类型,占1个字节,也就是8位,其中最高位是符号位,取值范围为-128~127;a=101+27=128,128表示为 1000 0000,作为补码放在内存中,符号位为1,在与int类型的sum进行加计算时会整型提升,高位补1,再转成原码 为-128,sum=200+(-128)=72

2.

int value = 1024;
char condition = *((char*)(&value));
if(condition) value += 1; condition = *((char*)(&value));
if(condition) value += 1; condition = *((char*)(&value));
printf("%d %d", value, condition);

上述代码运行结果是什么呢?

A: 1026 1 B: 1025 0 C: 1025 1 D: 1024 0

答案为D.

1024的二进制是:0000 0000 0000 0000 0000 0100 0000 0000;分析得*((char *)(&value))的作用是获取value变量的低 地址8位数据,若数据是采用大端存储方式,则低地址对应的是数据的高位,即最左边的8位0,则condition=0,不执行两 个if语句,则value不变,还是1024;若数据是采用小端存储方式,则低地址对应的是数据的低位,即最右边的8位0,则 condition=0,不执行两个if语句,value值还是1024

3.

void func(char para[100])
{
void *p = malloc(100);
printf("%d, %d\n", sizeof(para), sizeof(p));
}

上述代码在32位环境下运行会是什么结果呢?

A: 4,4 B: 100,4 C: 4,100 D: 100,100

答案为A

para和p都是指针,32位机器上指针都是4个字节.

4.

#include <stdio.h>
void func(char *p) { p = p + 1; }
int main()
{
char s[] = {'1', '2', '3', '4'};
func(s);
printf("%c", *s);
return 0;
}

A: 2 B: 编译错误 C: 1 D: 无法确定

答案为C

调用函数func时传的是s的值,形参p的改变,并不会改变s本身,*s拿到的还是首地址的字符'1.

5.

已知数组D的定义是 int D[4][8]; 现在需要把这个数组作为实参传递给一个函数进行处理。下列可以作为对应的形 参变量说明的是【多选】( )

A: int D[4][] B: int *s[8] C: int(*s)[8] D: int D[][8]

答案为CD.

数组D是一个二维数组,函数传参时数组名退化为首元素地址,就是第一行的地址,是一维数组的地址,为int(*)[8]类型,C 正确,B选项是指针数组的,这里不行;若想写成数组的形式,则列不能省行可以省,D选型格式是对的,A选项不对.

6.

自守数是指一个数的平方的尾数等于该数自身的自然数。请求出n(包括n)以内的自守数的个数.

#include <stdio.h>
#include <math.h>
int main()
{
int n;
while(~scanf("%d", &n)) {
long count = 0, base = 10;
for (int i = 0; i <= n; i++){
long pow_n = pow(i, 2);
if (i == base) base *= 10;//两位数的时候成为100,三位数的时候成为1000....
if (pow_n % base == i) count++;}
printf("%d\n", count);
}
return 0;
}

这里我们采用取模的方式进行对比。

谢谢

http://www.ppmy.cn/ops/84762.html

相关文章

HTML(五)——HTML区块,布局

HTML区块 HTML可以通过 <div> 和 <span>将元素组合起来&#xff0c;可以来布局&#xff0c;就是盒子&#xff0c;div是块级盒子&#xff0c;里面 可以放任何东西&#xff0c;span里面装的是文本 HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 实…

nginx漏洞修复 ngx_http_mp4_module漏洞(CVE-2022-41742)【低可信】 nginx版本升级

风险描述&#xff1a; Nginx 是一款轻量级的Web服务器、反向代理服务器。 Nginx 的受影响版本中的ngx _http_mp4_module模块存在内存越界写入漏洞&#xff0c;当在配置中使用 mp4 directive时&#xff0c;攻击者可利用此漏洞使用使用ngx_http_mp4_module模块处理特制的音频或视…

紫龙游戏服务器面试

1.C# 引用类型和值类型的区别 2.C# 防止内存碎片有哪些方法 3.由于会发生GC会导致内存压缩&#xff0c;那么如果C# 和C共同访问的内存在发生内存压缩时&#xff0c;C是否还能找到之前访问的内存 使用堆外内存 4.C# GC算法 5.C# event 是线程安全的吗 event 和 action…

npm上传自己的包以及发布过程遇到的问题

大家好&#xff0c;我是前端追寻路上的【酱酱仔】 作为在前端领域不断探索的一员&#xff0c;在此记录开发中遇到的问题&#xff0c;如果你也遇到了相同的问题&#xff0c;希望本文对你有帮助。 前提&#xff1a;本文涉及的命令都是在要发布的包的根目录下执行的&#xff0c;在…

【vueUse库Time模块各函数简介及使用方法--全篇】

vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法: vueUse库Sensors模块各函数简介及使用方法 vueUseTime函数1. useDateFormat…

微信小程序--页面框架布局

创建page之后&#xff0c;在wxml中写的页面内容&#xff0c;都会包裹在<page>标签之中 若想像网页一样进行顶部、底部、内容等页面框架布局&#xff0c;仅仅写以下样式是不足够的 <view style"height: 10%; background-color: blueviolet;">顶部 </v…

c++ primer plus 第16章string 类和标准模板库, 16.3.4基于范围的 for 循环(C++11)

c primer plus 第16章string 类和标准模板库, 16.3.4基于范围的 for 循环(C11) c primer plus 第16章string 类和标准模板库, 16.3.4基于范围的 for 循环(C11) 文章目录 c primer plus 第16章string 类和标准模板库, 16.3.4基于范围的 for 循环(C11)16.3.4基于范围的 for 循环…

详解yolov5和yolov8以及目标检测相关面试

一、与yoloV4相比&#xff0c;yoloV5的改进 输入端&#xff1a;在模型训练阶段&#xff0c;使用了Mosaic数据增强、自适应锚框计算、自适应图片缩放基准网络&#xff1a;使用了FOCUS结构和CSP结构Neck网络&#xff1a;在Backbone和最后的Head输出层之间插入FPN_PAN结构Head输出…