输入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]);
}
各位人家都给分了,稍微耐心点嘛,代码改了一下你看看,基本按照你思路弄的:
#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);
}
看这一句:if(changdu[i] < changdu[j])
字符串不能用<、>、==比较大小,要用strcmp函数,这样用:strcmp(字符串1,字符串2)。如果字符串1<字符串2,返回负数;如果相等,返回0;如果大于,返回正数。
请教:C语言怎么将字符“3 5 13-18”数字转换为3 5 13 14 15 16 17 18数字,“13-18”弄不好
两个问题,一个是字符串比较的问题
一个是 char *m[M],这里你并没有给m分配空间。它只是一个指针
你下面就开始往里面输入了
懒得再重写一遍了,下面的链接可供楼主参考:输入6个字符串,输出最小串及最大串。
至于你的程序问题,楼上几位该说的也说了,关于楼主问的字符与数字间的转换有专文探讨,链接如下:c/字符串,字符转数字,数字转字符
实在懒得再重新总结一遍,楼主自己去领悟吧