-cfyjbjonn
2019-01-14 17:56
采纳率: 73.3%
浏览 2.9k

c语言,输入6个字符串,求最大串和最小串

输入6个字符串,输出最大串及最小串,如
输入:
hello,world
c
java
c++
#c
cp
运行结果:
最大串:java
最小串:c

以下是我的代码,请问哪里有错,怎么改

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 7
#define M 15

int main()
{
    int i,j,changdu[N];
    char *m[M],min[M],max[M];
    printf("input 6 strings:\n");
    for(i = 0; i < 6; i++)
    {
        scanf("%s",&m[i]);
    }
    strcpy(min[M],m[0]);
    strcpy(max[M],m[0]);
    for(i = 0; i < 5;i++)
    {
        changdu[i] = strlen(m[i]);
        for(j = i+1; j < 6 ; j++)
        {
            changdu[j] = strlen(m[j]);
            if(changdu[i] < changdu[j])
            {
                strcpy(max[M] , m[j]);
                strcpy(min[M] , m[i]);

            }
        }
    }
    printf("max string is %s,min is %s",max[M],min[M]);

}


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 白色一大坨 2019-01-15 10:08
    已采纳

    各位人家都给分了,稍微耐心点嘛,代码改了一下你看看,基本按照你思路弄的:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 7
    #define M 15
    
    int main()
    {
        int i, j, changdu[N];
        char m[N][M], min[M], max[M];
        int maxlen, minlen;
        printf("input 6 strings:\n");
        for (i = 0; i < 6; i++)
        {
            scanf("%s", &m[i]);
        }
        strcpy(min, m[0]);
        strcpy(max, m[0]);
    
        changdu[0] = strlen(m[0]);
        maxlen = changdu[0];
        minlen = changdu[0];
        for (j = 1; j < 6; j++)
        {
            changdu[j] = strlen(m[j]);
            if (maxlen < changdu[j])
            {
                strcpy(max, m[j]);
                maxlen = changdu[j];
            }
            else if (minlen > changdu[j])
            {
                strcpy(min, m[j]);
                minlen = changdu[j];
            }
        }
    
        printf("max string is %s,min is %s", max, min);
    
    }
    

    执行结果,最长的可不是java是第一行的:
    图片说明

    点赞 评论
  • _ZGq 2019-01-14 18:32

    看这一句:if(changdu[i] < changdu[j])
    字符串不能用<、>、==比较大小,要用strcmp函数,这样用:strcmp(字符串1,字符串2)。如果字符串1<字符串2,返回负数;如果相等,返回0;如果大于,返回正数。

    点赞 评论
  • csnpx 2019-01-14 18:44

    请教:C语言怎么将字符“3 5 13-18”数字转换为3 5 13 14 15 16 17 18数字,“13-18”弄不好

    点赞 评论
  • blownewbee 2019-01-14 23:50

    两个问题,一个是字符串比较的问题
    一个是 char *m[M],这里你并没有给m分配空间。它只是一个指针
    你下面就开始往里面输入了

    点赞 评论
  • 大内群英7 2019-01-15 09:50

    懒得再重写一遍了,下面的链接可供楼主参考:输入6个字符串,输出最小串及最大串。

    至于你的程序问题,楼上几位该说的也说了,关于楼主问的字符与数字间的转换有专文探讨,链接如下:c/字符串,字符转数字,数字转字符

    实在懒得再重新总结一遍,楼主自己去领悟吧

    点赞 评论

相关推荐 更多相似问题