问题描述
- c语言代码问题,麻烦大家帮忙看一下~~
- 参加期中考试的人数约在 380~450 人之间,总平均分为 76 分,男生的平均分为 75 分,女生的平均分为 80.1 分,问男女生各有多少人?
#include<stdio.h>int main() {int ab;for(a=0;a<=450;a++) for(b=0;b<=450;b++) if((380<=(a+b)&&(a+b)<=450)&&(75*a+80.1*b==(a+b)*76)) printf(""男生:%d女生:%d ""ab); }
我这个代码在VC上运行结果正确,但是提交到学校平台上显示无结果。。。请问是咋回事?是不是因为算法太复杂所以超时了,有没有更简单的算法呀~
解决方案
实数不能用==判断。
#include<stdio.h>int main() {int ab;for(a=0;a<=450;a++) for(b=0;b<=450;b++) if( (380<=(a+b)&&(a+b)<=450) && fabs(75*a+80.1*b-(a+b)*76)<0.001) printf(""男生:%d女生:%d
""ab); }
解决方案二:
程序除了少了句return 0;语句之外是没有问题的,在VC中程序运行之后会为你作出停留操作,并在屏幕上打印提示字符串“Press any key to continue”;
但是,你需要明白的是,这里的停留只是VC这个开发工具为了让你方便观察结果而做出的程序停留;
然而,程序实际执行完所有的循环语句之后,该程序main方法已经运行结束,main方法结束意味着程序结束,
程序结束之后,你所打印的信息也随着程序的结束而不能为你停留显示。
实际上,printf语句已经执行了,只不过执行完之后程序就已经结束,console控制台也随之关闭,所以你看不到结果。
如果想观察结果怎么办呢?可以在程序return 0;之前,加上一个scanf(""%d""&a);
该行代码没有实际意义,只是为了让程序停留,从而让用户可以在程序结束之前观察到打印的数据。
补充上正确代码:
#include
int main()
{
int ab;
for(a=0;a<=450;a++)
{
for(b=0;b<=450;b++)
{
if((380<=(a+b)&&(a+b)<=450)&&(75*a+80.1*b==(a+b)*76))
{
printf(""男生:%d女生:%d
""ab);
}
}
}
}
解决方案三:
#include<stdio.h>int main (void){ double a=0.0000000001; if(a==0)printf(""0
""); else printf(""not 0
""); return 0;}
解决方案四:
MyEclipse+Tomcat 问题 麻烦各位帮忙看一下