工信部网站备案查询步骤,红阳建设集团网站,在网站上有中英切换怎么做,物联网网络架构由 和 组成这个项目主要是为了复习博主之前关于C语言和数据结构的寒假作业#xff0c;大家也可以根据这些题目自己进行填写并检查自己的知识点是否过关 博主也会有错误#xff0c;所以如果大家看到错误#xff0c;也希望大家能够进行指正#xff0c;谢谢大家#xff01;
Day 01
一…这个项目主要是为了复习博主之前关于C语言和数据结构的寒假作业大家也可以根据这些题目自己进行填写并检查自己的知识点是否过关 博主也会有错误所以如果大家看到错误也希望大家能够进行指正谢谢大家
Day 01
一、选择题 这里主要考察的知识点是整形和浮点数在内存中的存储 首先我们看char a一开始a101后来又加上了27所以最后a的值存储的是128而存储下来用int类型表示就是00000000 00000000 00000000 10000000但是char类型大小1个字节占8位所以大小范围是-128~127所以无法存储128它会由1271变成-128其构造在我之前的文章中也有所提及大家可以自行观看 所以suma的结果就是200-12872故选D 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);这里考察的与上题知识点基本相同但多包含了机器的大小端这一知识点 value为1024 存储的形式为00000000 00000000 00000100 00000000换成16进制即0x00000400这个数在内存中的表现取决于机器的大小端存储模式在大端存储模式下该值在内存中会以高位字节在前的方式存储而在小端存储模式下该值在内存中会以低位字节在前的方式存储。之前博主的电脑尝试过是小端机器故排列为00 04 00 00程序通过将这个整数的地址转换为 char* 类型指针并读取该地址上的值来操纵它的各个字节。程序首先读取 value 的最低有效字节称为 condition。随后程序对 condition 变量的每个比特进行检查根据当前机器的大小端模式对 value 进行递增操作。由于condition很明显已经是0因为value的最低有效字节为0故所有的1都不成立所以输出为1024 0。 需要注意的是一般我们的机器都是小端如果题目并未详细说明那么一般都以小端来判断 这里我们可能会以为sizeof(para)等于100因为char类型占一个字节的内存空间而里面有100个元素所以我们理所当然认为其答案为100但是在函数的参数中其被自动转换成了指向字符的指针实际上只传递了数组的第一个元素的地址而指针的大小不论类型都是4个字节的大小所以第一个答案为4而第二个也是一样虽然malloc了100个字节大小的内存空间但是p只是一个指针所以sizeof§同样是4故答案为44 4、以下程序执行后的输出结果为 这里依旧是指针的问题首先我们传入的是数组s的首地址pp1即往后走了一个元素大小的地址也就是从一开始的‘1’的前面走到了‘2’的前面所以这个时候的*s也就等于第二个元素2输出的结果为2. 二维数组可以省略行但是不能省略列所以passA选项选择D选项而让我们感到困惑的是B和C选项我们分别进行分析B选项int *s[8] 实际上声明了一个指针数组而不是一个二维数组。每个元素都是一个指向整数的指针类型对于 C 选项 int(*s)[8] 表示指向一个包含 8 个元素的一维数组。这种声明适用于接收指向二维数组的指针参数。 故答案为CD 编程题
1.自守数 #include stdio.h int main() { int n 0; int count 0; scanf(%d, n); for (int i 0; i n; i) { int num i * i; if(num%10i||num%100i||num%1000i||num%10000i)count;} printf(%d, count); return 0;
}一开始我们只会想到尾数是最后一位数但当我们仔细看题发现尾数就是除了最大位之后的数字另外还不能忘了10000这个比较特殊的数最后一个限定条件也要加上 另外题主一开始还以为是平方的最后一位数与原数的最后一位数相同犯了错误所以大家也要看清楚题目要求 2.求小于n的质数 #includestdio.h
#includemath.h
int main()
{int N0,count0,i,j;scanf(%d,N);for(i2;iN;i){int ki;for(j2;jsqrt(k);j){if(k%j0)break;}if(jsqrt(k)){count;//比如45j到5的时候就break了不是质数小于根号45//而46j到7的时候才退出循环而7大于根号45}}printf(%d\n,count);return 0;
}这道题的难点重点在于如何求质数 质数只有两个正因数1和它本身 要判断一个数是否为质数我们需要检查从2到这个数的平方根之间的所有整数看这个数是否能被其中任何一个整数整除。如果能被整除那么这个数就不是质数如果不能被整除那么这个数就是质数。 为什么只需要检查到平方根呢这是因为如果一个数n不是质数那么它至少有一个大于1且小于n的因数a。这个因数a要么小于或等于sqrt(n)要么大于sqrt(n)。如果a大于sqrt(n)那么n/a即另一个因数就会小于sqrt(n)。这是因为两个大于sqrt(n)的数的乘积会大于n这与n的定义矛盾。所以我们只需要检查到sqrt(n)即可确定n是否为质数。