原题链接:[编程入门]自定义函数之字符提取
解题思路:这里输入字符串中的字符,一般是ASCII字符,从0到255,范围不大;采用查表v[256]的方法,例如'a'是元音字母,那么v['a']就设置为非零,if(v['a'])即可找到'a'并存入另一用来输出的字符串。
注意事项:这里的元音字母可以不包括相应的大写字母。
参考代码:
#include<stdio.h>
#include<string.h>
#define N 1000
int main(){
	char *vowel(char *str1,const char *str2);
	char s1[N],s2[N];
	gets(s2);//输入字符串
	puts(vowel(s1,s2));//找到元音字母并输出
	return 0;
}
char *vowel(char *str1,const char *str2){
	int i,j,len;
	char v[256];//ASCII码表
	memset(v,'\0',sizeof(v));//初始化
	v['a']=v['e']=v['i']=v['o']=v['u']=' ';//特殊位置为非零
	len=strlen(str2);
	for(i=0,j=0;i<len;i++)
		if(v[str2[i]])//用str2[i]查表找到元音字母
			str1[j++]=str2[i];//存入另一字符串
	str1[j]='\0';//字符串结尾
	return str1;
}0.0分
34 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <stdio.h> #include <string.h> char *aeiou(char *str, char *aeioustr){ //非int函数用*引用指针地址,不然报错 int j=0; for (int i=0;i<strlen(str);i++){ if(str[i]=='a' || str[i]=='e' || str[i]=='i' || str[i]=='o' || str[i]=='u'){ aeioustr[j++] = str[i]; } } aeioustr[j]='\0'; //结尾报aeo?字样要加结尾 return aeioustr; } int main(){ char str1[100], aeioustr[100]; gets(str1); puts(aeiou(str1, aeioustr)); } 学到了,一直纠结char类型函数为什么一直报错,谢谢大佬的参考#include<stdio.h> void copy(char str1[10],char str2[]) { int i=0,j=0; for(i=0;i<10;i++) { { if(str1[i]=='a'||str1[i]=='o'||str1[i]=='e'||str1[i]=='i'||str1[i]=='u') { str2[j]=str1[i]; j++; } } } printf("%s",str2); } int main() { char str1[10],str2[10]; scanf("%s",str1); copy(str1,str2); return 0; } 为啥错了 结果明明是对的啊= =真奇怪 求解答萌新#include<stdio.h> #include<string.h> char tiqu(char a[],char b[]){ int n,i; char p[2]; n=strlen(a); for(i=0;i<n;i++){ if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'){ p[0]=a[i]; p[1]='\0'; strcat(b,p); } } return 0; } int main(void){ char a[15],b[15]=""; printf("input some numbers:\n"); gets(a); tiqu(a,b); puts(b); return 0;