c语言:编写一个程序找出一组单词中的“最小“和“最大“的单词(单词在字典中的先后顺序,字典中先出现的小)。当输入四个字母单词时,程序停止读入。。。。。。我这里已经写好了,有一个小问题,就是当我输入dog,zebra,rabbit,catfish,walrus,cat,fish.时,应该输出的正确答案是small cat,large zebra。但我输出的small 是我dog。
#include<stdio.h>
#include<string.h>
#define N 20
int main()
{
char smallest_word[N], largest_word[N], a[N], b[N];
int i, k;
printf("Enter word: ");
gets(b);
strcpy(smallest_word, b);
strcpy(largest_word, b);
k = strlen(b);
if (k == 4)
{
printf("Smallest word: ");
puts(smallest_word);
printf("Largest word: ");
puts(largest_word);
return 0;
}
else
{
for (;;)
{
printf("Enter word: ");
gets(a);
k = strlen(a);
if (k != 4)
{
if (strcmp(smallest_word, a) > 0)
strcpy(smallest_word, a);
if (strcmp(largest_word, a) < 0)
strcmp(largest_word, a);/*我觉得是这一步没有运行*/
}
else
{
printf("Smallest word: ");
puts(smallest_word);
printf("Largest_word ");
puts(largest_word);
return 0;
}
}
}
}
谢谢帮我检查下!
strcmp(largest_word, a);/*这一步没有运行*/
这一行写错了,不是应该strcpy么,不是strcmp。
#include<stdio.h>
#include<string.h>
int main()
{
char ch[5][10];
char min[10],max[10];
int i;
for(i=0;i<5;i++)
{
gets(ch[i]);
}
strcpy(min,ch[0]);
strcpy(max,ch[0]);
for(i=1;i<5;i++)
{
if(strcmp(max,ch[i])<=0)
扩展资料
C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。
相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
合理使用优先级可以极大简化表达式。
strcmp(largest_word, a);/*这一步没有运行*/
这一行写错了,不是应该strcpy么,不是strcmp。
#include<stdio.h>
#include<string.h>
int main()
{
char ch[5][10];
char min[10],max[10];
int i;
for(i=0;i<5;i++)
{
gets(ch[i]);
}
strcpy(min,ch[0]);
strcpy(max,ch[0]);
for(i=1;i<5;i++)
{
if(strcmp(max,ch[i])<=0)
扩展资料:
上面的定义可以拓展:只要两个元素属于 A×B×...×N 这个笛卡尔积,或曰可写成 T1=(a1, b1, ..., n1) 和 T2=(a2, b2, ..., n2) 的有序多元组形式,那么两者即可排序——从前往后。
回到英语单词的例子上来。单词可以说是在笛卡尔积 A×A×A×... 这个集合(其中集合 A 是二十六个英文字母的集合,注意组成笛卡尔积的这些集合不必彼此不同)上的多元组,那么在字典中排列单词的顺序就是这里说的字典序——这也就是“字典序”这个名称的由来。
参考资料来源:
本回答被网友采纳你这一行写错了吧,不是应该strcpy么,怎么还是strcmp呢?追问
呵呵,是我傻了,我竟然检查一晚上没有查出。。。。
本回答被提问者采纳