经典C源程序100例 (11-15)

【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
2.程序源代码: 
main()
{
    
long  f1,f2;
    
int  i;
    f1
= f2 = 1 ;
    
for (i = 1 ;i <= 20 ;i ++ )
         { printf(
" %12ld %12ld " ,f1,f2);
               
if (i % 2 == 0 ) printf( " " ); /* 控制输出,每行四个 */
               f1
= f1 + f2;  /* 前两个月加起来赋值给第三个月 */
               f2
= f1 + f2;  /* 前两个月加起来赋值给第三个月 */
             }
    }

【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
      则表明此数不是素数,反之是素数。       
2.程序源代码:

#include  " math.h "
main()
{
     
int  m,i,k,h = 0 ,leap = 1 ;
     printf(
" " );
     
for (m = 101 ;m <= 200 ;m ++ )
      { k
= sqrt(m + 1 );
             
for (i = 2 ;i <= k;i ++ )
               
if (m % i == 0 )
                
          {
              leap
= 0 ;
              
break ;
          }
             
if (leap)
          {
              printf(
" %-4d " ,m);
              h
++ ;
                      
if (h % 10 == 0 )
                      printf(
" " );
                     
          }
             leap
= 1 ;
            }
     printf(
" The total is %d " ,h);
}

【程序13】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
        1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
        2.程序源代码:

 main()
        {
            
int  i,j,k,n;
            printf(
" 'water flower'number is: " );
             
for (n = 100 ;n < 1000 ;n ++ )
             {
                  i
= n / 100 ; /* 分解出百位 */
                  j
= n / 10 % 10 ; /* 分解出十位 */
                  k
= n % 10 ; /* 分解出个位 */
                  
if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k)
                   {
                       printf(
" %-5d " ,n);
                       }
                 }
            printf(
" " );
        }

【程序14】
        题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
       
                程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
                (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
                (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
                 重复执行第一步。
                (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
               
                2.程序源代码:

main()
                {
                    
int  n,i;
                    printf(
" please input a number: " );
                    scanf(
" %d " , & n);
                    printf(
" %d= " ,n);
                    
for (i = 2 ;i <= n;i ++ )
                         {
                              
while (n != i)
                              {
                                   
if (n % i == 0 )
                                   { printf(
" %d* " ,i);
                                            n
= n / i;
                                           }
                                   
else
                                    
break ;
                                  }
                        }
                        printf(
" %d " ,n);
                }

【程序15】
                题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
                   60分以下的用C表示。
                1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
                2.程序源代码:

main()
                {
                     
int  score;
                     
char  grade;
                     printf(
" please input a score " );
                     scanf(
" %d " , & score);
                     grade
= score >= 90 ? ' A ' :(score >= 60 ? ' B ' : ' C ' );
                     printf(
" %d belongs to %c " ,score,grade);
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值