C语言:练习 Bertha 。 2023-10-14 11:41 42阅读 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语言:练习 ![f30c5ddd8ede4b9a887c5013e44f674f.png][] 题一:直接交换 交换两个变量(不创建临时变量) 不允许创建临时变量,交换两 梦里梦外;/ 2023年10月14日 12:59/ 0 赞/ 39 阅读
相关 C语言:练习 ![55a437787a0d4534b39a465dd4c8cb03.png][] 题一:模拟实现strlen strlen的模拟(递归实现) 递归和非递归分别 Bertha 。/ 2023年10月14日 11:41/ 0 赞/ 43 阅读
相关 C语言:练习 ![e731ca8449d34635908e5e3c8203deac.png][] 题一:九九乘法表 在屏幕上输出9\9乘法口诀表 %-d(加负号),在后面补空格 àì夳堔傛蜴生んèń/ 2023年10月14日 11:09/ 0 赞/ 43 阅读
相关 C语言:练习 ![0843c259fb2b4bfe861deadd6b7719de.png][] 目录 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 桃扇骨/ 2023年10月14日 10:56/ 0 赞/ 42 阅读
相关 C语言习题——练习3 include<stdio.h> //1.杨辉三角 //在屏幕上打印杨辉三角。 //1 //1 1 //1 向右看齐/ 2022年12月21日 03:17/ 0 赞/ 160 阅读
相关 C语言习题——练习2 每日练习,不做讲解 include <stdio.h> include <assert.h> if 0 //1.代码调试解释问题 一时失言乱红尘/ 2022年12月20日 08:36/ 0 赞/ 183 阅读
相关 C语言习题——练习1 操作符练习题 1.求两个数二进制中不同位的个数 1.1 思路 1.2 代码 2.打印整数二进制的奇数位和偶数位 2.1 た 入场券/ 2022年12月19日 14:29/ 0 赞/ 192 阅读
相关 顺序栈 C语言练习 include <stdio.h> define bool char define true 1 define false 0 忘是亡心i/ 2022年12月03日 05:16/ 0 赞/ 152 阅读
相关 C语言基础练习(1) 1.找出整型数字1-100之间的素数,并打印出来。 include <stdio.h> int main(void) { 太过爱你忘了你带给我的痛/ 2022年06月06日 05:16/ 0 赞/ 204 阅读
相关 C语言小练习 C语言小练习 最近朋友问了几道关于C语言的题目,所幸花了一个晚上写了以下,问题如下: 1.一只老鼠咬坏了账本,公式中\[\]代表被老鼠咬掉的地方。要想恢复下面的等式, 蔚落/ 2021年12月22日 12:19/ 0 赞/ 429 阅读
还没有评论,来说两句吧...