已有变量定义和函数调用语句:
char str1[80],str2[80];
cpy(str1,str2);
cpy函数的作用是找出str1中的元音字母然后复制到str2中。要求在主函数中实现字符串的输入,并存放到字符数组str1中,函数调用后输出字符数组str1和str2中的内容。求解题思路
循环变量str1,判断字符是否为元音,是则加入str2
#include <stdio.h>
char yy[10] = "aeiouAEIOU";
void cpy(char *str1,char *str2)
{
int i=0,j=0,k=0;
while(str1[i] != '\0')
{
for(k=0;k<10;k++)
{
if(yy[k] == str1[i])
break;
}
if(k<10)
str2[j++] = str1;
i++;
}
}
int main()
{
char str1[80]={0},str2[80] = {0};
gets(str1);
cpy(str1,str2);
puts(str2);
return 0;
}
解答如下
有帮助请采纳
#include <stdio.h>
void cpy(char str1[],char str2[])
{
int count=0,i=0;
while(str1[i]!='\0')
{
if(str1[i]=='a'||str1[i]=='e'||str1[i]=='i'||str1[i]=='o'||str1[i]=='u'||
str1[i]=='A'||str1[i]=='E'||str1[i]=='I'||str1[i]=='O'||str1[i]=='U')
{
str2[count]=str1[i];
count++;
}
i++;
}
str2[count]='\0';
}
int main()
{
char str1[80],str2[80];
gets(str1);
cpy(str1,str2);
puts(str2);
return 0;
}
代码如下,有注释!仅供参考 谢谢!
/*
已有变量定义和函数调用语句: char str1[80],str2[80];
cpy(str1,str2);
cpy函数的作用是找出str1中的元音字母然后复制到str2中。要求在主函数中实现字符串的输入,并存放到字符数组str1中,函数调用后输出字符数组str1和str2中的内容。求解题思路
*/
#include<stdio.h>
int cpy(char *str1, char *str2)
{
// 首先要知道元音字母是aeiou或AEIOU
// 建立元音字母数组
char yyin[] = "aeiouAEIOU";
char *p=str2;
// 遍历数组str1但是满足元音的保存到str2数组中
// 遍历数组str1的要放在最外层循环
for (int i = 0; str1[i] != '\0'; i++)
{
for (int j = 0; yyin[j] != '\0'; j++)
{
//如果是元音字母则赋值给str2
if(str1[i]==yyin[j])
{
*p++=str1[i];
break;//跳出内层循环避免不了多余循环
}
}
}
//str2尾部加上结束符
*p='\0';
return 0;
}
int main()
{
char str1[80]={0},str2[80]={0};//赋值了一个0,防止没有元音字母时str2输出乱七八糟的东西
puts("输入str1:");
scanf("%79s",str1);//这里79意思是输入不能超过79个字符包括结束符刚好80个最大,超出上溢出无效
cpy(str1,str2);
printf("str1内容:%s\n",str1);
printf("str2内容:%s\n",str2);
return 0;
}