原题链接:[编程入门]自定义函数之字符提取
解题思路:这里输入字符串中的字符,一般是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 fun(char a[]){ int l; l=strlen(a); for(int i=0;i<l;i++){ if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'){ printf("%c",a[i]); } } } int main(){ char a[10000]; gets(a); fun(a); }#include<stdio.h> #include<math.h> #include<string.h> int main() { char a[100],b[100]; gets(a); int i,j=0; for(i=0;i<100;i++){ if(a[i]=='a'){ b[j]=a[i]; j++; }else if(a[i]=='e'){ b[j]=a[i]; j++; }else if(a[i]=='i'){ b[j]=a[i]; j++; }else if(a[i]=='o'){ b[j]=a[i]; j++; }else if(a[i]=='u'){ b[j]=a[i]; j++; } } puts(b); printf("\0"); return 0; } 我在Dev C++上运行是正确的,但是这里提交确显示错误,不知道为啥未免太麻烦啦! #include "stdio.h" #include "string.h" #include "stdlib.h" void f(){ char dinary[5] ={'a','e','i','o','u'}; char s[100]; gets(s); int len; len =(int) strlen(s); for(int i = 0;i<len;i++){ for(int j = 0;j<5;j++){ if(s[i]==dinary[j]){ printf("%c",s[i]); } } } } int main(){ f(); return 0; }@踏上星辰 #include <stdio.h> #include <string.h> #define MAX 1024 int main(void) { char str1[MAX]; char str2[MAX]; int n=0,i; fgets(str1,MAX,stdin); for( i=0;i<=MAX;i++) { if(str1[i]=='a' ||str1[i]=='e'|| str1[i]=='i'|| str1[i]=='o'||str1[i]=='u' ) { str2[n++]=str1[i]; } if(str1[i]==0) break; } n=n-1; for(i=0;i<=n;i++) { printf("%c",str2[i]); } return 0; }#include <stdio.h> #include <string.h> #define MAX 1024 int main(void) { char str1[MAX]; char str2[MAX]; fgets(str1,MAX,stdin); int number=strlen(str1); int n=0; for(int i=0;i<=number;i++) { if(str1[i]=='a' ||str1[i]=='e'|| str1[i]=='i'|| str1[i]=='o'||str1[i]=='u' ) { str2[n++]=str1[i]; } } n--; puts(str2); return 0; } 我的鸡肋代码#include<stdio.h> char input(char* cha,char *chb); char input(char* cha,char *chb) { int a=0,b=0,c,d,e; while(*cha!='\0') {a++; cha++; } cha=cha-a; for(c=0;c<a;c++) { if(*(cha+c)=='a'||*(cha+c)=='e'||*(cha+c)=='i'||*(cha+c)=='o'||*(cha+c)=='u') { *(chb+b)=*(cha+c); b++; } } return 0; } int main() { char cha[100]; char chb[100]={}; scanf("%s",cha); input(cha,chb); printf("%s",chb); return 0; }