C语言字符数组输出最大字符串

img

img


输入n组字符串 要求输出最大的字符串。
如图一 这组代码哪里出错了 没有输出值呀!!

你的代码中,max需要修改为字符数组,max[50]
你这个代码是求最大字符串,不是最大长度的字符串,最大字符串是按照ASCII码值来比较的。
下面是2个代码,第一个是修改了你的代码,按字典序(也就是ASCII码值)求最大字符串的。第2个是按字符串长度求最长字符串的。
(1)按字典序求最大字符串

img

代码:

#include <stdio.h>  
#include <string.h>
int main()
{
    int n, i;
    char a[50], max[50]; //修改,这里max需要申请50个空间
    while (scanf("%d", &n) != EOF)
    {
        scanf("%s", max);
        for (i = 1; i < n; i++ )
        {
            scanf("%s", a);
            if (strcmp(a, max) > 0)
                strcpy(max, a);
        }
        printf("%s\n", max);
    }
    return 0;
}


(2)按字符串长度求最长字符串

img

代码:

#include <stdio.h>  
#include <string.h>
int main()
{
    int n, i;
    char a[50], max[50]; //修改,这里max需要申请50个空间
    while (scanf("%d", &n) != EOF)
    {
        scanf("%s", max);
        for (i = 1; i < n; i++ )
        {
            scanf("%s", a);
            if (strlen(a) > strlen(max) )
                strcpy(max, a);
        }
        printf("%s\n", max);
    }
    return 0;
}

img


这是单字符,不能用%s,改成%c试试
有用记得采纳呐

#include<stdio.h>
#include<string.h>
#define n 100
int main()
{
char a[n][n];
int i, index = 0, N; 
scanf("%d", &N);
for (i = 0; i < N; i++)
{
  scanf("%s", &a[i]);
}
for (i = 0; i < N; i++)
{
  if (strcmp(a[i], a[index]) > 0)
  {
    index = i;
  }
}
printf("%s", a[index]);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632