解题思路:
在函数内部,定义了一个整型变量`i`并初始化为0。`i`将用于记录在`ch2`数组中插入的位置。
接下来是一个`while`循环,循环条件是`*ch1`指向的字符不是空字符`\0`。在循环体内,使用`switch`语句检查当前字符`*ch1`是否是元音字母。
如果`*ch1`是元音字母(即'a'、'e'、'i'、'o'、'u'中的一个),则将该字符存储到`ch2`数组的当前位置`*(ch2+i)`,然后`i`自增1,表示下一个元音字母要插入到`ch2`数组的下一个位置。
接着,将指针`ch1`向后移动一位,指向下一个字符。
循环结束后,插入结束符号`\0`到`ch2`数组的当前位置`*(ch2+i)`,表示字符数组的结束。
注意事项:
参考代码:
#include <stdio.h> // 包含标准输入输出库的头文件 #include <string.h> // 包含字符串处理函数库的头文件 // 函数声明:从输入字符串 ch1 中筛选出元音字母,并存储在 ch2 中 void refine(char *ch1, char *ch2) { int i = 0; // 初始化索引 i // 遍历字符串 ch1,直到遇到字符串结束符 '\0' while (*ch1 != '\0') { // 使用 switch 语句检查当前字符是否是元音字母 switch (*ch1) { case 'a': case 'e': case 'i': case 'o': case 'u': *(ch2 + i) = *ch1; // 如果是元音字母,则将其存储在 ch2 中 i++; // 增加索引 i,准备存储下一个元音字母 break; // 跳出 switch 语句 } ch1++; // 移动指针 ch1 到下一个字符 } *(ch2 + i) = '\0'; // 在 ch2 的末尾添加字符串结束符 return; // 函数返回 } int main() { char ch1[100]; // 声明一个字符数组 ch1,用于存储输入的字符串 char ch2[100]; // 声明一个字符数组 ch2,用于存储筛选后的元音字母 scanf("%s", &ch1); // 从标准输入读取一个字符串并存储在 ch1 中 refine(ch1, ch2); // 调用 refine 函数,将筛选后的结果存储在 ch2 中 printf("%s", ch2); // 打印 ch2 中的结果 return 0; // 返回程序的退出状态码,表示成功运行 }
0.0分
15 人评分
#include <stdio.h> int main() { char arr[100]; char brr[100]; scanf("%s", arr, sizeof(arr)); int len = strlen(arr); int j = 0; for (int i = 0; i < len; i++) { if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') { brr[j] = arr[i]; j++; } } int t = j; for (int i = 1; i < t; i++) { for (int k = 0; k <= t - 2; k++) { if (brr[k] > brr[k + 1]) { int temp = brr[k]; brr[k] = brr[k + 1]; brr[k + 1] = temp; } } } for (int i = 0; i < t; i++) { printf("%c", brr[i]); } return 0; }
include<string.h> void FlashBack(char arr1[],char arr2[]) { int i,j,k; int num1=strlen(arr1); char arr3[100]; for(i=0;i<num1;i++) { for(j=0;j<5;j++) { if(arr1[i]==arr2[j]) { arr3[i]=arr1[i]; printf("%c",arr3[i]); } } } } int main() { char arr1[100],arr2[5]={'a','e','i','o','u'}; fgets(arr1, sizeof arr1, stdin); FlashBack(arr1,arr2); return 0; }
char* haha(const char arr[],int a) { char* b; int k = 0; int i, j; char arr2[5] = {'a','e','i','o','u'}; static char arr3[100]; for (i= 0; i < 5;i++) { for (j = 0;j < a ; j++) { if (arr[j] == arr2[i]) { arr3[k] = arr[j]; k++; } } } b = &arr3; return b; } int main() { char* b; int a, i; char arr1[100]; scanf("%s,",&arr1); a = strlen(arr1); b = haha(arr1,a); for (i = 0; i < a; i++) { printf("%c",b[i]); } return 0; } 来个大佬看看,答案试了很多次都是对的,但是交上去说答案不对
#include <stdio.h> #include <string.h> int f(char a[],char b[]) { int i,j; char x; scanf("%s",a); int len=strlen(a); for(i=0;i<len;i++) { if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') a[i]=b[i]; } int len1=strlen(b); for(i=0;i<len1;i++) { for(j=i;j<len1;j++) { if(a[i]>a[j]) { x=a[j];a[i]=a[j];x=a[i]; } } } return 0; } int main() { char m[100],n[100]; scanf("%s",m); f(m,n); printf("%s",n); return 0; } 大佬,我这个哪有问题,求指点。
为什么第一个函数的return后面没有0啊
fujiwara024 2023-12-04 16:32:26 |
返回值类型为void,也就是没有返回值,所以只写return就可以了。
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:781 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:546 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:680 |
简单的a+b (C语言代码)浏览:661 |
简单的a+b (C语言代码)浏览:625 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:520 |
C二级辅导-公约公倍 (C语言代码)浏览:536 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:725 |
1005答案错误为什么浏览:1988 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:547 |