原题链接:[编程入门]自定义函数之字符提取
解题思路:
定义两个字符数组,在第一个输入的数组中判断字符串中是否有元音字母,如果有则输入第二个数组。
然后由第二个数组执行元音字母的排序。
最后调用输出即可。
注意事项:
注意多语句别漏了花括号
参考代码:
#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分
67 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#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; } 大佬看看我这个哪里有问题@小辣鸡 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]; }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() {@guohaoyan218 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; } 大看不出来哪错了。我这有问题吗? #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; }