c语言,怎么运行不出结果呢 20

/*给出一个完整的句子,这个句子中不包含不可见字符或者空格,于是在这个句子中有许多不同的单词。一个单词是指一串连续的最长的英文字母(大写或小写)。例如"#abc#"中,"... /*给出一个完整的句子,这个句子中不包含不可见字符或者空格,于是在这个句子中有许多不同的单词。一个单词是指一串连续的最长的英文字母(大写或小写)。
例如"#abc#"中,"abc"就是一个单词,而"ab","bc"都不算单词。
【输入】输入文件名"word.in"
输入一个句子,只包含可见字符(不包含空格)。句子长度不超过 100。
【输出】输出文件名"estdout.pc2"
按单词出现的顺序输出不同的单词。如果一个单词出现多次则只有第一次出现时输出。
程序运行后结果示例:
【样例输入】
Wa_Study_Wa_Everyday_Wa_Daxia
【样例输出】
Wa
Study
Everyday
Daxia
*/
#include <stdio.h>
#include <string.h>
#include<ctype.h>
#define MAX 100
int main()
{
freopen("word.in.txt","r",stdin);
//freopen("estdout.pc2.txt","w",stdout);

char dic[MAX][MAX]={'\0'},word[MAX]={'\0'},s[MAX];
int i,k,j=0,num=0,inword=0,m=0;

gets(s);

//s[]中单词个数: num
for(i=0; s[i]!='\0'; i++)
{
if( isalpha(s[i]) )
word[j++]=s[i]; //从s[]析取单词到word[i]
else
if(!inword)
{
word[j]='\0';

for(k=0;k<=m;k++)
if(strcmp(dic[m],word)==0) break;
strcpy(dic[m++],word);
}
j=0;
inword=0;
}

for(i=0;i<m;i++)
puts(dic[i]);
return 0;
}
展开
 我来答
luleigreat
2015-11-06
知道答主
回答量:3
采纳率:0%
帮助的人:3519
展开全部

你这个程序问题很多:

首先:对于你的问题“为什么不输出”答案是你这里的判断

if(strcmp(dic[m],word)==0)    break;

问题成立的,因为你的if……else……后面总是 

j=0;
然后在进入else的时候
word[j]='\0';

这样word中一直都是空字符串,你把 j=0这句放到 strcpy(dic[m++],word);后面就可以输出了。


其次,即使这样改,你的逻辑还是有问题的,因为for循环的结束条件是s[i]!='\0';拿 aaa_bbb这个字符串来说,你的程序只能输出aaa,因为最终字符串循环完的时候,for循环直接结束了,你的bbb没有加到dic中去。

你这里用do{……}while(s[i]!='\0');去循环就没有问题了,这个循环比for循环多一次,正好把你漏掉的加进来了。


最后,刚开始编程最好养成好的编码习惯,你程序中很多变量没有用到,比如,你的inword变量一直是0,没有必要定义,编码格式也要规范些,这些小习惯其实挺重要的。

追问

有答案了,但输出的单词有重复的

GhostWzf
2015-11-07 · TA获得超过1092个赞
知道小有建树答主
回答量:313
采纳率:100%
帮助的人:505万
展开全部
我对你的程序进行了以下操作:
首先是把所有的float类型都改成了double

然后在你的程序前面加上
#include
#include
这两个头文件

再在程序主体部分的
while((T[25]=15))
循环体内一进循环体的位置加上
cout<<T[25]<<"|"<<T[25]-T[0]<<endl;
getch();
这两句话

运行程序得到结果:
20|0
1.#QNAN|1.#QNAN
1.#QNAN|1.#QNAN
1.#QNAN|1.#QNAN
...

说明进入while循环体后进行了一系列操作后T[25]的数据就变成了非法数据

所以我估计是你的while里面的那些公式带的有问题或者怎么样,总之
while((T[25]=15))
条件永远不可能不成立即永远不可能跳出循环体,当然就卡在那里得不到结果了(即所谓的死循环)

因为对你题目要求的公式不太清楚,所以也不好检查你的程序,总之个人感觉就是你的公式带的有问题,T[0]~T[25]计算方法有问题,自己仔细检查下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式