杭电acm的C语言题,不是很难,就是不懂为什么错,,一直wrong answer。。懂得来帮我看看,,谢谢了。

#include<stdio.h>#include<string.h>#include<string.h>intmain(intargc,char*argv[]){int... #include <stdio.h>
#include<string.h>
#include<string.h>
int main(int argc, char *argv[])
{
int i,j,k,len;
char a[10000];char b[1000][10];
while(gets(a))
{
if(strlen(a)==1&&a[0]=='#')break;
j=0;k=0;
memset(b,0,sizeof(b)); //初始化
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='a'&&a[i]<='z') //如果是字母
{
b[j][k++]=a[i];
}
if((a[i+1]==' '||a[i+1]=='\0')&&(a[i]>='a'&&a[i]<='z'))
{
j++;
k=0;
}
}
len=0;
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j;k++)
{
if(strcmp(b[i],b[k])==0&&b[i][0]!='$')//标记作用,如果出现过了就不加了
{
len++;
b[i][0]='$';
}
}
}
printf("%d\n",j-len);
}
return 0;
}
展开
 我来答
panweiy
推荐于2016-01-28 · TA获得超过1239个赞
知道大有可为答主
回答量:760
采纳率:0%
帮助的人:724万
展开全部

对每组用空格split,然后trim,得到字符串数组。

然后调用排序算法。得到数组2.

然后从0-N(数组),遍历一次,i != i-1,则conut++。


至于你这个算法。错误在b[j]数组没有结束吗,就是没b[j] = '\0'。

改法1:memset(b,0,sizeof(b)) 改为: memset(b,'\0',sizeof(b));。

改法2:b[j][k] = '\0';

if(a[i]>='a'&&a[i]<='z') //如果是字母 
{
b[j][k++]=a[i];
}
if((a[i+1]==' '||a[i+1]=='\0')&&(a[i]>='a'&&a[i]<='z')) 
{
b[j][k] = '\0';
j++;
k=0;
}

 

后面的懒得看,不知有没有问题。

a1012144015
2015-07-12 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1363万
展开全部
#include <stdio.h>
#include<string.h>
#include<string.h>

int main(int argc, char *argv[])
{
int i,j,k,len;
char a[10000];char b[1000][10];
while(gets(a))
{
if(strlen(a)==1&&a[0]=='#')break;
j=0;k=0;
memset(b,0,sizeof(b)); //初始化
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='a'&&a[i]<='z') //如果是字母
{
b[j][k++]=a[i];
}
if(a[i+1]==' '||a[i+1]=='\0')
{
j++;
k=0;
}
}
len=0;
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j;k++)
{
if(strcmp(b[i],b[k])==0&&b[i][0]!='$')//标记作用,如果出现过了就不加了
{
len++;
b[i][0]='$';
}
}
}
printf("%d\n",j-len);
}
return 0;
}
你的程序单词之间只有一个空格结果正确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式