- 函数必须先声明后使用(函数定义也是一种特殊的声明)
- 编程题目1 (注意逆序不是逆序打印) 当用strlen计算字符数组长度是时候可以在函数内使用,当用sizeof计算数组长度时候要在函数外使用。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> int length(char arr[]) { return strlen(arr); } int main() { char arr[] = "abcdefgh"; int len = length(arr); printf("%d", len);//8 return 0; } ------------------------------------------------------------------------------------------- #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> int length(char arr[]) { return sizeof(arr);//arr相当于首元素地址,sizeof(arr)计算地址大小 } int main() { char arr[] = "abcdefgh"; int len = length(arr); printf("%d", len);//4 return 0; } ------------------------------------------------------------------------------------------- #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int length(int arr[]) { return sizeof(arr); } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int len = length(arr); printf("%d", len);//4 return 0; } ----------------------------------------------------------------------------------------- #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int length(int* arr) { return sizeof(arr); } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int len = length(arr); printf("%d", len);//4 return 0; }
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> void reverse(char arr[], int len) {//非递归实现1 int left = 0; int right = len - 1; char tmp = '0'; while (left<right) { tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; left++; right--; } } int main() { char arr[] = "abcdefg"; int len = strlen(arr); reverse(arr,len); printf("%s", arr); return 0; } ------------------------------------------------------------------------------------------- #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int my_strlen(char* arr) { //if (*arr == '\0') { // return 0; //} //else { // return 1 + my_strlen(arr + 1); //} int count = 0; while (*arr!='\0') { count++; arr++; } return count; } void reverse(char arr[], int len) { int left = 0; int right = len - 1; char tmp = '0'; while (left<right) { tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; left++; right--; } } int main() { char arr[] = "abcdefg"; int len = my_strlen(arr); printf("%d\n", len); reverse(arr, len); printf("%s\n", arr); return 0; }
- 编程题目2
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int digitsum(int num) { if (num < 10) { return num; } else { return (num % 10) + digitsum(num / 10); } } int main() { size_t num = 0; scanf("%u", &num); int ret = digitsum(num); printf("%d", ret); return 0; }
- 编程题目3
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> double pow(int n, int k) { if (k == 0) { return 1; } else if (k>=1) { return n * pow(n, k - 1); } else { return 1.0 / pow(n, - k); } } int main() { int n = 0; int k = 0; scanf("%d %d", &n, &k); double ret = pow(n, k); printf("%.3lf\n", ret); return 0; }
- 数组下标最大为长度减一
- 数组内部的逗号表达式(3,4)是逗号表达式
- 数组长度和字符串长度不一样,数组长度是数组内元素个数,字符串长度是‘\0’之前的元素个数。
- 数组地址由低到高。
- 编程题目4
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> void init(int arr[]) { for (size_t i = 0; i < 10; i++) { arr[i] = i; } } void print(int arr[]) { for (size_t i = 0; i < 10; i++) { printf("%d\n", arr[i]); } } void reverse(int arr[]) { int left = 0; int right = 9; int tmp = 0; while (left<right) { tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; left++; right--; } } int main() { int arr[10] = { 0 }; init(arr); print(arr); reverse(arr); print(arr); return 0; }
- %1d的使用说明
- 将数组中的内容进行交换。(数组一样大)
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int arr1[] = { 12, 45, 78, 99 }; int arr2[] = { 1,2,3,4 }; int tmp = 0; int len = sizeof(arr1) / sizeof(arr1[0]); for (size_t i = 0; i < len; i++) { tmp = arr1[i]; arr1[i] = arr2[i]; arr2[i] = tmp; } return 0; }
作业(递归)
于 2023-04-23 18:00:05 首次发布