C语言题:用一张一元票换1分,2分和5分的硬币,至少各一枚,问有几种换发?我程序怎么错了??

2024-11-17 21:47:56
推荐回答(4个)
回答1:

这个程序有点类似百钱百鸡
#icnlude
void main()
{
int x,y,z,m = 0; //x代表一分钱,y代表2分,z代表三分,m 统计
for(x = 1; x < 100; i++)
for(y = 1; y < 50; y++)
for(z = 1; z < 20; z++)
if(x + 2 * y + 5 * z == 100)
m++;
printf("一共有%d种方法",m);
}

你的程序好像有些问题,这个不需要人工输入的,我是直接打上去的,你若要运行,可能有中英文标点的区别

回答2:

#include
int main(void)
{
int i,j,k,s=0; //i为1分硬币,j为2分硬币,k为5分硬币

for(i=1;i<100;i++)
for(j=1;j<50;j++)
for(k=1;k<20;k++)
if(5*k+2*j+i==100)
{
printf("%d\t%d\t%d\n",i,j,k);
s++;
}
printf("s=%d",s);
}

回答3:

我的这个程序只需要执行20*50=1000次,执行效率快一个数量级(对于现在的电脑来说没啥区别······)
#include
int main()
{
int count,yi,er,wu;
for(wu=1;wu<=20;wu++)
for(er=1;er<=50;er++)
{
yi = 100-wu*5-er*2;
if(wu*5+er*2+yi*1==100&&yi>0)
{
printf("1分=%d,2分=%d,5分=%d\n",yi,er,wu);
count++;
}
}
printf("共有%d种可能\n",count);
return 0;
}

回答4:

#include

int main()
{
int count=0;
for(int i=1;i<=20;i++)
{
for(int j=1;j<(100-i)/2;j++)
count+=(100-5*i-2*j>0);
}
printf("%d",count);
return 0;
}
大致代码就这样,可能会快一点,我认为不需要三个for循环。