C语言 看下程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 02:55:12
#include <stdio.h>
#include <string.h>

#define N 20

main()
{

char str[N][N+1];
int i,j;
char *small[N+1],*larger[N+1];
printf ("Enter word :");
*small = *larger = gets(str[0]);

for (i = 1;i < N;i++){
printf ("Enter word :");
gets(str[i]);
if (strlen(str[i]) == 4)
break;
if (strcmp(str[0],str[i]) > 0)
*small = str[i];
else
*larger = str[i];
}

printf ("Smallest word : %s\n",*small);
printf ("Largest word :%s\n",*larger);
}

这个意思是找出输入单词中最大和最小的单词
如果输入的字符串长度是4就结束
但是我输入了好多字符
发现开头是 z的 没有开头是w的大...请问问题何在
改为 *small 就是类型不匹配了。。

char *small[N+1],*larger[N+1]; 换为char *small,*larger; *small = str[i]; 换为small = str[i]; *larger = str[i]; 换为larger = str[i];还有你的IF判断有问题,正确程序如下:
#include <stdio.h>
#include <string.h>

#define N 20

main()
{

char str[N][N+1];
int i,j;
char *small,*larger;
printf ("Enter word :");
small = gets(str[0]);
larger = small;
for (i = 1;i < N;i++){
printf ("Enter word :");
gets(str[i]);
if (strlen(str[i]) == 4)
break;
if (strcmp(small,str[i]) > 0)
small = str[i];
else if(strcmp(str[i],larger) > 0)
larger = str[i];
}

printf ("Smallest word : %s\n",small);
printf ("Largest word :%s\n",larger);
}

引起错误的是 if 判断中的问题:

你是用str[0]和str[i]作比较,正确的应该是分别用 *small 和 *largest 和str[i]作比较