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

#include<stdio.h>
int main(void)
{
int a,n,i,sum;
printf("Enter a:");
scanf("%d",&a);
printf("Enter n:");
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
{
sum=sum+a;
a=a*10+a;
}
printf("the sum is %d",sum);
return 0;
}

这个程序有点类似百钱百鸡
#icnlude<stdio.h>
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);
}

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

我运行过这个程序,可是还是缺了五分的票为1,2,3 张的情况。

追答

应该不缺的,我没有运行环境,我上面的程序,你加一个输出语句就行了

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-24
#include<stdio.h>
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);
}追问

不好意思。我程序给错了
#include
int main(void)
{
int yi,er,wu,count;
count=0;
for(wu=1;wu<=20;wu++)
for(er=1;er<=50;er++)
for(yi=1;yi<=100;yi++)
if(yi+er*2+wu*5==100)
{
printf("yi=%d,er=%d,wu=%d\n",yi,er,wu);
count++;
}
printf("%d",count);
return 0;
}
这个程序。运行下来为什么五分的为1,2,3都没有?

追答

有啊,比如82个1分,4个2分,2个5分。81个1分,7个2分,1个5分。83个1分,1个2分,3个5分。
你把我给你的程序运行一下看看,我那里把所有可能的组合都让输出了。

追问

恩,你的确实能输出。可我不知道我的错在哪了。。就我刚刚追问时 给你的那个程序。

追答

你写的这个也没问题啊,只是咱俩变量用的不一样。我刚运行了,跟我的结果完全一样

追问

不是吧。。我运行的结果wu=。。后面根本没有1,2,3。。是我电脑的问题??

本回答被提问者采纳
第2个回答  2020-04-19
我的这个程序只需要执行20*50=1000次,执行效率快一个数量级(对于现在的电脑来说没啥区别······)
#include <stdio.h>
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;
}
第3个回答  2019-02-04
#include <stdio.h>

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循环。
相似回答