C语言,请写出本题代码

img

用strlen得到长度进行比较,将长度最长的替换为b
运行结果:

img

代码;

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void replaceString(char* a[],int n,char* b)
{
    int i;
    int index = 0;
    for(i=1;i<n;i++)
    {
        if(strlen(a[i]) > strlen(a[index]))
            index = i;
    }
    a[index] = b;
}

int main()
{
    char *a[5]={0};
    char b[20]={0};
    int i;
    for(i=0;i<5;i++)
        a[i] = (char*)malloc(20);
    printf("请输入代表奥运五环的5个字符串:\n");
    for(i=0;i<5;i++)
        scanf("%s",a[i]);
    printf("请输入另一种颜色字符串:\n");
    scanf("%s",b);
    replaceString(a,5,b);
    printf("替换后的奥运五环颜色为:\n");
    for(i=0;i<5;i++)
        printf("%s ",a[i]);
    return 0;
}

非标准答案,仅供学习参考!

img

#include <stdio.h>
#include <string.h>

void replace(char (*a)[10], int n, char *b)
{
    int max = 0, index;
    for (int i = 0; i < n; i++)
    {
        if (strlen(a[i]) > max)
        {
            max = strlen(a[i]);
            index = i;
        }
    }

    strncpy(a[index], b, strlen(b));
}

int main(int argc, char *argv[])
{
    //blue2. black 3. red 4. yellow5. green
    char a[5][10];
    char b[10] = "'\0'";
    for (int i = 0; i < 5; i++)
    {
        scanf("%s", a[i]);
    }
    scanf("%s", b);

    replace(a, 5, b);

    for (int i = 0; i < 5; i++)
    {
        printf("%s ", a[i]);
    }

    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632