北京市网站建设 维护推荐,项目管理工具,fineui 如何做网站,怎样建设游戏网站#x1f525;博客主页#xff1a;小王又困了
#x1f4da;系列专栏#xff1a;每日一练
#x1f31f;人之为学#xff0c;不日近则日退
❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ 目录
一、选择题
#x1f4dd;1.第一题
#x1f4dd;2.第二题
#x1f4d…
博客主页小王又困了
系列专栏每日一练
人之为学不日近则日退
❤️感谢大家点赞收藏⭐评论✍️ 目录
一、选择题
1.第一题
2.第二题
3.第三题
4.第四题
二、编程题
1.第一题
2.第二题 ️前言 在前面我们学习完C语言的所以知识当然练习巩固也不能落下。俗话说“无财之谓贫学而不能行之谓病。”可见实践对我们学习的重要。接下来就让小王带着大家进行练习巩固我们C语言的学习。 一、选择题
1.第一题
若有以下程序则运行后的输出结果是
#includestdio.h
#define N 2
#define M N 1
#define NUM (M 1) * M / 2
int main()
{printf(%d\n, NUM);return 0;
} 解题思路 本题考查的是宏定义我们只要在进行操作之前将对应的代码换成对应的宏。我们要打印NUM只需要将NUM换成(M 1) * M / 2M也有宏定义继续转换转换成(N11)*N1/2最后将表达式中的N也进行替换就可以计算出结果(211)*21/2的结果为8.5但我们打印的是整型数据所以结果是8。我们在替换时一步一步去换不要急于求成想一步到位最重要的是在替换过程中我们不要加任何符号不要根据自己的主观臆断添加括号。 2.第二题 下面3段程序代码的效果一样吗
int b;
(1)const int *a b;
(2)int const *a b;
(3)int *const a b;
解题思路 本题就是考察我们对 const 修饰指针变量的理解const 在不同的位置表达的意思就不相同。 const放在*的左边const 修饰的是a指针解引用之后的结果表示a指向的内容不能修改。const放在*的右边const 修饰的是指针变量a本身表示a的指向不能修改。 (1)和(2)的const都在*的左边所以它们效果一样。 3.第三题
如下函数的 f(1) 的值为
int f(int n)
{static int i 1;if(n 5)return n;n n i;i;return f(n);
}
解题思路 本题主要考察的就是 static 修饰的静态变量静态变量的特点 静态变量不是存放在栈区而是存放在静态区所以它的生命周期会延长是整个程序运行期间。静态变量只初始化一次第二次在遇到该变量时就不会重新定义。 进入函数 n1首先把静态变量 i 初始化为1n5条件不成立不执行 if 语句nni则n2i则i2返回f(2)继续执行结果为n4i3再次执行结果为n7i4此时75返回n结果为7。 4.第四题
如下函数是求两个int数字最大公约数的指出其中存在的问题
int gcd(char x,char y)
{int min x y ? x : y;for (min 0; min 0; min--){if (x % min 0 y % min 0){return min;}}
}
解题思路 问题一形参的类型不对我们要求的是 int 型的最大公约数而形参是用 char 类型接收的这样数据会截断会使程序出现问题。 问题二min 的初始化不正确当 min 初始化为0min0为假循环一次也不会执行。正确的值应该是上面条件操作符计算得到的结果。 问题三对赋值和等于的混淆 在数学中表达的意思是等于而在我们编程学习中 是赋值而 才是等于的意思。当我们记不清时将数字写在左边表达式写在右边例如0x % min这样在写错时编译器会报错。 二、编程题
1.第一题 解题思路 我们先通过一次遍历找到数组中最大的数并且记录下最大数的下标然后再进行一次循环通过 maxnums[i]*2 判断如果数组中其他数的二倍大于最大的数就返回-1如果最大数都大于其他数的二倍就返回最大数的下标这里要注意不能与自身比较所以要用 i!index 去掉最大数。 int dominantIndex(int* nums, int numsSize)
{int max0;int index0;for(int i0;inumsSize;i){if(nums[i]max){maxnums[i];indexi;}}for(int i0;inumsSize;i){if(maxnums[i]*2i!index){return -1;}}return index;
} 2.第二题 解题思路 这道题考察我们对异或操作符的理解异或对应的二进制位相同为0 不同则为1。 两个相同的数异或得到的结果为0。0与一个数异或结果仍为这个数。 基于这两个特点这道题对数组中的所有数据进行逐一异或就可以解决得到奇数次的数字因为偶数次的数字都被异或成为0了最后单独保留了奇数次的数字。 #include stdio.h
int main()
{int n;while(scanf(%d, n)!EOF){int num 0, tmp 0;for (int i 0; i n; i) {scanf(%d, tmp);num ^ tmp;}printf(%d\n, num);} return 0;
}本次的内容到这里就结束啦。希望大家阅读完可以有所收获同时也感谢各位读者三连支持。文章有问题可以在评论区留言博主一定认真认真修改以后写出更好的文章。你们的支持就是博主最大的动力。