学做网站难吗,做网站建设一条龙全包,广州网站设计开发,课程设计模板#x1f525;个人主页#xff1a;草莓熊Lotso #x1f3ac;作者简介#xff1a;C研发方向学习者 #x1f4d6;个人专栏#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言#xff1a;生活是默默的坚持#xff0c;毅力是永久的… 个人主页草莓熊Lotso 作者简介C研发方向学习者 个人专栏 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言生活是默默的坚持毅力是永久的享受。 前言我们距离学习完C语言已经很久了在数据结构学完后博主准备通过这16天的强化训练和大家一起回顾C语言的知识每天都是五道选择和两道编程题希望大家能有所收获。 目录
选择题
编程题
1.打印从1到最大的n位数
2.计算日期到天数转换 选择题
1.执行下面程序正确的输出是
A: 5,7 B: 7,5 C: 3,8 D: 8,3
int x 5, y 7;
void swap()
{int z;z x;x y;y z;
}
int main()
{int x 3, y 8;swap();printf(%d,%d\nx, y);return 0;
} 答案解析 正确答案C swap函数调用时用的是全局变量主函数中定义的变量只在主函数中有效因为主函数也是一个函数它与其他函数是平行关系输出语句这里考虑局部优先的原则故选C 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 本题B选项考查转义字符有如下格式但八进制数字是0-7没有8故B选项中\8是错误的\ddd ddd表示1到3个八进制数 如\130 转义为 字符X \xhh hh表示1到2位十六进制数 如\x30 转义为 字符0 3.test.c 文件中包括如下语句文件中定义的四个变量中是指针类型的变量为【多选】
A: a B: b C: c D: d
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d; 答案解析 正确答案ACD 因为#define是宏定义仅仅是直接替换,INT_PTR a, b; 进行宏替换后代码是这样的int *a, b;这里的int *是a的类型b的类型是int故此次b只是int类型。而typedef是把该类型定义一个别名别名是一个独立的类型了使用这个类型创建的变量都是这个类型的。 所以 acd才是指针类型 4.若给定条件表达式 (M)?(a):(a--) 则其中表达式 M A: 和(M0)等价 B: 和(M1)等价 C: 和(M!0)等价 D: 和(M!1)等价 答案解析 正确答案C 给定条件表达式(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.有如下定义语句则正确的输入语句是【多选】
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); 答案解析 正确答案AB c和c两个地址值是一样的程序的效果相同也没错但同时也必须把变量b的地址给scanf,故CD错误AB正确 编程题
1.打印从1到最大的n位数 题目链接打印从1到最大的n位数_牛客题霸_牛客网 题目描述
题目样例 代码演示
/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param n int整型 最大位数* return int整型一维数组* return int* returnSize 返回数组行数*/
int* printNumbers(int n, int* returnSize ) {// write code here*returnSizepow(10,n)-1;int *arr(int*)malloc(*returnSize*sizeof(int));for(int i0;i*returnSize;i){arr[i]i1;}return arr;
} 题目解析 这里首先要清楚n位数中最大的数字实际上就是 10^n - 1这个清楚后动态申请空间将数值填入就可以了需要注意的是数组下标从0开始而数值从1开始 2.计算日期到天数转换 题目链接计算日期到天数转换_牛客题霸_牛客网 题目描述 题目样例 代码演示
#include stdio.hint main() {int y, m,d;scanf(%d%d%d,y,m,d);int day[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int days0;if((y%40y%100!0)||(y%4000)m2){day[2]1;}for(int i1;im;i){daysday[i];}daysd;printf(%d,days);return 0;
} 题目解析 这道题简单解法其实将每个月的天数枚举出来然后根据当前月份向前累加满月的天数然后再加上当前月所在的天数。最终考虑平闰年的 2 月份区别是否增加一天。 其中需要注意的是平年和闰年的判断而且是闰年的月份大于 2 的时候也就是 2 月走完总天数才能加1比如 2000年2月18日 虽然是闰年但是 2月 都没走完那是不能加上闰年多出的一天的. 往期回顾
《解锁 C 起源与核心命名空间用法 版本演进全知道》
《解锁 C 基础密码输入输出、缺省参数函数重载与引用的精髓》
结语本篇博客就到此结束了C 语言的精髓在于对细节的掌控和对底层的理解这需要持续实践。愿你带着这份训练中获得的思维与习惯在编程路上走得更稳、更远。如果文章对你有帮助的话欢迎评论点赞收藏加关注感谢大家的支持。