
C语言课程学习
学习C语言的一些课程代码
kodakun
新手上路,一切为研究生准备
展开
-
实现C语言一些库函数
1、关于strlen//strlen()库函数的范围类型是size_t//size_t == unsigned intint main(){ //3-6=-3,但是在无符号整型下,取值范围为0-255,故3-6>0 if (strlen("abc") - strlen("abcdef") > 0) { printf("hehe\n"); } else { printf("haha\n"); } return 0;}2、实现strcpy()函数//此函数的转载 2021-01-21 19:18:58 · 99 阅读 · 0 评论 -
实现C语言判断一个字符串是否为另一个字符串的子串的库函数strstr()函数
今日我们实现C语言库函数strstr()的功能。我是跟着一个辅导机构的老师去敲写的代码。其中的注释是我本人写的,如果有什么错误,请在下面评论区给我说一下,本人菜鸟一个,现在连入门的级别都不够。感谢各位能给我指出错误。上述两张图片是我对这个库函数进行过程中的一个介绍。代码如下:char* my_strstr(const char* p1, const char* p2){ assert(p1 != NULL); assert(p2 != NULL); //判断指向所要判断的子串的指针是否为空转载 2021-01-21 19:12:34 · 2432 阅读 · 1 评论 -
计算器的实现
目前只有加减计算,后续的功能可以自己加载//练习:计算器实现1、int add(int x, int y){ int z = 0; z = x + y; return z;}int sub(int x, int y){ int z = 0; z = x - y; return z;}int mul(int x, int y){ int z = 0; z = x * y; return z;}int div(int x, int y){ int z = 0; z转载 2021-01-20 12:35:16 · 112 阅读 · 0 评论 -
冒泡排序(方法三:实现C语言qsort()函数,实现全类型的排序)
实现qsort函数这里只写了整型的比较,其它类型的比较参考第二篇,同样的代码。int cmp_int(const void* e1, const void* e2){ //比较两个整型值的 return *(int*)e1 - *(int*)e2;}//参数传入width,保证交换的时候需要交换的两个目标的每一字节都能交换//char* 占一字节,假如数据占四字节,不传入字节大小width则会产生错误void swap(char* buf1, char* buf2, int width)转载 2021-01-20 12:27:08 · 151 阅读 · 0 评论 -
冒泡排序(方法二:调用C语言qsort()函数,实现全类型的排序)
第二种:调用C语言的函数qsort()函数这样做的好处就是可以实现不同类型的排序。一些关于qsort()函数及一些参数的介绍://void qsort(void* base,//第一个参数:待排序数组的首元素地址// size_t num, //第二个参数:待排序数组的元素个数// size_t width,//第三个参数:待排序数组的每个元素的大小-单位是字节// //第四个参数:是函数指针,比较两个元素的所用函数的地址-这个函数使用转载 2021-01-20 12:21:39 · 514 阅读 · 0 评论 -
冒泡排序(方法一:用函数的思想,只能排序整型数组)
关于冒泡排序,有如下几种方法:第一种:只能排序整型这样去写使得代码的效率过低。每一趟都要求第一个数去跟期之后的数进行比较。void bubble_sort(int a[], int s){ //先确定冒泡排序的趟数 int i = 0; for (i = 0; i < s - 1; i++) { //每一趟的冒泡排序 //10个数,从第一个数与之后的数字进行比较,要走9趟 //之后剩下的9个数进行排序,要走8趟 //依次类推,j<s-1-i int j = 0转载 2021-01-20 12:19:29 · 370 阅读 · 0 评论 -
求一个整数存储在内存中的二进制中1的个数
对于一个整数,存储在计算机内存中的是补码。对于一个正数,其原码,反码,补码都是一样。对于一个负数,求其二进制原码后,取反加一得到补码,存储到内存之中。对于求一个整数存储在内存中二进制1的个数,有如下3个方法。第一种 逻辑左移int main(){ int num = 0; int count = 0; scanf("%d", &num); //统计num中的补码中有多少个1 //32bit //num & 1 == 1 //例如:3 // 00000转载 2021-01-20 11:56:37 · 233 阅读 · 0 评论 -
数组的学习
1、int main(){ int arr[] = { 1,2,3,4,5,6,7 }; //1、sizeof(数组名)-数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节 //2、&数组名,数组名代表整个数组,此项操作取出的是整个数组的地址 int sz = sizeof(arr) / sizeof(arr[0]); printf("%d\n", sz); printf("%d\n", sizeof(arr)); printf("%d\n", *arr)转载 2021-01-05 13:20:38 · 93 阅读 · 0 评论 -
分支与循环练习
自己试着玩呢//int main()//{// char str[20];// char *p = str;// scanf("%s", &p[2]);// printf("%s\n", str);// return 0;//}练习:1、//作业:猜数字游戏//1、电脑会生成一个随机数//2、猜随机数//void game()//{// //1、在此处生成一个随机数,是每时每刻都在变化的// int ret = 0;// int guess = 0;// re转载 2021-01-05 13:16:04 · 96 阅读 · 0 评论 -
分支与循环的学习
1、//编写代码,演示多个字符从两端移动,向中间汇聚//例:i love you//给一个数组##########//第一步输出:i#########u//第二步输出:i #######ou//第三步输出:i l#####you//依次类推,输出:i love you代码实现://int main()//{// char arr1[] = "i love you";// char arr2[] = "##########";// int left = 0;// int right转载 2021-01-05 13:13:31 · 97 阅读 · 0 评论 -
函数的学习
当实参传给形参的时候形参其实是实参的一份临时拷贝对形参的修改是不会改变实参的1、要求:交换a,b数据1、正确的方法:用取址的方式去找到a,b的地址,然后*pa,*pb进行解引用操作,将a,b内的数据进行调换void swap2(int *pa, int *pb){ int tmp = 0; tmp = *pa; *pa = *pb; *pb = tmp;}int main(){ int a = 10; int b = 20; printf("a=%d\tb=%d\n",转载 2021-01-05 13:10:42 · 120 阅读 · 1 评论 -
运用函数的方法实现二分查找法
二分查找要求: 键盘输入一个有序数组和你想要寻找的值,建立一个二分查找函数去找寻你所要寻找的值的所对应的下标代码: //本质上形参a是一个指针,接收并指向传过来的数组的第一个元素的地址 void judgement(int a[],int b,int sz){ int left = 0; int right = sz-1; while (left <= right) { int mid = (left + right) /原创 2021-01-05 13:07:08 · 376 阅读 · 1 评论 -
学习递归的历程
用递归的思想解决问题1.//键盘输入1234,按顺序打印出1 2 3 4//设置一个函数print(int n)//1、先打印print(123) 4//2、再打印print(12) 3 4//3、再打印print(1) 2 3 4//4、最后打印1 2 3 4void print(int n){ if (n > 9) { print(n / 10); } printf("%d ", n%10);}int main(){ unsigned int num = 0;转载 2021-01-05 13:04:48 · 85 阅读 · 1 评论