没有做网站地图影响大吗吗,珠海百度seo,wordpress图片验证码插件,湖南seo优化首选#x1f31e; “人生是用来体验的#xff0c;不是用来绎示完美的#xff0c;接受迟钝和平庸#xff0c;允许出错#xff0c;允许自己偶尔断电#xff0c;带着遗憾#xff0c;拼命绽放#xff0c;这是与自己达成和解的唯一办法。放下焦虑#xff0c;和不完美的自己和解… “人生是用来体验的不是用来绎示完美的接受迟钝和平庸允许出错允许自己偶尔断电带着遗憾拼命绽放这是与自己达成和解的唯一办法。放下焦虑和不完美的自己和解然后去爱那个完整的自己” 前面关于C语言的基础知识都学的差不多但是想要好好掌握这门语言还是要勤加练习从现在到开学每天会更新一个小练笔大家可以一起来做一下❗ Day01 一.选择题二.编程题 一.选择题
1.执行下面程序正确的输出是
#include stdio.h
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\n, x, y);return 0;
}A: 5,7 B: 7,5 C: 3,8 D: 8,3 答案C 答题思路swap函数调用的是全局变量int x 3, y 8;属于局部变量只在主函数内生效。而主函数内的printf函数考虑局部优先的原则会输出3,8。 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选项就用到了转义字符的知识详细的也可以去看我另外一篇博客链接: 转义字符 ✅ 这里我们就知道\ddd中ddd表示1~3个八进制的数字。如\130 X 八进制数是由0~7组成题目中B选项就错在了\8中出现了8. 而\ xdd中dd表示2个十六进制的数字。如\x30 0 十六进制的数是由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15. 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 答案ACD 答题思路本题主要需要弄清楚define和typedef。#define是一种宏一般会用在预处理阶段在预处理阶段define只会替换不会做任何的算计逻辑等处理。而typedef是关键字在编译时处理有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名但不能在一个函数定义里面使用typedef。用typedef定义数组、指针、结构等类型会带来很大的方便不仅使程序书写简单也使意义明确增强可读性。 那么在上述代码中INT_PTR a, b;在预处理阶段就会转化成int*a,b;这里int *是a的类型而b的类型是int.而typedef是起了一个别名别名是一个独立的类型使用这个类型创建的变量都是这个类型因此c和d都是int*. 我们也可以通过调试来验证一下 4.若给定条件表达式 (M)?(a):(a–) 则其中表达式 M A: 和(M0)等价 B: 和(M 1)等价C: 和(M!0)等价 D: 和(M!1)等价 答案B 答题思路本题考察的主要是三目运算符表达式1?表达式2:表达式3 ✅唯一 一个三目操作符。 表达式1为真表达式2的结果为整个表达式的结果表达式3不算. 表达式1为假表达式3的结果为整个表达式的结果表达式2不算。 关于操作符的详细知识点可以跳转见博客操作符上 操作符下本题只要知道了操作符的相关知识就不难解出 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想要取它的地址必须是b. 二.编程题
1.输入数字 n按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3则打印出 1、2、3 一直到最大的 3 位数 999。
用返回一个整数列表来代替打印n 为正整数0 n 5
OJ链接【牛客网题号 JZ17 打印从1到最大的n位数】【难度入门】 答题思路从题目中我们知道n的取值范围是正整数1~5当n为1应当输出[1,2,3,4,5,6,7,8,9] 当n为2时应当输出[1,2,3...99],当n为3应当输出[1,2,3...999] 当n为4时应当输出[1,2,3...9999]当n为5时应当输出[1,2,3...99999]我们发现最大的那位数都可以用10^n^-1来表示那么打印的过程我们可以用for循环来实现。 int* printNumbers(int n, int* returnSize)
{*returnSize pow(10, n) - 1;int* ret (int*)malloc(sizeof(int) * (*returnSize));//申请足够大的空间//malloc函数是用于动态内存分配的int i 0;for (i 0; i *returnSize; i){*(ret i) i 1;//下标从0开始数值从1开始}return ret;
} malloc是动态内存分配函数用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址。如果分配成功则返回指向被分配内存的指针否则返回空指针NULL。 ✅注意malloc函数的返回的是无类型指针在使用时一定要强制转换为所需要的类型。❗ 在使用malloc开辟空间时使用完成一定要释放空间如果不释放会造内存泄漏。 在使用malloc函数开辟的空间中不要进行指针的移动因为一旦移动之后可能出现申请的空间和释放空间大小的不匹配。 具体使用方法指针自身 (指针类型*mallocsizeof指针类型*数据数量 2.根据输入的日期计算是这一年的第几天。输入保证年份为4位数且日期合法。 输入描述输入一行每行空格分割分别是年月日。 输出描述输出是这一年的第几天 OJ链接【牛客网题号 HJ73 计算日期到天数转换】【难度简单】 答题思路拿到这个题目我们首先想到的是我们需要判断这一年是否为闰年闰年的二月有29天而其他普通年份二月只有28天。那么如果月份大于2总天数就要进行1的操作。 #define _CRT_SECURE_NO_WARNINGS 1
#include stdio.h
int main()
{int year 0, month 0, day 0;scanf(%d%d%d, year, month, day);int month_day[12] { 31,59,90,120,151,181,212,243,273,304,334,365 };//建立一个整型数组表示普通年份前month个月数的天数和int days 0;if (month 2){days month_day[month - 2] day;}elsedays day;if (month 2){if (year % 4 0 year % 100 ! 0 || year % 400 0)//如果是闰年天数1{days;}}printf(%d\n, days);return 0;
}好啦第一天的练习到这里就结束啦后期会继续更新C语言的小练笔欢迎大家持续关注、点赞和评论❤️❤️❤️