C语言:练习 Bertha 。 2023-10-14 11:41 58阅读 0赞 ## ![55a437787a0d4534b39a465dd4c8cb03.png][] ## ## 题一:模拟实现strlen ## strlen的模拟(递归实现) 递归和非递归分别实现strlen 非递归 #include <stdio.h> int my_strlen(char* arr) { int i = 0; int count = 0; while( *arr != '\0' ) { count++; arr++; } return count; } int main() { int n = 0; char arr[] = "ab111cdef"; n = my_strlen(arr); printf("%d\n", n); return 0; } 递归 #include <stdio.h> my_strlen(char* arr) { int count = 0; if (*arr == '\0') { return 0; } else { count++; count = count + my_strlen(++arr); } return count; } int main() { int n = 0; char arr[] = "ab111cdef"; n = my_strlen(arr); printf("%d\n", n); return 0; } ## 题二:求阶乘 ## 求阶乘 递归和非递归分别实现求n的阶乘(不考虑溢出的问题) 非递归 #include <stdio.h> int my_factorial(int n) { int i = 0; int sum = 1; for (i = 1; i <= n; i++) { sum *= i; } return sum; } int main() { int n = 0; int a = 0; scanf("%d", &n); a = my_factorial(n); printf("%d\n", a); return 0; } 递归实现 #include <stdio.h> int my_factorial(int n) { int sum = 0; if (n == 1) { return 1; } else { return sum = n * my_factorial( n-1 ); } } int main() { int n = 0; int a = 0; scanf("%d", &n); a = my_factorial(n); printf("%d\n", a); return 0; } ## 题三:递归打印 ## 打印一个数的每一位 递归方式实现打印一个整数的每一位 #include <stdio.h> void my_int(int n) { int one = 0; if ((one = n % 10) > 0) { my_int(n / 10); printf("%d ", one); } } int main() { int n = 0; scanf("%d", &n); my_int(n); return 0; } ## 题四:操作数组 ## 使用函数实现数组操作 创建一个整形数组,完成对数组的操作 实现函数init() 初始化数组为全0 实现print() 打印数组的每个元素 实现reverse() 函数完成数组元素的逆置。 要求:自己设计以上函数的参数,返回值。 #include <stdio.h> void init(int* arr, int sz) { int i = 0; for (i = 0; i <sz ;i++) *(arr + i) = 0; } void print(int* arr,int sz) { int i = 0; for (i = 0; i < sz+1; i++) { printf("%d ", arr[i]); } printf("\n"); } void reverse(int* arr, int sz) { int tmp = 0; int i = 0; for (i = 0; i <= (sz / 2); i++) { tmp = (arr[i]); (arr[i]) = (arr[sz]); (arr[sz]) = tmp; sz--; } } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,0 }; int sz = 0; sz = sizeof(arr) / sizeof(arr[0]) - 1; reverse(&arr, sz); print(&arr,sz); init(&arr,sz); print(&arr, sz); return 0; } ## 题五:冒泡排序 ## 冒泡排序 实现一个对整形数组的冒泡排序 #include <stdio.h> int main() { int arr[] = {3,4,6,8,1,2,5,7,9,0}; int sz = 0; sz = sizeof(arr) / sizeof(arr[0]) - 1; int i = 0; int j = 0; for (j = 0;j <sz;j++ ) { for (i = 0; i < sz-j; i++) { // int isChange = 0;优化路线 int tmp = 0; if (arr[i] >= arr[i + 1]) { tmp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = tmp; // isChange = 1; } } //if(!isChange) // return;如果后面没有交换说明已经排好了,直接退出,(需要输出就用break)。 } for (i = 0; i < 10; i++) { printf("%d ",arr[i]); } return 0; } ## 题六:交换数组 ## 【一维数组】交换数组 将数组A中的内容和数组B中的内容进行交换。(数组一样大) #include <stdio.h> int main() { char arr1[20] = "abcde"; char arr2[20] = "zxcvb"; int tmp = 0; int right = sizeof(arr1)/sizeof(arr1[0] - 1); int len = 0; int i = 0; for (i = 0; i < right; i++) { tmp = arr1[i]; arr1[i] = arr2[i]; arr2[i] = tmp; } printf("%s\n", arr1); printf("%s\n", arr2); return 0; } [55a437787a0d4534b39a465dd4c8cb03.png]: https://img-blog.csdnimg.cn/55a437787a0d4534b39a465dd4c8cb03.png
相关 C 语言练习分享 c语言的一些小练习,可以多思考,多看看 1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100 define _CR... 心已赠人/ 2024年04月17日 11:39/ 0 赞/ 73 阅读
相关 C语言:练习 ![c7267eaea5be4f8f8138b648012a94e0.png][]题一:宏实现计算偏移量 写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明 偏执的太偏执、/ 2023年10月14日 14:53/ 0 赞/ 51 阅读
相关 C语言:练习 ![6a7277307c8d403ebdea1fd7a5e848ec.png][]题一:单身狗 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个 悠悠/ 2023年10月14日 14:26/ 0 赞/ 48 阅读
相关 C语言:练习 ![378ecc7435ca463da653f7b4f53ad19c.png][] 题一:喝汽水 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少 缺乏、安全感/ 2023年10月14日 13:26/ 0 赞/ 56 阅读
相关 C语言:练习 ![f30c5ddd8ede4b9a887c5013e44f674f.png][] 题一:直接交换 交换两个变量(不创建临时变量) 不允许创建临时变量,交换两 梦里梦外;/ 2023年10月14日 12:59/ 0 赞/ 58 阅读
相关 C语言:练习 ![55a437787a0d4534b39a465dd4c8cb03.png][] 题一:模拟实现strlen strlen的模拟(递归实现) 递归和非递归分别 Bertha 。/ 2023年10月14日 11:41/ 0 赞/ 59 阅读
相关 C语言:练习 ![e731ca8449d34635908e5e3c8203deac.png][] 题一:九九乘法表 在屏幕上输出9\9乘法口诀表 %-d(加负号),在后面补空格 àì夳堔傛蜴生んèń/ 2023年10月14日 11:09/ 0 赞/ 60 阅读
相关 C语言:练习 ![0843c259fb2b4bfe861deadd6b7719de.png][] 目录 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 桃扇骨/ 2023年10月14日 10:56/ 0 赞/ 55 阅读
相关 顺序栈 C语言练习 include <stdio.h> define bool char define true 1 define false 0 忘是亡心i/ 2022年12月03日 05:16/ 0 赞/ 171 阅读
相关 C语言小练习 C语言小练习 最近朋友问了几道关于C语言的题目,所幸花了一个晚上写了以下,问题如下: 1.一只老鼠咬坏了账本,公式中\[\]代表被老鼠咬掉的地方。要想恢复下面的等式, 蔚落/ 2021年12月22日 12:19/ 0 赞/ 445 阅读
还没有评论,来说两句吧...