- 题目: 请编写一个C函数,该函数将一个字符串逆序
#include <stdio.h> #include <string.h> #include <stdlib.h> //在子函数中设置数组存放形参的内容,由于子函数中是 数组是局部变量,所以局部变量无法通过函数返回值返回, 需要定义静态变量,用指针函数返回地址 char *nixu(char *str) { int n, i, j = 0; n = strlen(str); static char a[100] = {0}; for(i = 0; i < n; i++) { a[j++] = str[n-1-i]; } a[j] = '\0'; return a; } int main() { char *ptr; ptr = (char *)malloc(sizeof(char) * 64); scanf("%s",ptr); printf("%s", nixu(ptr)); return 0; }
方法二:
#include <stdio.h> #include <stdlib.h> #include <string.h> void nixu(char *str) { int n, i; char tmp; n = strlen(str); for(i = 0; i < n / 2; i++) { tmp = str[i]; str[i] = str[n - i - 1]; str[n - i - 1] = tmp; } } int main() { char *ptr; ptr = (char *)malloc(sizeof(char) * 64); scanf("%s",ptr); nixu(ptr); printf("%s\n", ptr); return 0; }
- 题目: 输入一个字符串,计算字符串中子串出现的次字数
#include <stdio.h> #include <string.h> #include <stdlib.h> int zichuan(char *str, char *ptr) { int i, m, n, count = 0; n = strlen(str); m = strlen(ptr); for(i = 0; i < n + 1 - m; i++) { if(strncmp(str + i,ptr,m) == 0) { count++; } if(i == n - m) { break; } } return count; } int main() { char *str = (char *)malloc(sizeof(char) * 64); char *ptr = (char *)malloc(sizeof(char) * 64); scanf("%s%s",str, ptr); printf("%d",zichuan(str, ptr)); return 0; }