原题链接:[编程入门]自定义函数之字符提取
解题思路:这里输入字符串中的字符,一般是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> void strf(char a[]); int main() { char a[1000]; scanf("%[^\n]",a); strf(a); } void strf(char a[]) { int b,i,j,t; char z[5]={'a','e','i','o','u'}; b=strlen(a); for(j=0;j<6;j++) { for(i=0;i<b;i++) { if(a[i]==z[j]) { printf("%c",a[i]); } } i=0; } } 认为这个 最简单#include <stdio.h> #include <string.h> void Select(char str[], char str2[]) { int i, j, len; len = strlen(str); for(i = 0, j = 0; i < len; i++) { if(str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') str2[j++] = str[i]; } str2[j] = '\0'; } int main(void) { char a[50], b[50]; gets(a); Select(a,b); puts(b); return 0; } 一个自认为比较好理解的#include <stdio.h> #include<string.h> int chazhao(char a[]); char a[100],b[100]; int main() { gets(a); chazhao(a); puts(b); } int chazhao(char a[]) { int n,m=0; n=strlen(a); for(int i=0;i<n;i++) { switch(a[i]) { case 'a': case 'e': case 'i': case 'o': case 'u': b[m]=a[i]; m++; break; } } }if('\0')是假的意思吗?和if(0)一样吗?#include<stdio.h> #include<string.h> int main() { char s[1000]; gets(s); char *p_s = s ; int len = strlen(s); //printf("%d",len); // printf("%c",*p_s); char t[1000]; char *p_t = t ; int i ; for(i = 0 ; i < len ; i ++) { switch(*p_s) { case 'a' :*p_t = *p_s;p_t++;break ; case 'e' :*p_t = *p_s;p_t++;break ; case 'o' :*p_t = *p_s;p_t++;break ; case 'i' :*p_t = *p_s;p_t++;break ; case 'u' :*p_t = *p_s;p_t++;break ; case 'A' :*p_t = *p_s;p_t++;break#include<stdio.h> #include<math.h> #include<string.h> int main() { char a[100],b[100]; int n,i,j=0; gets(a); n=strlen(a); for(i=0;i<n;i++)//aeiou { if(a[i]=='a'&&a[i]=='e'&&a[i]=='i'&&a[i]=='o'&&a[i]=='u'&&a[i]=='A'&&a[i]=='E'&&a[i]=='I'&&a[i]=='O'&&a[i]=='U') { b[j]=a[i]; j++; } } n=strlen(b); for(i=0;i<n;i++) { if(b[i]=='a'&&b[i]=='A') printf("%c",b[i]); } for(i=0;i<n;i++) { if(b[i]=='e'&&b[i]=='E') printf("%c",b[i]); } for(i=0;i<n;i++) { if(b[i]=='I'&&b[i]=='i') printf("%c",b[i]); } for(i=0;i<n;i++) { if(b[i]=='O'&&b[i]=='o') printf("%c",b[i]); }