网站icon怎么设置,app制作,wordpress局部内容,wordpress 侧边悬浮框#x1f4d9;作者简介#xff1a; 清水加冰#xff0c;目前大二在读#xff0c;正在学习C/C、Python、操作系统、数据库等。 #x1f4d8;相关专栏#xff1a;C语言初阶、C语言进阶、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 #x1f44d; 收藏 ⭐留言 作者简介 清水加冰目前大二在读正在学习C/C、Python、操作系统、数据库等。 相关专栏C语言初阶、C语言进阶、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 收藏 ⭐留言 如有错误还望各路大佬指正 ✨每一次努力都是一种收获每一次坚持都是一种成长✨ 目录 前言
1. 选择题 题目1
题目2
题目3 题目4
题目5
2. 编程题
题目一 题目二
总结 前言 前边我们学习了C语言相关的知识然而并没有进行系统的练习接下来我将开启一个新的专栏C语言刷题训练营以便于大家巩固所学的知识。 1. 选择题 题目1
1、执行下面程序正确的输出是
int x5,y7;
void swap()
{
int z;
zx;
xy;
yz;
}
int main()
{
int x3,y8;
swap();
printf(%d,%d\nx, y);
return 0;
} A: 5,7 B: 7,5 C: 3,8 D: 8,3
✨题目解析 这道题目考察的是函数相关的知识 swap函数调用时用的是全局变量主函数中定义的变量只在主函数中有效因为主函数也是一个函数它与其他函数是平行关系输出语句这里考虑局部优先的原则 正确答案C 题目2
2、以下不正确的定义语句是
A: double x[5] {2.0, 4.0, 6.0, 8.0, 10.0};
B: char c2[] {\x10, \xa, \8};
C: char c1[] {1,2,3,4,5};
D: int y[53]{0, 1, 3, 5, 7, 9};
✨题目解析 本题B选项考查转义字符有如下格式 八进制数字是0-7没有8故B选项中\8是错误的\ddd ddd表示1到3个八进制数 如\130 转义为 字符X\xhh hh表示1到2位十六进制数 如\x30 转义为 字符0 正确答案B 题目3
3、 test.c 文件中包括如下语句文件中定义的四个变量中是指针类型的变量为【多选】
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;
A: a B: b C: c D: d
✨题目解析 这道题目考察的是C语言中的类型别名和typedef关键字的使用。 #define是宏定义仅仅是直接替换,INT_PTR a, b; 进行宏替换后代码是这样的int *a, b;这里的int *是a的类型b的类型是int故此次b只是int类型。typedef是把该类型定义一个别名别名是一个独立的类型了使用这个类型创建的变 量都是这个类型的。 因此acd才是指针类型。正确答案ACD 题目4 4、 若给定条件表达式 (M)?(a):(a--) 则其中表达式 M
A: 和(M0)等价
B: 和(M1)等价
C: 和(M!0)等价
D: 和(M!1)等价
✨题目解析 这道题目考察的是对运算符的理解 给定条件表达式(M)?(a):(a--)。 (表达式1)? (表达式2): (表达式3)为三目运算符。 计算规则为 先判断表达式1是否为真若为真则计算表达式2并将表达式2的结果作为整个表达式最终的结果表达式3不计算否则表达式3的结果为最终结果表达式2不计算。 分析 在此表达式中若M0为假计算a--; 若M≠0为真计算a; 若要求与M等价则要满足M取0时为假取非0数值时为真。 c选项中假定M取0则M表示假当M是0时,表达式M!0不成立为假计算a--; 当M取非0数值时M为真表达式M!0成立为真计算a; 符合题意 正确答案C 题目5
5、有如下定义语句则正确的输入语句是【多选】
int b;
char c[10];
A: scanf(%d%s,b,c);
B: scanf(%d%s,b,c);
C: scanf(%d%s,b,c);
D: scanf(%d%s,b,c); ✨题目解析 c和c两个地址值是一样的程序的效果相同也没错但同时也必须把变量b的地址给scanf,故CD错误 正确答案AB 2. 编程题
题目一
题目描述 题目链接
打印从1到最大的n位数https://www.nowcoder.com/practice/4436c93e568c48f6b28ff436173b997f?tpId13tqId2273153ru/ta/coding-interviewsqru/ta/coding-interviews/question-ranking题目接口描述
/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param n int整型 最大位数* return int整型一维数组* return int* returnSize 返回数组行数*/
int* printNumbers(int n, int* returnSize ) {} ✨题目解析 首先这道题目它是一道接口型题目我们要先明白它的各个参数的含义n就是输出的最大位数而returnSize就是需要返回的数字个数 这里首先要清楚n位数中最大的数字实际上就是 10^n - 1 。 比如 1位数 10的1次方- 12位数 10的2次方- 13位数 10的3次方- 1 这个规律清楚后动态申请空间将数值填入就可以了需要注意的是数组下标从0开始而数值从1开始。 nt* printNumbers(int n, int* returnSize ) {*returnSizepow(10,n)-1;int k*returnSize1;int* ret(int*)malloc(sizeof(int)**returnSize);for(int i1;ik;i){ret[i-1]i;}return ret;
} 题目二
题目描述 题目链接
计算日期到天数转换https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded?tpId37tqId21296rp1ru/ta/huaweiqru/ta/huawei/question-ranking✨题目解析 解题思路 这道题简单解法其实将每个月的天数枚举出来然后根据当前月份向前累加满月的天数然后再加上当前月所在的天数。最终考虑平闰年的 2 月份区别是否增加一天。 其中需要注意的是平年和闰年的判断而且是闰年的月份大于 2 的时候也就是 2 月走完总天数才能加 1 比如 2000年2月18日 虽然是闰年但是 2月 都没走完那是不能加上闰年多出的一天的 代码如下 #include stdio.h
int isleapyear(int year) {if (year % 4 0 year % 100 ! 0 || year % 400 0){return 1;} return 0;
}
int main()
{int monthday[] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int year, month, day;while (~scanf(%d %d %d, year, month, day)){int days day;if (isleapyear(year) month 2) { days 1;}for (int i month - 1; i 0; i--) {days monthday[i];}printf(%d\n, days);}
return 0;
} 总结 好了以上便是本期C语言刷题的全部内容希望可以对你有所帮助。最后感谢阅读