最近,想复习一下 C 语言,所以笔者将会在掘金每天更新一篇关于 C 语言的文章! 各位初学 C 语言的大一新生,以及想要复习 C 语言/C++知识的不要错过哦! 夯实基础,慢下来就是快!
4.写一个函数判断是不是闰年
闰年:能被4整除&&不能被100整除 ||能被400整除
复制代码
摘自百度百科闰年是历法中的名词,分为普通闰年和世纪闰年。
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。闰年共有 366 天(1 月~12 月分别为 31 天、29 天、31 天、30 天、31 天、30 天、31 天、31 天、30 天、31 天、30 天、31 天)。
凡阳历中有闰日(2 月 29 日)的年份,闰余(岁余置闰。阴历每年与回归年相比所差的时日)。
注意闰年(公历中的名词)和闰月(农历中的名词)并没有直接的关联,公历只分闰年和平年,平年有 365 天,闰年有 366 天(2 月中多一天);平年中也可能有闰月(如 2017 年是平年,农历有闰月,闰六月)。
//方法1
int is_leap_year(int year)
{
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return 1;
}
else
return 0;
}
复制代码
//巨秀的写法
int is_leap_year(int year)
{
return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
}
复制代码
5.实现一个整形有序数组的二分查找
二分查找法的前提:数组是有序的每次可以缩减一遍的区间,是一个高效的算法!
//二分法
int BinarySearch(int* arr, int sz,int k)
{
int right = sz - 1; //右下标
int left = 0; //左下标
while (left <= right)
{
int mid = (right + left) >> 1; //中间值
//mid = (right + left)/2
if (arr[mid] > k)
{
right = mid - 1; //右下标 变成中间值-1位置
}
else if (arr[mid] < k)
{
left = mid + 1; //左下标 变成中间值+1位置
}
else
return mid;
}
return -1; //找不到
}
int main()
{
int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
int sz = sizeof(arr) / sizeof(arr[0]);
int k = 7; //要找的数字
int ret = BinarySearch(arr, sz,k);
if (ret != -1)
{
printf("找到了,下标为:%d\n", ret);
}
else
{
printf("找不到\n");
}
return 0;
}
复制代码
TDD:
TDD:在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行
返回参数为 void 型:
若函数返回类型为 void :则最后可以不写 return 或者写成 return;
6.每调用一次这个函数,num 的值就增加一次
写法 1:因为函数要改变参数的值,所以要传地址过去
void Add(int* p)
{
(*p)++;
//也可写成
// *p++ 后置++,先使用p再++ 相当于(*p)++
return;
}
int main()
{
int num = 0;
printf("num的值为:%d\n", num);
Add(&num);
printf("num的值为:%d\n", num);
Add(&num);
printf("num的值为:%d\n", num);
return 0;
}
复制代码
写法 2:传值-接收返回值
int Add(int n )
{
return n+1;
}
int main()
{
int num = 0;
printf("num的值为:%d\n", num); //0
num = Add(num);
printf("num的值为:%d\n", num); //1
num = Add(num);
printf("num的值为:%d\n", num); //2
return 0;
}
复制代码
3.函数的链式访问
链式访问:把一个函数的返回值作为另一个函数的参数
int main()
{
int len = strlen("abc");
printf("%d\n",len); //3
//链式访问
printf("%d\n",strlen("abc")); //3
char arr1[20] = "xxxxxx";
char arr2[20] = "abc";
printf("%s\n",strcpy(arr1,arr2)); //abc
printf("%d",printf("%d",printf("%d",43))); //4321
//printf返回的值为打印字符的个数
return 0;
}
复制代码
1.分块写文件
分块去写的好处:1.多人协作 2.封装和隐藏
2.如何导入静态库
导入静态库:#pragma comment(lib,”add.lib”)
此时静态库的名字为add.lib
复制代码
将 add.c 和 add.h 在 debug 文件中可以找到 add.lib 文件
3.防止头文件重复包含
//方法 1:#pragma once
//方法 2:#ifdef .h 文件的文件名 #define .h 文件的文件名最后结尾加上 #endif
#ifdef Add.h#define Add.h#endif
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!
评论