解题思路以及注意事项:

  1. 注意是传参的还是定义的全局变量,不要在自定义函数中定义数组,不然函数调用结束后就会清楚数据。

  2. 注意在数组的什么地方加 '\0'。

  3. 注意不要忘了自增。

实例代码:

#include"stdio.h"
void trans(char a[],char b[]);
int main()
{
    char ch1[100],ch2[100];
    scanf("%s",ch1);
    trans(ch1,ch2);
    printf("%s",ch2);
    return 0;
}
void trans(char a[],char b[])
{
    int i=0,j=0;
    while(a[i])                           //这样写也行,可以思考下为什么
    {
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
        {
            b[j]=a[i];
            j++;
        }
        i++;
    }
    b[j]='\0';
}

大家还有什么不懂的请在下面评论区留言,小方会在看到的第一时间替你解疑

点赞(20)
 

0.0分

7 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 34 条评论

18信二孙笑柯 5年前 回复TA
题目让按顺序输出,你这都没按题目要求
江上清风游 5年前 回复TA
@菜霸 同问为什么循环语句报错
胖胖 5年前 回复TA
b[j]='\0';这个没必要吧,直接数组初始化就完事了
灵珂 5年前 回复TA
@荒冢灬 @119891420fxl 输出那不是说要顺序输出元音字母吗??
时玥41 5年前 回复TA
uoiea
菜霸 6年前 回复TA
为什么要写成while (a[i])

为什么我用的循环语句就报错了
l=strlen(a)
for(i=0;i<l;i++)
Solotravel 6年前 回复TA
在ASCII码表中,每个字符都有相应的整数值,而“\0”的整数值刚好是0;秒啊,不用算字符串长度了。
小玉 6年前 回复TA
#include<stdio.h>
#define n 100
void trans(char a[],char b[]);
int main()
{
	char ch1[n],ch2[n];
	gets(ch1);
	trans(ch1,ch2);
	puts(ch2);
	return 0;
}
void trans(char a[],char b[])
{
	int i=0,j=0;
	for(i=0;i<n;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';
}
为什么用for循环不对
sakeboy 6年前 回复TA
@荒冢灬 题目没有要求按顺序输出,也没有说要删除重复的元音啊。要是按你的要求,反而是不符合题目要求了。
荒冢灬 6年前 回复TA
错的,没按顺序输出,还有不能删除重复的元音