求解题思路和编程思路

已有变量定义和函数调用语句:
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;
}

解答如下
有帮助请采纳

img

#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;
}

代码如下,有注释!仅供参考 谢谢!

img

img

/* 
   已有变量定义和函数调用语句: 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;
}