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

2025-04-14 12:46:57
推荐回答(2个)
回答1:

你这个程序问题很多:

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

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,没有必要定义,编码格式也要规范些,这些小习惯其实挺重要的。

回答2:

我对你的程序进行了以下操作:
首先是把所有的float类型都改成了double

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

再在程序主体部分的
while((T[25]=15))
循环体内一进循环体的位置加上
cout<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]计算方法有问题,自己仔细检查下。