网站建设验收,wordpress系统很卡,263企业邮箱网页登录入口,网站系统类型目录
一、选择题
二、编程题 #x1f388;个人主页#xff1a;库库的里昂 #x1f390;CSDN新晋作者 #x1f389;欢迎 #x1f44d;点赞✍评论⭐收藏✨收录专栏#xff1a;C语言每日一练✨其他专栏#xff1a;代码小游戏C语言初阶#x1f91d;希望作者的文章能对你有…目录
一、选择题
二、编程题 个人主页库库的里昂 CSDN新晋作者 欢迎 点赞✍评论⭐收藏✨收录专栏C语言每日一练✨其他专栏代码小游戏C语言初阶希望作者的文章能对你有所帮助有不足的地方请在评论区留言指正大家一起学习交流 【前言】 在大家学完初阶C语言后有很多知识点是比较模糊的我们应该多刷题这样才能巩固我们所学知识。所以我开了一个新专栏C语言每日一刷每一篇都包含5道选择题2道编程题每一道题后面都会有详细的解析。这个系列每日一更大家来看看吧 一、选择题
1、已知函数的原型是 int fun(char b[10], int *a);设定义 char c[10];int d; 正确的调用语句是 A: fun(c,d); B: fun(c,d); C: fun(c,d); D: fun(c,d); 【答案】A
【解析】
函数的原型是: int fun(char b[10], inta);变量c,d的定义是: char c[1];int d; D函数第一个形参 char b[10]需要传入的是数组的首地址。数组char c[10] 的数组名 c 是数组的首元素地址可以传入 C。 函数第二个形参int a为引用类型作为形参d 是 整型变量可以直接传入因此传给 fun 函数的实参是 d。最终fun 函数调用的形式是 f(c,d)。因此选A。 补充: 如果函数原型为int fun(char b[10],int*a 即此时第二个形参为指针类型则需传入变量d的地址此处就应该选B 2、请问下列表达式哪些会被编译器禁止【多选】
int a 248, b 4;
int const *c 21;
const int *d a;
int *const e b;
int const * const f a; A: *c 32; B: *d 43 C: ea D: f0x321f 【答案】ABCD
【解析】 这里的考点为对const掌握的是否清楚 1.const如果在指针变量的“ * ”的左边即 const int * a 和 int const * a的意义是相同的作用是等价的 表达的意思是对指针变量a 解引用的值是保持不变的 只有a里面存放的地址改变了解引用出来的值才会变化 2. const如果在指针变量的“ * ”的右边【即 int * const a】 表达的意思是 a里面存放的地址是保持不变 只有主动对 *a 赋值才能改变这个值但a里面的地址是一直保持不 对于A和Bconst在“ * ”的左面则 const 就是用来修饰指针所指向的变量即指针指向为常量则此时的*c和*d不变 对于C和D如果 const 位于“ * ”的右侧则 const 就是修饰指针本身即指针本身是常量 则e和f的地址不能被改变 3、以下程序的输出结果为
#include stdio.h
int i;
void prt()
{for (i 5; i 8; i)printf(%c, *);printf(\t);
}
int main()
{for (i 5; i 8; i)prt(); return 0;
} A: *** B: *** *** *** *** C: *** *** D: * * * 【答案】A
【解析】
注意这里出现转义字符 \t ,而 \t 代表为水平制表符,简单来说就是在键盘上按了TAB的效果,也可以理解为缩进符
全局变量创建在静态区中,作用域为整个程序且生命周期与主函数相同,只有程序结束,它才会销毁 全局变量 i 在 main() 中修改为 5 第一次在 prt() 中执行循环输出三次 * i 被修改为 8 回到 main() 中第二次调用 prt() 时i8 为假循环结束没输出执行一次 print(\t) 再次回到主函数后 i 变为 9 i8 为假循环结束 ; 4、下面代码段的输出是
int main()
{int a3;printf(%d\n,(aa-a*a));return 0;
} A: -6 B:12 C:0 D:-12 【答案】D
【解析】 本题可以写成表达式aa-a*a中*的优先级最高其次是-的优先级最低因此先求a*a所以原表达式可写成aa-9再算a-9原表达式可写为aa-9-6最后算aa因为此时a-6所以aa-6(-6)-12故选择D选项。 拓展操作符优先级图表 5.下列不能实现死循环的是 A.while(1){} B.for(;1;){} C.do{}while(1); D.for(;0;){} 【答案】D
【解析】 只有条件为真时才进行循环 ABC 中 1 为真 D 中 0 为假故选D。 二、编程题
1.OJ链接 【牛客网题号 HJ97 记负均正】【难度简单】
首先输入要输入的整数个数 n 然后输入 n 个整数。输出为 n 个整数中负数的个数和所有正整数的平均值 结果保留一位小数。 注意 0 即不是正整数也不是负数不计入计算 本题有多组输入用例。 输入描述首先输入一个正整数 n 然后输入 n 个整数。 输出描述输出负数的个数和所有正整数的平均值。
#includestdio.h
int main() {int n 0;while (~scanf(%d , n)){int arr[2001] { 0 };int count1 0;int count2 0;int sum 0;float ave 0;int i 0;for (i 0; i n; i){scanf(%d , arr[i]);if (arr[i] 0){count1;}else if (arr[i] 0){count2;sum arr[i];}}printf(%d , count1);if (count2){ave sum / count2;printf(%.1lf\n, ave);}else{printf(0.0\n);}}return 0;
}
2.OJ链接 【牛客网题号JZ11 旋转数组的最小数字】【难度简单】
有一个长度为 n 的非降序数组比如[1,2,3,4,5]将它进行旋转即把一个数组最开始的若干个元素搬到数组的末尾变成一个旋转数组比如变成了[3,4,5,1,2]或者[4,5,1,2,3]这样的。请问给定这样一个旋转数组求数组中的最小值。
数据范围1≤ n ≤ 10000数组中任意元素的值: 0 ≤ val ≤ 10000 示例 输入[3,4,5,1,2] 返回值1 int minNumberInRotateArray(int* nums, int numsLen) {int left 0;int right numsLen - 1;while (left right){int mid (left right) / 2;if (nums[mid] nums[right])right mid;else if (nums[mid] nums[right])left mid 1;elseright--;}return nums[right];
}
好了今天的每日一刷就到这里结束了感谢大家的观看