网站到期忘记续费,盐城网站优化公司,wordpress 域名变更,tp框架做的图片网站目录
选择题#xff1a;
题一#xff1a;
题二#xff1a;
题三#xff1a;
题四#xff1a;
题五#xff1a;
编程题#xff1a;
题一#xff1a;自除数
思路一#xff1a;
题二#xff1a;除自身以外数组的乘积
思路二#xff1a;
本人实力有限可能对…
目录
选择题
题一
题二
题三
题四
题五
编程题
题一自除数
思路一
题二除自身以外数组的乘积
思路二
本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连 选择题
题一 1、下列程序的输出是 #includestdio.h int main() { int a [12] {1,2,3,4,5,6,7,8,9,10,11,12}*p[4],i; for(i0;i4;i) p[i]a [i*3]; printf(%d\np[3][2]); return 0; } A: 上述程序有错误 B: 6 C: 8 D: 12 答案解析 p是一个指针数组p[i] a[i*3]相当于是把数组a每3个一组分开并把每组的首地址存在p数组此时p类似一个4行3列的二维数组p[3][2]就是4行第3个元素12。 题二 2、二维数组X按行顺序存储其中每个元素占1个存储单元。若 X[4][4] 的存储地址为 Oxf8b82140 , X[9][9] 的存储地址为 Oxf8b8221c ,则 X[7][7] 的存储地址为 A: Oxf8b821c4 B: Oxf8b821a6 C: Oxf8b82198 D: Oxf8b821c0 答案解析 假设每行有n个元素那x[9][9]元素的地址 - x[4][4]元素的地址 0x21c0x1405n5(21c和140是地址末三位的十六进制数)这里n是43假设x[7][7]的地址是z,x[7][7]元素的地址 - x[4][4]元素的地址 z-0x140 3n3z 3n3140 3*4330x140 0x840x140 0x1c4看地址的尾数选择A。 题三 3、以下哪个选项可以正确描述 sizeof(double) A: 一个整型表达式 B: 一个双精度型表达式 C: 一个不合法的表达式 D: 一种函数调用 答案解析 sizeof是C语言中的一个操作符不是函数调用简单的说其作用就是返回一个对象或者类型所占的内存字节数结果是无符号整数因此可以把它看作是整型表达式。所以选择A。 题四 4、下列代码运行后的结果是什么 int main() { char a a,b; printf(%c,, a); printf(%c\n, b a); return 0; } A: b,b B: b,c C: a,b D: a,c 答案解析 变量a里边存的是字符a第一次输出先加加再输出输出的是b;第二次输出的时候a先赋值再加加赋值给b的就是a原来的值输出b的时候的还是‘b’。 题五 5、以下逗号表达式的值为 (x 4 * 5 , x * 5) , x 5; A: 25 B: 20 C: 100 D: 45 答案解析 逗号表达式是从前到后依次计算子表达式而其结果是最后一项的值此题去掉括号后的表达式和原表达式是等价的先计算4*5并赋值给xx变为20中间x*5并没有改变x的值最后一项x5值是25也就是整个表达式的值。 编程题
题一自除数
728. 自除数 - 力扣LeetCode 示例 1 输入left 1, right 22
输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22] 思路一 第一步将returnSize的初始值设为“0”开辟足够容纳所有可能值的数组num 第二步将题目所给的值域遍历一遍每次用“n”记录当前遍历值 第三步在确保每次都将一个数遍历完当n“0”就循环结束否则开始判断是不是自除数分别拿到个位、十位、百位的数值并取余 第四步如果最后n的值为“0”说明是自除数并放入数组中否则不是。
int* selfDividingNumbers(int left, int right, int* returnSize)
{int i 0;*returnSize 0;//开辟数组空间int* num (int*)malloc(4000);//遍历数组所给元素范围for(i left; i right;i){int n i;//确保每次都将一个数遍历完for(int j 0;j 4;j){//n为0就不执行if(n % 10 ! 0){int k n % 10;//判断是不是自除数if(i % k 0){n n / 10;}}}//最后遍历完的就是自除数if(n 0){num[(*returnSize)] i;}}return num;
}
题二除自身以外数组的乘积
238. 除自身以外数组的乘积 - 力扣LeetCode 示例 1: 输入: nums [1,2,3,4]
输出: [24,12,8,6] 思路二
需要明确知道 题目意思是数组下标位置定义的值为除了自身以外数组里的所有元素相乘的值 第一步分别定义两个足够大小的数组前缀arr1(当前数之前所有元素的乘积),后缀arr2(当前数之后所有元素的乘积)开辟相同大小的数组tmp 第二步前缀前缀数组第一个元素为“1”即arr1[i] left;然后乘以原数组的第“i”位得到的值放到left中 第三步从后往前后缀后缀数组最后一个元素为“1”即arr2[i] right;然后乘以原数组的第“i”位得到的值放到right中 第四步前缀与后缀的各个对应的元素相乘就是除自身以外的所有元素相乘。
//题目意思是数组下标位置定义的值为除了自身以外数组里的所有元素相乘的值
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{int n numsSize;int arr1[100000] {0};int arr2[100000] {0};//开辟空间int* tmp (int*)malloc(sizeof(int)*n);*returnSize n;int left 1;int right 1;int i 0;//计算各个元素的前缀for(i 0;i n;i){arr1[i] left;left arr1[i] * nums[i];}//计算各个元素的后缀for(i n-1;i 0;i--){arr2[i] right;right right * nums[i];}//前缀乘以后缀即结果for(i 0;i n;i){tmp[i] arr1[i] * arr2[i];}return tmp;
}
本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连