#include if(x%5==1 && x%7==4) { printf(\"至少有兵: %ld个。\break; } } } 2. 键盘输入10个数,进行折半查找。※ #include int a[10],mid,high,low,i,num; printf(\"请按升序输入10个数:\"); for(i=0;i<=9;i++) scanf(\"%d\ printf(\"请输入要查找的数:\"); scanf(\"%d\ low=0; high=9; mid=(low+high)/2; while(a[mid]!=num&&low<=high) { } } } else { high=mid-1; mid=(low+high)/2; if(num>a[mid]) { low=mid+1; mid=(low+high)/2; if(low<=high) } printf(\"查找成功, 为a[%d]!\\n\printf(\"查找不成功!\\n\"); else 3. 输出斐波拉契数列:1,1,2,3,5,8…….的前n项。(每行输出10个数) ※※ #include } } int i,j; int N1,N2,N3; N1=1; N2=5; printf(\"%d %d\j=3; for(i=3;i<=40;i++) { N3=N1+N2; printf(\"%5d\N1=4; j++; if(j>10) { printf(\" \"); j=1; printf(\"\\n\"); N2=1; 4. 输出斐波拉契数列:1,1,2,3,5,8……的前n项的和。 ※※ #include int i; long int f1,f2; } f1=1; f2=1; printf(\"%161d%161d\for(i=2;i<=20;i++) { } f1=f1+f2; f2=f1+f2; printf(\"%161d%161d\if(i%2==0) printf(\"\"); 5. 猴子爬山问题求解。 一个顽猴在一座有30级台阶的小山上爬山跳跃,猴子上山一步可跳1级,或跳3级,试求上山的30级台阶有多少种不同的爬法。 ※※ #include int i,n; long f[1000]; printf(\"请输入台阶总数n:\"); scanf(\"%d\ f[1]=1; f[2]=1; f[3]=2; for(i=4;i<=n;i++) } f[i]=f[i-1]+f[i-3]; printf(\"猴子爬%d级台阶共有%1d种不同的爬法\\n\ 6. 水手分椰子问题。 五个水手来到一个岛上,采了一堆椰子。一段时间后,第一个水手醒来,悄悄地将椰子等分成五份,多出一个椰子,便给了旁边的猴子,然后自己藏起一份,再将剩下的椰子重新合在一起。不久,第二名水手醒来,同样将椰子等分成五份,恰好也多出一个,也给了猴子。然后自己也藏起一份,再将剩下的椰子重新合在一起。以后每个水手都如此分了一次并都藏起一份,也恰好都把多出的一个给了猴子。第二天,五个水手醒来,把剩下的椰子分成五份,恰好又多出一个,给了猴子。原来这堆椰子至少有多少个? ※※ #include double k,y[7],x; i=1; k=1.0; y[1]=k; while(i<=5) { } x=5*y[1]+1; printf(\"至少有椰子数为%.01f\\n\} i++; y[i]=(4*y[i-1])/5; if(y[i]!=(int)y[i]) { } k=k+1.0; y[1]=k; i=1; 7. 穷举算法。某地搬砖,男人一人搬3块,女人一人搬2块,小孩两人搬一块,共有45人和45块砖,问有多少种搬法并输出? #include int x,g,z; for (x=0;x<=45;x++) } for(g=0;g<=45;g++) for(z=0;z<=45;z++) if(x+g+z==45 && 6*x+4*g+z==90) printf(\"男人:%d个,女人:%d个,孩子:%d个\\n\ 8. 求解1-10000中所有水仙花数字,每行输出5个数。如153=13+53+33,153就是水仙花数字。 # include int a,b,c,d,e,i; for(i=1;i<=10000;i++) { a=i/10000; b=i/1000%10; c=i/100%10; d=i/10%10; e=i%10; if(a*a*a+b*b*b+c*c*c+d*d*d+e*e*e==i) printf(\"水仙化数字:%6d\\n\} } 9. 验证哥德猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。例如6=3+3,8=3+5,。。。,18=5+13。将6-100之间的偶数都表示成两个素数之和,打印时一行打印5组。要求定义和调用函数prime(m)判断m是否是素数,当m是素数时返回1,否则返回0。 #include int i,j,count=0; for(i=6;i<=100;i+=2) { for(j=3;j<=i/2;j++) { if((j)&&(i-j)) { printf(\"%d=%d+%d\\count++; if(count==5) { printf(\"\\n\"); count=0; } break; } } } return 0; } int prime(int m) { int i; for(i=2;i<=m-1;i++) { if(m%i==0) return 0; } return 1; } 10.案例提出: 日本数学家桥本吉彦教授于1993年10月在我国山东举行的中日美三国数学教育研讨会上提出以下填数趣题:把1,2,…,9•这9个数字填入下式的9个方格中(数字不得重复),使下面分数等式成立: □□□ ── + ── = ── □□□□□□ 桥本教授当即给出了一个解答。这一填数趣题的解是否唯一?如果不唯一究竟有多少个解?试求出所有解答 (等式左边两个分数交换次序只算一个解答)。 #include {int g,i,k,s,a[10]; long m1,m2,m3; i=1;a[1]=1;s=0; while (1) {g=1; for(k=i-1;k>=1;k--) if(a[i]==a[k]) {g=0;break;} // 两数相同,标记g=0 if(i==9 && g==1 && a[1]if(a[1]*m2*m3+a[4]*m1*m3==a[7]*m1*m2) // 判断等式 {s++;printf(\"(-) \printf(\"%d/%ld+%d/\printf(\"%ld=%d/%ld \if(s%2==0) printf(\"\\n\"); } } if(i< 9 && g==1) {i++;a[i]=1;continue;} // 不到9个数,往后继续 while(a[i]==9 &&i>1) i--; // 往前回溯 if(a[i]==9 &&i==1) break; else a[i]++; // 至第1个数为9结束 } printf(\" 共以上%d个解。\\n\} 11.有一个3*4的矩阵,求所有元素中的最小值和最大值,并输出。 提示:定义矩阵int a[3][4]={{11,23,15,37},{29,48,6,8},{15,17,34,12}} #include 12.编写程序,实现百钱百鸡问题:某人有100元钱,大公鸡5元钱1只,大母鸡3元钱1只,小鸡仔1元钱3只,问100元钱买100只鸡,大公鸡、母鸡和小鸡仔各有多少只? #include int i,j; for (i = 3; i< 100; i += 3) { for (j = 1; j < 100; j++) { if (i / 3 + j * 3 + (100 - i - j) * 5 == 100 && 100 - i - j > 0) { printf(\"小鸡%d只,母鸡%d只,公鸡%d只。\\n\ } } } } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务