这个程序错在哪儿了,怎么每次运行结果都不一样?

来源:百度知道 编辑:UC知道 时间:2024/09/20 09:40:42
输入三个字符串,输出最长的:
#include<stdio.h>
#include<string.h>
void main()
{
char string[20];
char str[3][20];
int i;
for(i=0;i<3;i++)
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else strcpy(string,str[1]);
if(strcmp(str[2],string)>0)
strcpy(string,str[2]);
printf("\nthe larest string is: \n%s\n",string);
}

你这个程序不是求字符串长度最长的,而是求字典序最靠后的!你用的函数有问题。
strcmp(是string compare)的缩写,所以作用是比较字符串的大小,并根据ASCII码对其进行字典序排序,而要求字符串长度的函数应该用strlen(是string length)的缩写。把上面if中的条件改一下,改为if(strlen(str[1])>strlen(string))(其实这个可以再用一次循环事先!)即可。
值得注意的是:在判断之前要先对string赋初值,即在所有if之前写一行strcpy(string,string[1]),保证结果正确!

你这程序不是输出最长的字符串,
而是输出字典序最靠后的字符串。

strcmp()函数比较的是字典序大小。
比较字符串长度用 strlen()函数。