版主很生气
后果很.......
后果很.......
/******************************************************************************* 现有1角币1张,2角币1张,5角币1张,1元币4张,5元币2张。用这些钱可以 付出不同的各种数额的币值有多少种. 根据题意写出这个程序,也不知道结果对不对,程序的思维也有些乱,还请大家 多多指教。谢谢。 *******************************************************************************/ #include<stdio.h> int jianche(float *p,int k) { int i,j; int fanhui=1; for(i=0;i<k;i++) for(j=i+1;j<k;j++) if(p[i]==p[j]) return fanhui=0; return fanhui; } int main(void) { float jiao[8]={0.0,0.1,0.2,0.3,0.5,0.6,0.7,0.8}; /* 角钱可能出现的币值 */ float yuan_1=1.0,yuan_5=5.0; /* 元钱 */ float zhong[200];/* 总额,用于检测是否有相同数值出现 */ int i,j,k,jishu=0; for(i=0;i<8;i++) for(j=0;j<5;j++) for(k=0;k<3;k++) { if(!(i+j+k)) continue; zhong[jishu]=jiao[i]+yuan_1*j+yuan_5*k; if((jianche(zhong,jishu))&&zhong[jishu]!=0.0) printf("总额%.2f=一元%d张+五元%d张+角%.2f元 ", zhong[jishu],j,k,i); else continue; if(!(jishu%2)) puts(""); jishu++; } printf("\n共有%d种付币方法\n",jishu); getch(); }
#include"stdio.h" int jiance(float *p,int k) { int i; int fanhui=1; for(i=0;i<k-1;i++) if(p[i]==p[k-1]) fanhui=0; return fanhui; } int main(void) { float jiao[8]={0.0f,0.1f,0.2f,0.3f,0.5f,0.6f,0.7f,0.8f}; /* 角钱可能出现的币值 */ float yuan_1=1.0,yuan_5=5.0; /* 元钱 */ float zong[200];/* 总额,用于检测是否有相同数值出现 */ int i,j,k,count=0; for(i=0;i<8;i++) for(j=0;j<5;j++) for(k=0;k<3;k++) { zong[count]=jiao[i]+yuan_1*j+yuan_5*k; if((jiance(zong,count))&&zong[count]!=0.0) {printf("总额%.2f=一元%d张+五元%d张+角%.2f元\t", zong[count],j,k,jiao[i]);count++;} } printf("\n\n共有%d种付币方法\n",count); getchar(); }
/******************************************************************************* 把5040分拆成4个不同自然数的乘积,使这几个数的和为最小 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 按照题意,编写了这么个程序,可是运行起来十分让人恼火, 好几分钟了都不出结果,可能是for嵌套太多的原因吧? 还是希望哪位高手写出别样的程序来吧。 *******************************************************************************/ #include<stdio.h> int main(void) { int f=5040; int k=1260; /* 因为分解成为4个数,所以最小值的出现应该不是在1/4范围外*/ int h[5]={1260,1260,1260,1260,5040};/*作为存放数值以及比较大小来用,所以赋初值是最大值840*/ int a,b,c,d; for(a=1;a<=k;a++) for(b=1;b<=k;b++) for(c=1;c<=k;c++) for(d=1;d<=k;d++) if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d&&(a*b)*(c*d)==f) if(h[4]>(a+b)+(c+d)) { h[0]=a;h[1]=b;h[2]=c;h[3]=d; h[4]=(a+b)+(c+d); } printf("a=%d,b=%d,c=%d,d=%d",h[0],h[1],h[2],h[3]); getch(); }