好文档 - 专业文书写作范文服务资料分享网站

C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构

天下 分享 时间: 加入收藏 我要投稿 点赞

sum=sum+temp; }

printf(\

return 0; }

5.换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,每种硬币至少有一枚。输入金额,问有哪几种换法?针对每一种换法,输出各种面额硬币的数量和硬币的总数量。试编写相应程序。 解答:

#include int main(void) {

int money,money1,money2,sum;

printf(\ scanf(\ sum=0;

for(money1=1;money1<=8;money1++)

for(money2=1;money2<=3;money2++) if(money1+money2*2+5==money) { sum=money1+money2+1; if(money2>money1)

printf(\

oney1,money2,sum);

else

printf(\

oney2,money1,sum); }

return 0; }

6.输出水仙花数。输入一个正整数n(3≤n≤7)输出所有n位水仙花数。水仙花数是指一个n位正整数,它各位数字的n次幂之和等于它本身。例如 153 的各位数字的立方和是 :13+53+33=153。试编写相应程序。 解答:

#include #include int main(void) {

int n,i,t,m,sum,j,k;

printf(\ scanf(\ for(j=0,i=1;i<=n;i++)

j=j*10+9;

for(k=1,i=1;i

for(;k<=j;k++){ t=k; sum=0;

while(k!=0){ m=k; k=k;

sum=sum+pow(k,n); k=m/10; } k=t;

if(sum==t)

printf(\ }

return 0; }

7.求最大公约数和最小公倍数。输入两个正整数m和n(m≤1000,n≤1000),求其最大公约数和最小公倍数。试编写相应程序。 解答:

#include int main(void) {

int m,n,j,k; do{

printf(\ scanf(\ printf(\ scanf(\ }while(m<0||n<0); j=m;

while(j%n!=0) j=j+m; k=(m*n)/j;

printf(\最小公倍数是%d,最大公约数是%d\\n\ return 0; }

8.高空坠球。皮球从height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹……如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输出保留1位小数。试编写相应程序。 解答:

#include

int main(void) {

double distance, height; int i, n;

printf(\ scanf(\ printf(\ scanf(\ if(n == 0)

distance = 0; else {

for(int i = 1; i <= n; i++){ height = height/2; distance += 3*height; } }

printf(\第%d次落地时,共经过距离为%0.1lf.\\n\ printf(\第%d次落地后的反弹高度为%0.1lf.\\n\

return 0; }

9.打菱形星号“*”图案。输入一个正整数n(n为奇数),打印一个高度为n的“*”菱形图案。例如,当n为7时,打印出以下图案。试编写相应程序。

* * * * * * * * * * * * * * * * * * * * * * * * *

解答:

#include int main(void) {

int i,j,n;

printf(\ scanf(\ for(i=1;i<=n;i=i+2){ for(j=1;j<=n-i;j++) printf(\

for(j=1;j<=i;j++) printf(\ putchar('\\n'); }

for(i=1;i<=n-2;i=i+2){ for(j=1;j<=i+1;j++) printf(\

for(j=1;j<=n-i-1;j++) printf(\ putchar('\\n'); }

return 0; } 或

#include #include int main(void) {

int i,j,n;

printf(\ scanf(\ for(i=1;i<=n;i++){

for(j=1;j<=fabs(n+1-2*i)/2;j++) printf(\

for(j=1;j<=n-fabs(n+1-2*i);j++) printf(\ putchar('\\n'); }

return 0; }

10.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第n天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少桃子?试编写相应程序。(提示:采取逆向思维的方法,从后往前推断。) 解答:

#include int main(void) {

int i, peach;

peach = 1;

for(i = 1; i < n; i++){

peach = 2 * peach + 1;

}

printf(\

return 0; }

11. 兔子繁衍问题。一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到n对?输入一个不超过10000的正整数n,输出兔子总数达到n最少需要的月数。试编写相应程序。 解答:

#include int main(void) {

int n,mouth,x1=1,x2=1,x;

printf(\ scanf(\ mouth=1; x=0;

while(x<=n){ x=x1+x2; x1=x2; x2=x; mouth++; }

printf(\

return 0; }

C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构

sum=sum+temp;}printf(\return0;}5.换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,每种硬币至少有一枚。输入金额,问有哪几种换法?针对每一种换法,输出各种面额硬币的数量和硬币的总数量。试编写相应程序。解答:#inc
推荐度:
点击下载文档文档为doc格式
21dxv94n3g2xc786b4a94zk8m0hvru00s1d
领取福利

微信扫码领取福利

微信扫码分享