解题思路:
定义两个字符数组,在第一个输入的数组中判断字符串中是否有元音字母,如果有则输入第二个数组。
然后由第二个数组执行元音字母的排序。
最后调用输出即可。
注意事项:
注意多语句别漏了花括号
参考代码:
#include <stdio.h> #include <string.h> int yuanyin(char a[],char b[]) { int i,j=0,k,l; char x; l=strlen(a); for(i=0;i<l;i++) { if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') { b[j]=a[i]; j++; } } b[j]='\0'; k=strlen(b); for(i=0;i<k;i++) { for(j=i;j<k;j++) { if(b[i]>b[j]) { x=b[j];b[j]=b[i];b[i]=x; } } } return 0; } int main() { char a[100],b[100]; gets(a); yuanyin(a,b); puts(b); return 0; }
0.0分
77 人评分
#include<iostream> #include<cstring> using namespace std; int main(){ char a[100],b[100]; cin>>a; int j=0; for(int i=0;i<=99;i++){ if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'){ b[j]=a[i]; j++; } } cout<<b; } 大佬看看我这个哪里有问题
int yuanyin(char ch[], char sh[]) { int i = 0, j = 0, l = 0, len = 0; char t = 0; l = strlen(ch); for (i = 0;i < l;i++) { // 元音条件的判断 if (ch[i] == 'a' || ch[i] == 'e' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'u') { sh[j++] = ch[i]; // ---> sh[j]=ch[i],j++; // 将数组ch中符合条件的元素存到sh数组中 } } sh[j] = '\0'; // puts输出字符遇到 \0 才会停止,因此将 \0 赋值给sh数组最后一个元素,便于停止输出 len = strlen(sh); // 求出sh数组长度 for (i = 0;i < len;i++) { // 对存入数组sh的元素排序 for (j = 0;j < len - 1 - i;j++) { if (sh[j] > sh[j + 1]) { t = sh[j]; sh[j] = sh[j + 1]; sh[j + 1] = t; } } } return 0; } int main() {
循环嵌套第二个for语句不是都让j=i了,那怎么还会有b[j] > b[i]
龙炜 2023-12-11 19:49:03 |
int yuanyin(char ch[], char sh[]) { int i = 0, j = 0, l = 0, len = 0; char t = 0; l = strlen(ch); for (i = 0;i < l;i++) { // 元音条件的判断 if (ch[i] == 'a' || ch[i] == 'e' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'u') { sh[j++] = ch[i]; // ---> sh[j]=ch[i],j++; // 将数组ch中符合条件的元素存到sh数组中 } } sh[j] = ' '; // puts输出字符遇到 才会停止,因此将 赋值给sh数组最后一个元素,便于停止输出 len = strlen(sh); // 求出sh数组长度 for (i = 0;i < len;i++) { // 对存入数组sh的元素排序 for (j = 0;j < len - 1 - i;j++) { if (sh[j] > sh[j + 1]) { t = sh[j]; sh[j] = sh[j + 1]; sh[j + 1] = t; } } } return 0; } int main() { char ch[100] = { 0 }, sh[100] = { 0 }; gets(ch); yuanyin(ch, sh); puts(sh); 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; } 大看不出来哪错了。
小辣鸡 2023-12-02 11:11:22 |
指点一下迷津吧
生生 2024-01-18 22:19:45 |
main函数里面的n是干啥的 你只输入了m啊
你已被管理员移出群聊 2024-01-20 21:22:46 |
if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') a[i]=b[i];数组a是输入的字符,数组b是空数组,你顺序搞反了吧,应该把数组a的值赋给数组b啊,这里错了,后面排序跟着也就错了if(a[i]>a[j]) { x=a[j];a[i]=a[j];x=a[i]; }
我这有问题吗? #include <stdio.h> int main() { char a[100]; char b[100]; char c[]={'a','i','e','o','u'}; // puts(c); int i,j,g,s=0; // gets(a); for(i=0;;i++){ char q; scanf("%c",&q); if(q!='\n'){ a[i]=q; } else{ break; } } // puts(a); for(j=0;j<i;j++){ //printf("a[%d]=%c",j,a[j]); for(g=0;g<5;g++){ //printf(" c[%d]=%c\n",g,c[g]); if(a[j]==c[g]){ b[s]=a[j]; // printf("b[%d]=%c\n",s,b[s]); s++; } } } puts(b); return 0; }