自己做网站都要什么手续,oa系统定制,手机网页开发模板,wordpress 评论框美化在c语言经典测试题6的第一题#xff0c;大家是否想过可不可以将递归参数改为s呢#xff1f;或许有的人已经试过了#xff0c;但是发现好像不会有结果#xff0c;其实是因为s为后置#xff0c;先试用后加1#xff0c;然而我们这个是在s出了函数之后才会运行加1操作#x…在c语言经典测试题6的第一题大家是否想过可不可以将递归参数改为s呢或许有的人已经试过了但是发现好像不会有结果其实是因为s为后置先试用后加1然而我们这个是在s出了函数之后才会运行加1操作又由于该函数为递归函数不会直接出函数所以该递归参数就一直是s不会改变这样的话代码就会陷入死递归。
1.题1
char ch;
int i;
float f;
double d;如上图我们定义了4种类型的数据则表达式: ch/i (f*d – i) 的结果类型为
其实在不同类型的数据进行计算时会统一进行向最高级类型的转换在这里基本数据类型的等级从低到高如下char int long float double运算的时候是从低转到高的表达式的类型会自动提升或者转换为参与表达式求值的最上级类型。所以该表达式的结果类型应该为double类型。
2.题2
#include stdio.h
int main()
{
int x -1;
unsigned int y 2;
if (x y)
{
printf(x is greater);
}
else
{
printf(y is greater);
}
return 0;
}
上述代码运行结果会是什么呢
我们来分析一下首先我们创建了一个有符号的整型x,和一个无符号整型y,x是有符号数-1内存中是全1当有符号的x和无符号数进行比较时x会隐式类型转换被当做无符号数是一个很大的数所以此时第一个if条件成立结果应该是打印x is greater,我们运行看看 3.题3
int k, a, b;
unsigned int w 5;
double x 1.42;我们定义了上述数据类型下列哪一个选项不符合c语言语法表达式
A: x%3 B: w-20 C: k(a200,b300) D: aa-a9
我们来分析一下A选项其实很明显%取模操作符的两个操作数必须为整数而在上述类型中x是double类型得数据故A错误。C选项其实是一个逗号表达式其表达式的最终结果为最后一个表达式的结果。
4.题4
void func()
{
int k 1^(1 31 31);
printf(%d\n, k);
}
上述代码的运行结果是什么
我们来分析一下我们知道^操作符的运算规则为相同为0相异为1。首先的优先级最高所以先计算里面的表达式131,后1的补码变为10000000000000000000000000000000
然后该补码又进行31,结果变为11111111111111111111111111111111最后进行^操作后补码为
11111111111111111111111111111110这里是补码·我们将它还原为原码为10000000000000000000000000000010这时的结果就为-2。所以其运行结果应该为-2我们运行看看 5.题5 给你一个含 n 个整数的数组 nums 其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出 现在 nums 中的数字并以数组的形式返回结果。
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){
for (int i 0; i numsSize; i) {
if (nums[abs(nums[i]) - 1] 0)
nums[abs(nums[i]) - 1] -(nums[abs(nums[i]) - 1]);
}
int *ret (int *)malloc(sizeof(int) * (numsSize));
*returnSize 0;
for (int i 0; i numsSize; i) {
if (nums[i] 0) {
ret[*returnSize] i 1;
*returnSize 1;
}
}
return ret;
}
还是那句话勤动脑多动手。大家要勇于尝试加油祝大家都早日成为大佬。 谢谢