欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 数据结构经典测试题1

数据结构经典测试题1

2024/10/25 2:27:29 来源:https://blog.csdn.net/c23856/article/details/140631493  浏览:    关键词:数据结构经典测试题1

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

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

谢谢

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com