c语言程序设计课后习题答案

例1、求100到999之间的所有水仙花数。
#include <stdio.h>
void main(void)
{
int n,b,s,g;
for(n=100;n<=999;n++){
b = n/100;
s = (n-b*100)/10;
g = (n%100)%10;
if( b*b*b+s*s*s+g*g*g == n)printf("%d\n",n);
}
}
例2、求两个整数的最大公约数和最小公倍数
gcd(x,y) = gcd(x, x% y )

lcm(x,y) =(x×y)/gcd(x,y)

#include <stdio.h>
void main(void)
{
int x,y,r,n,gcd,lcm;
scanf("%d%d",&x,&y);
n = x*y;
r=x%y;
gcd=y;
while(r!=0)
{
x=y;
y=r;
r=x%y;
gcd=y;
}
lcm = n/gcd;
printf("gcd=%d lcm=%d\n",gcd,lcm);
}

例3、将一张面值是100元的钱等值转换为5元、1元和0.5元的零钞,要求每种零钞至少一张,求所有的兑换方式。
#include <stdio.h>
void main(void)
{
int i,j,k;
for(i=1;i<=20;i++){
for(j=1;j<=100;j++){
for(k=1;k<=200;k++){
if( i*5+j+0.5*k == 100 )
printf("%d %d %d\n",i,j,k);
}
}
}
}
例4、求爱因斯坦数学问题:有一条长台阶,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,则最后正好一阶不剩。求台阶长度。
#include <stdio.h>
void main(void)
{
int n;
n=7;
while(1){
if( (n%2==1) && (n%3==2) &&
(n%5==4) && (n%6==5) )break;
n=n+7;
}
printf("%d\n",n);
}
例5、验证歌德巴赫猜想(任意一个大于6的偶数都可以分解为两个素数之和),验证范围是6~2000的偶数。
#include <stdio.h>
#include <math.h>
void main(void){
int n,i,k1,k2;
int isPrimeFlag1,isPrimeFlag2;
for(n=6;n<=100;n+=2){
for(k1=3;k1<n;k1+=2){//依次取大于n的奇数
isPrimeFlag1=1; //假设是素数
for(i=3;i<=sqrt(k1);i+=2){
if(k1%i==0){isPrimeFlag1=0;break;}
}
if( isPrimeFlag1==0 )continue;
k2=n-k1;
isPrimeFlag2=1; //假设k2是素数
for(i=3;i<=sqrt(k2);i+=2){
if(k2%i==0){isPrimeFlag2=0;break;}
}
if(isPrimeFlag1 && isPrimeFlag2 ){
printf("%d=%d+%d\n",n,k1,k2);
break;
}
}
}
}
例6、已知一正整数递增等差数列,前5项的和是25,前5项的积是945,根据上述条件,输出该数列的前10项。
#include <stdio.h>
void main(void)
{
int a,d,i,s,r,x;
for(a=1;a<5;a++){
for(d=1;d<5;d++){
s=0; r=1;
for(i=0;i<5;i++){
x=a+d*i; s=s+x; r=r*x;
}
if(s==25 && r==945 )goto loop_exit;
}
}
loop_exit:
for(i=0;i<19;i++){
x=a+d*i; printf("%d\n",x);
}
}
例7、A、B、C、D和E合伙捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方休息。日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五

你可能喜欢

  • C程序设计(第四版)谭浩强
  • 语言分析
  • 全国计算机等级考试二级C语言
  • c语言程序设计谭浩强答案
  • 计算机二级考试试题
  • 新视野英语读写教程第二版答案
  • 循环结构程序设计

c语言程序设计课后习题答案相关文档

最新文档

返回顶部