杭电 ACM 1004 为什么错误? 5

程序如下:(自己电脑可以运行,到了杭电就不行了,望指教指教)#include<stdio.h>#include<string.h>intmain(){intn,i,j,k... 程序如下:(自己电脑可以运行,到了杭电就不行了,望指教指教)
#include <stdio.h>
#include<string.h>

int main()
{
int n,i,j,k;
char c[15];
struct color
{
char a[15];
int b;
};
struct color b[15];

while (scanf("%d",&n)!=EOF&&n!=0)
{
k=0;
for(i=0;i<n;i++)
{
scanf("%s",c);
for(j=0;j<=k;j++)
{
if(strcmp(c,b[j].a)==0)
{
b[j].b=b[j].b+1;
break;
}
}

if(j==k+1)
{
strcpy(b[k].a,c);
b[k].b=1;
k=k+1;
}

}

j=0;
for(i=1;i<k;i++)
{
if(b[j].b<b[i].b)
j=i;
}
printf("%s\n",b[j].a);

}

}
展开
 我来答
新新求知者
2009-11-18 · TA获得超过448个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:358万
展开全部
你的程序在每次循环过后没有对b[i].b进行清零,导致如果一次执行多个case时,后面的结果会受到前面的影响而不正确。
如输入
5
red
red
blue
green
red
此时正确输出第一次的结果:red
继续输入:
5
red
green
blue
red
yellow
将会得到green的结果而并非正确的red

你自己试试看吧!
TOP_小伍
2009-11-14 · TA获得超过158个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:0
展开全部
那边提示什么错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式