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

本文解析了多个经典编程问题,包括兔子繁殖数量计算、素数判断、水仙花数寻找、正整数质因数分解及成绩等级评定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【程序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、付费专栏及课程。

余额充值