中国出入境管理局 电话:C语言问题,这个程序怎么不能运行

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/08 05:25:52
#include<stdio.h>
void main()
{
int gj=0,mj,xj;
while(gj<=19)
{mj=0;
while(mj<=33)
{xj=100-gj-mj;
if(5.0*gj+3.0*mj+xj/3.0==100.0)
printf("%d %d %d\n",gj,mj,xj);
xj++;
}
gj++;
}

}
调试~0错误,0警告~连接也一样成功,但是EXE文件运行只有黑屏~没有输出结果~编译错误吗~请各位有识之士指教~
请问算法错在那里呢???可以具体指正吗~

这是正确的源程序:
#include<stdio.h>
void main()
{
int gj=0,mj,xj;
while(gj<=19)
{
mj=0;
while(mj<=33)
{
xj=100-gj-mj;
if(5.0*gj+3.0*mj+xj/3.0==100.0)
printf("%d %d %d\n",gj,mj,xj);
mj++;
}
gj++;
}

getch();
}

因为gj,mj,xj 永远等于 0,0,100

永远在 while(mj<=33) {..}里循环,出不来.

5.0*gj+3.0*mj+xj/3.0 永远等于 33.333333 不打印.

要按你的目的,即想算什么,模拟什么,修改程序才行.

while(mj<=33)
{xj=100-gj-mj;
if(5.0*gj+3.0*mj+xj/3.0==100.0)
printf("%d %d %d\n",gj,mj,xj);
xj++;
}

这个循环里,mj没有变化,一直为0,所以死循环。
把xj++改为mj++

不可能有正确结果啊,检查一下算法!
xj++; 改成mj++;试试

符点数不能这样比较的

用一个界就是<,>,这样来判断的