按你的程序运行结果是0,是因为编译器对数据类型浮点型和整形之间运算的类型转变处理方式的问题。修改一下,会是你想要的结果了,呵呵:
#include<stdio.h>
long m[]={1,0.5,0.1,0.05}
int main()
{
int i,j,k,w,sum=0
for(i=0i<=20i++)
{
for(j=0j<=40j++)
{
for(k=0k<=50k++)
{
for(w=0w<=50w++)
{
float a = 1*i
float b = 0.5*j
float c = 0.1*k
float d = 0.05*w
if((a+b+c+d==20)&&(i+k+j+w==50))
{
printf("1*%2d + 0.5*%2d + 0.1*%2d + 0.05*%2d == 20? && %2d + %2d + %2d + %2d==50?\n",i,j,k,w,i,j,k,w)
sum+=1
}
}
}
}
}
printf("sum=%d\n",sum)
}
编译运行测试输出的结果:
if(){} 这条语句的意思是 如果if后面括号内的表达式结果为真,则执行后面大括号内的语句!if(t) { }表示如果t为真 这执行后面{}内的语句if(!t) { } 在t前面加个“!”符号,表示“非t”的意思,就是t如果为真 则“非t”为假 t如果为假 则“非t”为真