求教一道C语言题目

【问题描述】输入5个字符串,输出其中最大的字符串。【输入形式】首先打印提示“Input5srings:";然后另起一行输入五个字符串,每个字符串之间用空格或回车或制表符隔... 【问题描述】
输入5个字符串,输出其中最大的字符串。
【输入形式】
首先打印提示“Input 5 srings:";然后另起一行输入五个字符串,每个字符串之间用空格或回车或制表符隔开。
【输出形式】
首先打印“Max is:”;紧跟后面输出最大的一个字符串;空格;换行。
【运行时的输入输出样例】(下划线部分表示输入)
Input 5 srings:
Wang
Li
Zha
Jin
Xian
Max is:Zha

我的答案:
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[80],b[80],c[80],d[80],e[80],max;

printf("Input 5 srings: \n");
gets(a);
gets(b);
gets(c);
gets(d);
gets(e);

if((strcmp(a,b)>0)&(strcmp(a,c)>0)&(strcmp(a,d)>0)&(strcmp(a,e)>0))
max=a;
else if((strcmp(b,a)>0)&(strcmp(b,c)>0)&(strcmp(b,d)>0)&(strcmp(b,e)>0))
max=b;
else if((strcmp(c,a)>0)&(strcmp(c,b)>0)&(strcmp(c,d)>0)&(strcmp(c,e)>0))
max=c;
else if((strcmp(d,a)>0)&(strcmp(d,b)>0)&(strcmp(d,c)>0)&(strcmp(d,e)>0))
max=d;
else
max=e;
printf("Max is: %s",max);
return 0;
}
一直无法运行,求教哪里错了?
展开
 我来答
UFO_series3
2013-05-26 · 超过32用户采纳过TA的回答
知道答主
回答量:110
采纳率:100%
帮助的人:57.7万
展开全部
这是典型的逻辑错误。
(1)max必须是字符数组。
(2)逻辑比较不能使用“&”而是“&&”
(3)字符拷贝是strcpy(),不能进行数组赋值,数组名是常量。
(4)你把max改为字符指那就可以赋值。。
XKillerCn
2013-05-26 · 超过19用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:43.1万
展开全部
#include<stdio.h>
#include<string.h>
int main(void){
char a[80],b[80],c[80],d[80],e[80],max[80];//你的max没初始化大小
printf("Input 5 srings: \n");
gets(a);
gets(b);
gets(c);
gets(d);
gets(e);
if((strcmp(a,b)>0)&(strcmp(a,c)>0)&(strcmp(a,d)>0)&(strcmp(a,e)>0)) strcpy(max,a);
else if((strcmp(b,a)>0)&(strcmp(b,c)>0)&(strcmp(b,d)>0)&(strcmp(b,e)>0)) strcpy(max,b);
else if((strcmp(c,a)>0)&(strcmp(c,b)>0)&(strcmp(c,d)>0)&(strcmp(c,e)>0)) strcpy(max,c);
else if((strcmp(d,a)>0)&(strcmp(d,b)>0)&(strcmp(d,c)>0)&(strcmp(d,e)>0)) strcpy(max,d);
else strcpy(max,e);
printf("Max is: %s",max);
while(1);
return 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2017-10-03 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6489万
展开全部

错误太多了,一一纠正有点麻烦,写一个你自己对照看——

#include "stdio.h"
#include <string.h>
int main(int argv,char *argc[]){
char str[5][81],i,maxi;
printf("Input 5 strings:\n");
for(maxi=i=0;i<5;i++){
scanf("%s",str+i);
if(strcmp(str[maxi],str[i])<0)
maxi=i;
}
printf("Max if:%s\n",str[maxi]);
return 0;
}

运行样例:

有什么问题续问……

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo883721
2013-05-26
知道答主
回答量:15
采纳率:0%
帮助的人:8万
展开全部
max变量不是数组,把max变为max[80],还有数组之间不能用max直接等于a的,用字符串复制公式就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式