解题思路:这里输入字符串中的字符,一般是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分
43 人评分
#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; } 为啥错了 结果明明是对的啊= =真奇怪 求解答萌新
HuangGu2012 2022-03-12 14:27:54 |
大概是因为没有排序吧
HuangGu2012 2022-03-12 14:30:53 |
而且 i<10,这个10 是怎么来的?
热爱自动化007 2022-03-28 17:09:30 |
你的scanf函数,对str1前面没有加取值符号&
十九 2023-02-06 15:51:19 |
运行时错误,非法的内存访问,数组越界,指针漂移,调用禁用的系统函数。
十九 2023-02-06 20:33:46 |
超过10就没法了,应该自己获取str1的长度
#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;
#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++上运行是正确的,但是这里提交确显示错误,不知道为啥
uq_78487532311 2021-12-21 16:03:46 |
需要用函数写
江雪沉月 2022-11-24 09:21:22 |
在puts(b)前面加上b[j]=' ',这里的printf没啥意义
未免太麻烦啦! #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; }
图灵奖提名 2021-01-29 11:41:14 |
要是想简洁,直接i<strlen(s)就行了呀
#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; } 我的鸡肋代码
LALA 2020-08-20 12:05:08 |
一样的鸡肋代码
。 2020-10-26 19:45:38 |
#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> 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; }
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:855 |
Biggest Number (C++代码)回溯法浏览:1678 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:702 |
WU-字符串比较 (C++代码)浏览:824 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:804 |
printf基础练习2 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:590 |
关于float,double变量的几点说明浏览:1926 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:569 |
1054题解浏览:516 |