华为OJ平台——将真分数分解为埃及分数

by admin on 2020年1月30日

成员为1
的分数称为Egypt分数,现输入三个真分数,请将该分数分解为埃及分数。
如:8/11=1/2+1/5+1/55+1/110。

标题陈述:

【程序1】
问题:有1、2、3、4个数字,能整合多少个互不相符且无重复数字的几人数?都是微微?
1.主次解析:可填在百位、10个人、个位的数字皆以1、2、3、4。组成全部的排列后再去
      掉不满意条件的排列。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,k;
  printf(“n”);
  for(i=1;i<5;i++) /*以下为三重循环*/
    for(j=1;j<5;j++)
      for (k=1;k<5;k++)
      {
        if (i!=k&&i!=j&&j!=k) /*确定保证i、j、k四人互不相符*/
        printf(“%d,%d,%dn”,i,j,k);
      }
  getch();

*主题材料浅析与算法设计
若真分数的积极分子a能整除分母b,则真分数通过化简就能够收获Egypt分数,若真分数的分子不可能整除分母,则能够从原先的分数中解释出一个分母为b/a+1的Egypt分数。用这种办法将剩余部分屡屡解释,最后可得到结果。

  分子为1的分数称为Egypt分数。现输入三个真分数(分子比分母小的分数,叫做真分数卡塔尔国,请将该分数分解为埃及分数。如:8/11 = 八分之四+1/5+1/55+1/110。

}

【程序2】
难题:公司发放的奖金依据收益提成。受益(I卡塔尔国低于或等于10万元时,奖金可提十三分之大器晚成;利润高
   于10万元,低于20万元时,低于10万元的生机勃勃对按拾壹分生机勃勃提成,高于10万元的一些,可可提
   成7.5%;20万到40万里边时,高于20万元的片段,可提成5%;40万到60万里面时当先
   40万元的某个,可提成3%;60万到100万中间时,高于60万元的有的,可提成1.5%,高于
   100万元时,当先100万元的一些按1%提成,从键盘输入前一个月获益I,求应发放奖金总额?
1.主次解析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  long int i;
  int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
  scanf(“%ld”,&i); 
  bonus1=100000*0. 1;
  bonus2=bonus1+100000*0.75;
  bonus4=bonus2+200000*0.5;
  bonus6=bonus4+200000*0.3;
  bonus10=bonus6+400000*0.15;
  if(i<=100000)
    bonus=i*0.1;
    else if(i<=200000)
      bonus=bonus1+(i-100000)*0.075;
        else if(i<=400000)
          bonus=bonus2+(i-200000)*0.05;
            else if(i<=600000)
              bonus=bonus4+(i-400000)*0.03;
                else if(i<=1000000)
                  bonus=bonus6+(i-600000)*0.015;
                    else
                      bonus=bonus10+(i-1000000)*0.01;
  printf(“bonus=%d”,bonus);
  getch(); 

*次第表达与注释
/*安安注:对源程序作多少改正,重若是增加了二个外循环,能够一向总结五个真分数的Egypt分数,按Ctrl-C退出。具体的算法本人未有当真看,反常请建议,谢谢*/

输入:

}

【程序3】
主题材料:贰个大背头,它丰裕100后是一个截然平方数,再增添168又是几个通通平方数,请问该数是不怎么?
1.主次解析:在10万之内推断,先将该数加上100后再开药方,再将该数加上268后再开药方,假使开药方后
      的结果满意如下条件,就是结果。请看具体解析:
2.程序源代码:
#include “math.h”
#include “stdio.h”
#include “conio.h”
main()
{
  long int i,x,y,z;
  for (i=1;i<100000;i++)
  {
    x=sqrt(i+100); /*x为丰盛100后开方后的结果*/
    y=sqrt(i+268); /*y为再加上168后开药方后的结果*/
    if(x*x==i+100&&y*y==i+268)
/*举例二个数的平方根的平方等于该数,那申明此数是一心平方数*/
    printf(“n%ldn”,i);
  }
  getch();

#include<stdio.h>
int main(void)
{
long int a,b,c;
while(true)
{
printf(“Please enter a optional fraction(a/b):”);
scanf(“%ld/%ld”,&a,&b); /*输入分子a和分母b*/
printf(“It can be decomposed to:”);
while(true)
{
if(b%a) /*若分子不可能整除分母*/
c=b/a+1; /*则解释出八个分母为b/a+1的埃及分数*/
else{ c=b/a; a=1;} /*再不,输出化简后的真分数(Egypt分数卡塔尔*/
if(a==1)
{
printf(“1/%ldn”,c);
break; /*a为1表明甘休*/
}
else
printf(“1/%ld + “,c);
a=a*c-b; /*求出余数的成员*/
b=b*c; /*求出余数的分母*/
if(a==3) /*若余数为3,输出最后五个Egypt分数*/
{ printf(“1/%ld + 1/%ldn”,b/2,b); break;}
}
}

  输入三个真分数,String型

}

【程序4】
主题素材:输入某年某月某日,判定这一天是那年的第几天?
1.主次深入分析:以二月5日为例,应该先把前五个月的加起来,然后再加上5天即二零一六年的第几天,特殊
      景况,闰年且输入月份大于3时需寻思多加一天。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int day,month,year,sum,leap;
  printf(“nplease input year,month,dayn”);
  scanf(“%d,%d,%d”,&year,&month,&day);
  switch(month) /*先总计某月以前月份的总天数*/
  {
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:printf(“data error”);break;
  }
  sum=sum+day; /*再增长某天的天数*/
  if(year%400==0||(year%4==0&&year%100!=0)) /*认清是还是不是闰年*/
    leap=1;
  else
    leap=0;
  if(leap==1&&month>2) /*假如是闰年季月份超越2,总天数应该加一天*/
    sum++;
  printf(“It is the %dth day.”,sum);
  getch(); 

return 0;
}

输出:

}

【程序5】
难题:输入四个整数x,y,z,请把那四个数由小到大出口。
1.前后相继解析:大家想艺术把最小的数放到x上,先将x与y进行相比,假诺x>y则将x与y的值实行置换,
      然后再用x与z进行相比,倘使x>z则将x与z的值实行置换,那样能使x最小。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int x,y,z,t;
  scanf(“%d%d%d”,&x,&y,&z);
  if (x>y)
    {t=x;x=y;y=t;} /*交换x,y的值*/
  if(x>z)
    {t=z;z=x;x=t;} /*交换x,z的值*/
  if(y>z)
    {t=y;y=z;z=t;} /*交换z,y的值*/
  printf(“small to big: %d %d %dn”,x,y,z);
  getch(); 

*运作结果
Please enter a optional fraction (a/b): 1/6
It can be decomposed to: 1/6
Please enter a optional fraction (a/b): 20/33
It can be decomposed to: 1/2+1/10+1/165
Please enter a optional fraction (a/b): 10/89
It can be decomposed to: 1/9+1/801
Please enter a optional fraction (a/b): 19/99
It can be decomposed to: 1/6+1/40+1/3960
Please enter a optional fraction (a/b): 8/87
It can be decomposed to: 1/11+1/957
……(按ctrl-c退出)

  输出分解后的string

}

【程序6】
题目:用*号出口字母C的图腾。
1.程序解析:可先用’*’号在纸上写出字母C,再分行输出。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  printf(“Hello C-world!n”);
  printf(” ****n”);
  printf(” *n”);
  printf(” * n”);
  printf(” ****n”);
  getch(); 

思路:

}

【程序7】
主题材料:输出特殊图案,请在c遇到中运维,看大器晚成看,Very Beautiful!
1.主次解析:字符共有2五十几个。分裂字符,图形不肖似。      
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  char a=176,b=219;
  printf(“%c%c%c%c%cn”,b,a,a,a,b);
  printf(“%c%c%c%c%cn”,a,b,a,b,a);
  printf(“%c%c%c%c%cn”,a,a,b,a,a);
  printf(“%c%c%c%c%cn”,a,b,a,b,a);
  printf(“%c%c%c%c%cn”,b,a,a,a,b);
  getch(); 

参考

}

【程序8】
题目:输出9*9口诀。
1.顺序剖判:分行与列思忖,共9行9列,i调整行,j调节列。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,result;
  printf(“n”);
  for (i=1;i<10;i++)
  {
    for(j=1;j<10;j++)
    {
      result=i*j;
      printf(“%d*%d=%-3d”,i,j,result); /*-3d表示左对齐,占3位*/
    }
    printf(“n”); /*每意气风发行后换行*/
  }
  getch();

设a、b为互质正整数,a<b 分数a/b
可用以下的步骤分解成若干个单位分数之和:

}

【程序9】
主题素材:须要输出国际象棋棋盘。
1.前后相继深入分析:用i调控行,j来调控列,依据i+j的和的成形来调节输出黑方格,依然白方格。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j;
  for(i=0;i<8;i++)
  {
    for(j=0;j<8;j++)
      if((i+j)%2==0)
        printf(“%c%c”,219,219);
      else
        printf(”  “);
    printf(“n”);
  }
  getch(); 
}
============================================================== 
【程序10】
主题素材:打印楼梯,同期在阶梯上方打字与印刷多个笑颜。 
1.顺序解析:用i调控行,j来调控列,j依照i的扭转来支配输出黑方格的个数。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j;
  printf(“11n”); /*输出几个笑颜*/
  for(i=1;i<11;i++)
  {
    for(j=1;j<=i;j++)
      printf(“%c%c”,219,219);
    printf(“n”);
  }
  getch(); 
}

  .:.:经典c程序100例==11–20 :.:. 

    经典c程序100例==11–20
【程序11】
标题:古典难题:有风流罗曼蒂克对兔子,从降生后第7个月起各种月都生后生可畏对兔子,小兔子长到第二个月
   后每一个月又生大器晚成对兔子,倘使兔子都不死,问各种月的兔子总量为多少?
1.程序剖判: 兔子的法规为数列1,1,2,3,5,8,13,21….
2.程序源代码:
#include “stdio.h”
#include “conio.h”
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(“n”); /*决定输出,每行八个*/
    f1=f1+f2; /*前多少个月加起来赋值给第六个月*/
    f2=f1+f2; /*前多少个月加起来赋值给首个月*/
  }
  getch();

步骤一: 用b 除以a,得商数q1 及余数r1。(r1=b – a*q1)

}

【程序12】
标题:判定101-200之间有个别许个素数,并出口全数素数。
1.先后深入分析:剖断素数的章程:用贰个数分别去除2到sqrt(这一个数卡塔尔,如若能被整除,
      则表明此数不是素数,反之是素数。       
2.程序源代码:
#include “stdio.h”
#include “conio.h”
#include “math.h”
main()
{
  int m,i,k,h=0,leap=1;
  printf(“n”);
  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(“n”);
    }
    leap=1;
  }
  printf(“nThe total is %d”,h);
  getch();

步骤二:把a/b 记作:a/b=1/(q1+1)+(a-r)/b(q1+1)

}

【程序13】
标题:打字与印刷出具备的“玉玲珑数”,所谓“姚女子花剑数”是指二个二位数,其各位数字立方和非常该数
   自个儿。举个例子:153是二个“天葱数”,因为153=1的三遍方+5的三次方+3的一回方。
1.主次深入分析:利用for循环调控100-9玖拾玖个数,每种数分解出个位,10个人,百位。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,k,n;
  printf(“‘water flower’number is:”);
  for(n=100;n<1000;n++)
  {
    i=n/100;/*降解出百位*/
    j=n/10%10;/*讲明出11个人*/
    k=n%10;/*解释出个位*/
    if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
      printf(“%-5d”,n);
  }
  getch();

步骤三:重复步骤2,直到分解实现

}

【程序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.程序源代码:
/* zheng int is divided yinshu*/
#include “stdio.h”
#include “conio.h”
main()
{
  int n,i;
  printf(“nplease input a number:n”);
  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);
  getch();

3/7=1/3+2/21=1/3+1/11+1/231

}

【程序15】
难点:利用标准运算符的嵌套来完结此题:学习成绩>=90分的同校用A表示,60-89分之间的用B表示,
   60分以下的用C表示。
1.程序深入分析:(a>b卡塔尔国?a:b这是规范化运算符的主干例子。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int score;
  char grade;
  printf(“please input a scoren”);
  scanf(“%d”,&score);
  grade=score>=90?’A’:(score>=60?’B’:’C’);
  printf(“%d belongs to %c”,score,grade);
  getch();

13/23=1/2+3/46=1/2+1/16+1/368

}

【程序16】
主题素材:输入四个正整数m和n,求其最大合同数和最小公倍数。
1.顺序解析:利用辗除法。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int a,b,num1,num2,temp;
  printf(“please input two numbers:n”);
  scanf(“%d,%d”,&num1,&num2);
  if(num1<num2)/*换来多少个数,使大数放在num1上*/
  {
    temp=num1;
    num1=num2;
    num2=temp;
  }
  a=num1;b=num2;
  while(b!=0)/*接纳辗除法,直到b为0甘休*/
  {
    temp=a%b;
    a=b;
    b=temp;
  }
  printf(“gongyueshu:%dn”,a);
  printf(“gongbeishu:%dn”,num1*num2/a);
  getch();

以上实际是数学家斐波这契提议的大器晚成种求解Egypt分数的贪欲算法,正确的算法表述应该是这么的:

}

【程序17】
标题:输入风度翩翩行字符,分别总结出此中拉脱维亚语字母、空格、数字和其他字符的个数。
1.程序深入分析:利用while语句,条件为输入的字符不为’n’.
      
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  char c;
  int letters=0,space=0,digit=0,others=0;
  printf(“please input some charactersn”);
  while((c=getchar())!=’n’)
  {
    if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)
      letters++;
      else if(c==’ ‘)
        space++;
        else if(c>=’0’&&c<=’9′)
          digit++;
        else
          others++;
  }
  printf(“all in all:char=%d space=%d digit=%d others=%dn”,letters,
  space,digit,others);
  getch();

设某些真分数的积极分子为a,分母为b;

}

【程序18】
难点:求s=a+aa+aaa+aaaa+aa…a的值,当中a是贰个数字。比如2+22+222+2222+22222(那个时候
   共有5个数相加卡塔尔,多少个数相加有键盘调节。
1.程序解析:关键是计算出每大器晚成项的值。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int a,n,count=1;
  long int sn=0,tn=0;
  printf(“please input a and nn”);
  scanf(“%d,%d”,&a,&n);
  printf(“a=%d,n=%dn”,a,n);
  while(count<=n)
  {
    tn=tn+a;
    sn=sn+tn;
    a=a*10;
    ++count;
  }
  printf(“a+aa+…=%ldn”,sn);
  getch();

把b除以a的商部分加1后的值作为Egypt分数的某一个分母c;

}

【程序19】
标题:叁个数假使刚巧等于它的因子之和,那几个数就称为“完数”。比方6=1+2+3.编制程序
   寻找1000以内的具有完数。

  1. 次第解析:请参谋程序<–上页程序14. 
    2.程序源代码:
    #include “stdio.h”
    #include “conio.h”
    main()
    {
      static int k[10];
      int i,j,n,s;
      for(j=2;j<1000;j++)
      {
        n=-1;
        s=j;
        for(i=1;i<j;i++)
        {
          if((j%i)==0)
          {
            n++;
            s=s-i;
            k[n]=i;
          }
        }
        if(s==0)
        {
          printf(“%d is a wanshu”,j);
          for(i=0;i<n;i++)
          printf(“%d,”,k);
          printf(“%dn”,k[n]);
        }
      }
      getch();
    }
    ============================================================== 
    【程序20】
    难点:一球从100米中度自由落下,每一次一败涂地后反跳回原中度的二分一;再落下,求它在
       第拾二次一败涂地时,共通过多少米?第十次反弹多高?
    1.程序分析:见上边注释
    2.程序源代码:
    #include “stdio.h”
    #include “stdio.h”
    main()
    {
      float sn=100.0,hn=sn/2;
      int n;
      for(n=2;n<=10;n++)
      {
        sn=sn+2*hn;/*第n次一败涂地时共通过的米数*/
        hn=hn/2; /*第n次反跳高度*/
      }
      printf(“the total of road is %fn”,sn);
      printf(“the tenth is %f metern”,hn);
      getch();
    }

  .:.:经典c程序100例==21–30:.:. 

    经典c程序100例==21–30
【程序21】
主题素材:猴子吃桃难题:猴子第一天摘下多少个毛桃,当即吃了四分之二,还不瘾,又多吃了三个
   第二天午夜又将剩余的寿星桃吃掉十分之五,又多吃了贰个。以往每一天深夜都吃了明日剩下
   的百分之三十零贰个。到第10天晚上想再吃时,见只剩下八个水蜜桃了。求第一天共摘了不怎么。
1.主次解析:接纳逆向思维的措施,从后往前猜度。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int day,x1,x2;
  day=9;
  x2=1;
  while(day>0)
  {
    x1=(x2+1)*2;/*第一天的光桃数是第2天黄桃数加1后的2倍*/
    x2=x1;
    day–;
  }
  printf(“the total is %dn”,x1);
  getch();

将a乘以c再减去b,作为新的a;

}

【程序22】
难题:八个乒球队举行比赛,各出五个人。甲队为a,b,c几个人,乙队为x,y,z五人。已抽签决定
   比赛名单。有人向队员了然竞技的名册。a说他不和x比,c说他不和x,z比,请编制程序序搜索
   三队赛手的花名册。 
1.主次解析:判定素数的办法:用一个数分别去除2到sqrt(那几个数State of Qatar,倘若能被整除,
      则申明此数不是素数,反之是素数。       
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
  for(i=’x’;i<=’z’;i++)
    for(j=’x’;j<=’z’;j++)
    {
      if(i!=j)
      for(k=’x’;k<=’z’;k++)
      {
        if(i!=k&&j!=k)
        {
          if(i!=’x’&&k!=’x’&&k!=’z’)
            printf(“order is a–%ctb–%ctc–%cn”,i,j,k);
         }
      }
    }
  getch();

将b乘以c,获得新的b;

}

【程序23】 
难题:打字与印刷出如下图案(菱形)
   *
  ***
*****
*******
*****
  ***
   *
1.主次剖判:先把图片分成两部分来对待,前四行一个法则,后三行二个准则,利用再次
      for循环,第后生可畏层调控行,第二层调节列。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,k;
  for(i=0;i<=3;i++)
  {
    for(j=0;j<=2-i;j++)
      printf(” “);
    for(k=0;k<=2*i;k++)
      printf(“*”);
    printf(“n”);
  }
  for(i=0;i<=2;i++)
  {
    for(j=0;j<=i;j++)
      printf(” “);
    for(k=0;k<=4-2*i;k++)
      printf(“*”);
    printf(“n”);
  }
  getch();

要是a大于1且能整除b,则最终三个分母为b/a;算法甘休;

}

【程序24】 
难点:有一分数连串:2/1,3/2,5/3,8/5,13/8,21/13…求出那么些数列的前20项之和。
1.主次剖判:请抓住分子与分母的变化规律。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int n,t,number=20;
  float a=2,b=1,s=0;
  for(n=1;n<=number;n++)
  {
    s=s+a/b;
    t=a;a=a+b;b=t;/*那风流罗曼蒂克部分是前后相继的首要,请读者猜猜t的效益*/
  }
  printf(“sum is %9.6fn”,s);
  getch();

要么,倘诺a等于1,则,最后三个分母为b;算法结束;

}

【程序25】 
题目:求1+2!+3!+…+20!的和
1.前后相继解析:此程序只是把累计产生了累乘。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  float n,s=0,t=1;
  for(n=1;n<=20;n++)
  {
    t*=n;
    s+=t;
  }
  printf(“1+2!+3!…+20!=%en”,s);
  getch();

再不重复上边的手续。

}

【程序26】 
标题:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i;
  int fact();
  for(i=0;i<5;i++)
  printf(“40:%d!=%dn”,i,fact(i));
  getch();
}
int fact(j)
int j;
{
  int sum;
  if(j==0)
    sum=1;
  else
    sum=j*fact(j-1);
  return sum;

备注:事实上,后边决断a是或不是超过1和a是或不是等于1的多少个决断能够合在一同,及看清b%a是或不是等于0,最终壹个分母为b/a,明显是不利的。

}

【程序27】 
标题:利用递归函数调用方式,将所输入的5个字符,以相反顺序打字与印刷出来。
1.主次剖判:
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i=5;
  void palin(int n);
  printf(“40:”);
  palin(i);
  printf(“n”);
  getch();
}
void palin(n)
int n;
{
  char next;
  if(n<=1)
  {
    next=getchar();
    printf(“n:”);
    putchar(next);
  }
  else
  {
    next=getchar();
    palin(n-1);
    putchar(next);
  }

 

}

【程序28】 
主题材料:有5个人坐在一齐,问第五人有个别岁?他说比首个人大2岁。问第三个人年龄,他说比第
   3个人民代表大会2岁。问第三人,又说比第2人民代表大会两岁。问第2民用,说比第3位大两岁。最后 
   问第一个体,他身为10岁。请问第五个人多大?
1.程序剖判:利用递归的措施,递归分为回推和递推五个品级。要想清楚第四个人年龄,需清楚
      第多少人的年龄,依次类推,推到第一人(10岁),再往回推。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
age(n)
int n;
{
  int c;
  if(n==1) c=10;
  else c=age(n-1)+2;
  return(c);
}
main()
{
  printf(“%d”,age(5));
  getch();

图片 1图片 2

}

【程序29】 
标题:给叁个十分少于5位的正整数,供给:生龙活虎、求它是二位数,二、逆序打字与印刷出各位数字。
1.
顺序分析:学会分解出每壹位数,如下解释:(这里是风姿罗曼蒂克种简易的算法,师范专校数002班赵鑫提供卡塔尔 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main( )
{
  long a,b,c,d,e,x;
  scanf(“%ld”,&x);
  a=x/10000;/*解说出万位*/
  b=x%10000/1000;/*释疑出千位*/
  c=x%1000/100;/*演说出百位*/
  d=x%100/10;/*表明出十一位*/
  e=x%10;/*释疑出个位*/
  if (a!=0) printf(“there are 5, %ld %ld %ld %ld %ldn”,e,d,c,b,a);
  else if (b!=0) printf(“there are 4, %ld %ld %ld %ldn”,e,d,c,b);
    else if (c!=0) printf(” there are 3,%ld %ld %ldn”,e,d,c);
      else if (d!=0) printf(“there are 2, %ld %ldn”,e,d);
        else if (e!=0) printf(” there are 1,%ldn”,e);
  getch();

 1 import java.util.Scanner;
 2 
 3 public class EgyptFraction {
 4 
 5     public static void main(String[] args) {
 6         Scanner cin = new Scanner(System.in) ;    
 7         String in = cin.nextLine() ;
 8         cin.close() ;
 9         
10         String [] strs = in.split("/") ;
11         int  numerator = Integer.parseInt(strs[0]) ;
12         int  denominator = Integer.parseInt(strs[1]) ;
13         
14         System.out.println(resolved(numerator,denominator)) ;
15 
16     }
17 
18     private static String resolved(int numerator, int denominator) {
19         int a = numerator ;
20         int b = denominator ;
21         
22         int q = b/a ;
23         int r = b%a ;
24         StringBuffer res = new StringBuffer() ;
25         while(a != 1){
26             if(r == 0){
27                 a = 1 ;
28                 b = q ;                
29                 continue ;
30             }else{                                
31                 res.append(1);
32                 res.append('/');
33                 res.append(q + 1);
34                 res.append('+');
35                 
36                 a = a - r ;
37                 b = b*(q+1) ;
38                 q = b/a ;
39                 r = b%a ;
40             }
41         }    
42         
43         if(res.length() != 0){
44             res.append(1) ;
45             res.append('/') ;
46             res.append(q) ;
47         }else{
48             res.append(1) ;
49             res.append('/') ;
50             res.append(q) ;
51         }
52     
53         return res.toString() ;
54             
55     }
56 
57 }

}

【程序30】 
标题:多少个5位数,推断它是否回文数。即12321是回文数,个位与万位相像,十个人与千位相似。   
1.前后相继深入分析:同29例
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main( )
{
  long ge,shi,qian,wan,x;
  scanf(“%ld”,&x);
  wan=x/10000;
  qian=x%10000/1000;
  shi=x%100/10;
  ge=x%10;
  if(ge==wan&&shi==qian)/*个位等于万位何况10个人等于千位*/
    printf(“this number is a huiwenn”);
  else
    printf(“this number is not a huiwenn”);
  getch();
}

  .:.:经典c程序100例==31–40:.:. 

    经典c程序100例==31–40
【程序31】
标题:请输入星期几的率先个字母来剖断一下是星期几,借使第叁个假名相仿,则继续
   推断第一个字母。
1.顺序分析:用状态语句相比好,倘若第一个字母相符,则判别用状态语句或if语句判定第贰个假名。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
void main()
{
  char letter;
  printf(“please input the first letter of somedayn”);
  while((letter=getch())!=’Y’)/*当所按字母为Y时才甘休*/
  {
    switch (letter)
    {
      case ‘S’:printf(“please input second lettern”);
      if((letter=getch())==’a’)
        printf(“saturdayn”);
        else if ((letter=getch())==’u’)
          printf(“sundayn”);
          else printf(“data errorn”);【程序1】
标题:有1、2、3、4个数字,能结合多少个有差距且无重复数字的几人数?都以有些?
1.顺序深入分析:可填在百位、十一个人、个位的数字都是1、2、3、4。组成全体的排列后再去
      掉不满意条件的排列。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,k;
  printf(“n”);
  for(i=1;i<5;i++) /*以下为三重循环*/
    for(j=1;j<5;j++)
      for (k=1;k<5;k++)
      {
        if (i!=k&&i!=j&&j!=k) /*确定保证i、j、k几人互不相仿*/
        printf(“%d,%d,%dn”,i,j,k);
      }
  getch();

Code

}

【程序2】
主题素材:集团发放的奖金依据收益提成。利益(I卡塔尔低于或等于10万元时,奖金可提百分之十;利益高
   于10万元,低于20万元时,低于10万元的有的按拾叁分之风流倜傥提成,高于10万元的局部,可可提
   成7.5%;20万到40万之内时,高于20万元的部分,可提成5%;40万到60万期间时超越
   40万元的片段,可提成3%;60万到100万里面时,高于60万元的大器晚成都部队分,可提成1.5%,高于
   100万元时,超越100万元的有的按1%提成,从键盘输入前一个月利益I,求应发放奖金总额?
1.前后相继解析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  long int i;
  int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
  scanf(“%ld”,&i); 
  bonus1=100000*0. 1;
  bonus2=bonus1+100000*0.75;
  bonus4=bonus2+200000*0.5;
  bonus6=bonus4+200000*0.3;
  bonus10=bonus6+400000*0.15;
  if(i<=100000)
    bonus=i*0.1;
    else if(i<=200000)
      bonus=bonus1+(i-100000)*0.075;
        else if(i<=400000)
          bonus=bonus2+(i-200000)*0.05;
            else if(i<=600000)
              bonus=bonus4+(i-400000)*0.03;
                else if(i<=1000000)
                  bonus=bonus6+(i-600000)*0.015;
                    else
                      bonus=bonus10+(i-1000000)*0.01;
  printf(“bonus=%d”,bonus);
  getch(); 

 

}

【程序3】
标题:多少个卡尺头,它助长100后是一个一心平方数,再增添168又是八个完全平方数,请问该数是某个?
1.主次剖析:在10万以内判定,先将该数加上100后再开药方,再将该数加上268后再开药方,要是开药方后
      的结果满意如下条件,便是结果。请看具体深入分析:
2.程序源代码:
#include “math.h”
#include “stdio.h”
#include “conio.h”
main()
{
  long int i,x,y,z;
  for (i=1;i<100000;i++)
  {
    x=sqrt(i+100); /*x为丰裕100后开药方后的结果*/
    y=sqrt(i+268); /*y为再增多168后开药方后的结果*/
    if(x*x==i+100&&y*y==i+268)
/*假设叁个数的平方根的平方等于该数,那表明此数是全然平方数*/
    printf(“n%ldn”,i);
  }
  getch();

 

}

【程序4】
主题材料:输入某年某月某日,推断这一天是今年的第几天?
1.主次解析:以二月5日为例,应该先把前多个月的加起来,然后再拉长5天即二零一两年的第几天,特殊
      情形,闰年且输入月份大于3时需酌量多加一天。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int day,month,year,sum,leap;
  printf(“nplease input year,month,dayn”);
  scanf(“%d,%d,%d”,&year,&month,&day);
  switch(month) /*先总计某月早前月份的总天数*/
  {
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:printf(“data error”);break;
  }
  sum=sum+day; /*再增多某天的运气*/
  if(year%400==0||(year%4==0&&year%100!=0)) /*认清是否闰年*/
    leap=1;
  else
    leap=0;
  if(leap==1&&month>2) /*尽管是闰年天贶份胜出2,总天数应该加一天*/
    sum++;
  printf(“It is the %dth day.”,sum);
  getch(); 

}

【程序5】
难题:输入多少个整数x,y,z,请把那多个数由小到大出口。
1.前后相继深入分析:大家想办法把最小的数放到x上,先将x与y实行比较,假若x>y则将x与y的值实行置换,
      然后再用x与z举办比较,借使x>z则将x与z的值进行调换,那样能使x最小。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int x,y,z,t;
  scanf(“%d%d%d”,&x,&y,&z);
  if (x>y)
    {t=x;x=y;y=t;} /*交换x,y的值*/
  if(x>z)
    {t=z;z=x;x=t;} /*交换x,z的值*/
  if(y>z)
    {t=y;y=z;z=t;} /*交换z,y的值*/
  printf(“small to big: %d %d %dn”,x,y,z);
  getch(); 

}

【程序6】
题目:用*号出口字母C的图画。
1.程序深入分析:可先用’*’号在纸上写出字母C,再分行输出。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  printf(“Hello C-world!n”);
  printf(” ****n”);
  printf(” *n”);
  printf(” * n”);
  printf(” ****n”);
  getch(); 

}

【程序7】
标题:输出特殊图案,请在c意况中运转,看生龙活虎看,Very Beautiful!
1.主次分析:字符共有258个。分裂字符,图形分歧。      
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  char a=176,b=219;
  printf(“%c%c%c%c%cn”,b,a,a,a,b);
  printf(“%c%c%c%c%cn”,a,b,a,b,a);
  printf(“%c%c%c%c%cn”,a,a,b,a,a);
  printf(“%c%c%c%c%cn”,a,b,a,b,a);
  printf(“%c%c%c%c%cn”,b,a,a,a,b);
  getch(); 

}

【程序8】
题目:输出9*9口诀。
1.顺序解析:分行与列思虑,共9行9列,i调控行,j调整列。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,result;
  printf(“n”);
  for (i=1;i<10;i++)
  {
    for(j=1;j<10;j++)
    {
      result=i*j;
      printf(“%d*%d=%-3d”,i,j,result); /*-3d表示左对齐,占3位*/
    }
    printf(“n”); /*每风姿罗曼蒂克行后换行*/
  }
  getch();

}

【程序9】
难题:供给输出国际象棋棋盘。
1.顺序深入分析:用i调控行,j来调控列,依照i+j的和的改换来决定输出黑方格,依旧白方格。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j;
  for(i=0;i<8;i++)
  {
    for(j=0;j<8;j++)
      if((i+j)%2==0)
        printf(“%c%c”,219,219);
      else
        printf(”  “);
    printf(“n”);
  }
  getch(); 
}
============================================================== 
【程序10】
难点:打字与印刷楼梯,同一时候在楼梯上方打字与印刷多个笑颜。 
1.主次分析:用i调整行,j来控制列,j依照i的成形来调节输出黑方格的个数。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j;
  printf(“11n”); /*出口五个笑颜*/
  for(i=1;i<11;i++)
  {
    for(j=1;j<=i;j++)
      printf(“%c%c”,219,219);
    printf(“n”);
  }
  getch(); 
}

  .:.:经典c程序100例==11–20 :.:. 

    经典c程序100例==11–20
【程序11】
主题材料:古典难点:有意气风发对兔子,从出生后第八个月起各类月都生生龙活虎对兔子,小兔子长到第半年
   后各种月又生意气风发对兔子,即便兔子都不死,问各类月的兔子总的数量为多少?
1.主次深入分析: 兔子的原理为数列1,1,2,3,5,8,13,21….
2.程序源代码:
#include “stdio.h”
#include “conio.h”
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(“n”); /*支配输出,每行八个*/
    f1=f1+f2; /*前多个月加起来赋值给第3个月*/
    f2=f1+f2; /*前四个月加起来赋值给第三个月*/
  }
  getch();

}

【程序12】
主题素材:推断101-200里头有稍许个素数,并出口全体素数。
1.程序深入分析:剖断素数的措施:用叁个数分别去除2到sqrt(这几个数卡塔尔(قطر‎,即使能被整除,
      则申明此数不是素数,反之是素数。       
2.程序源代码:
#include “stdio.h”
#include “conio.h”
#include “math.h”
main()
{
  int m,i,k,h=0,leap=1;
  printf(“n”);
  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(“n”);
    }
    leap=1;
  }
  printf(“nThe total is %d”,h);
  getch();

}

【程序13】
主题材料:打字与印刷出全数的“金盏银台数”,所谓“天葱数”是指叁个几人数,其各位数字立方和分外该数
   本身。举个例子:153是三个“雅蒜数”,因为153=1的三回方+5的三回方+3的一次方。
1.顺序深入分析:利用for循环调控100-997个数,每种数分解出个位,十位,百位。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,k,n;
  printf(“‘water flower’number is:”);
  for(n=100;n<1000;n++)
  {
    i=n/100;/*演说出百位*/
    j=n/10%10;/*表明出12个人*/
    k=n%10;/*解说出个位*/
    if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
      printf(“%-5d”,n);
  }
  getch();

}

【程序14】
标题:将叁个正整数分解质因数。比方:输入90,打印出90=2*3*3*5。
前后相继解析:对n进行分解质因数,应先找到一个细小的质数k,然后按下述步骤完毕: 
(1State of Qatar如若这么些质数恰等于n,则印证分解质因数的历程已经终止,打字与印刷出就可以。
(2State of Qatar假若n<>k,但n能被k整除,则应打字与印刷出k的值,并用n除以k的商,作为新的正整数你n,
 重复试行第一步。
(3卡塔尔(قطر‎假若n不可能被k整除,则用k+1作为k的值,重复施行第一步。
2.程序源代码:
/* zheng int is divided yinshu*/
#include “stdio.h”
#include “conio.h”
main()
{
  int n,i;
  printf(“nplease input a number:n”);
  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);
  getch();

}

【程序15】
标题:利用标准运算符的嵌套来变成此题:学习战表>=90分的同校用A代表,60-89分之间的用B表示,
   60分以下的用C表示。
1.主次解析:(a>bState of Qatar?a:b那是标准化运算符的中坚例子。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int score;
  char grade;
  printf(“please input a scoren”);
  scanf(“%d”,&score);
  grade=score>=90?’A’:(score>=60?’B’:’C’);
  printf(“%d belongs to %c”,score,grade);
  getch();

}

【程序16】
难题:输入多个正整数m和n,求其最大左券数和最小公倍数。
1.程序深入分析:利用辗除法。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int a,b,num1,num2,temp;
  printf(“please input two numbers:n”);
  scanf(“%d,%d”,&num1,&num2);
  if(num1<num2)/*沟通七个数,使大数放在num1上*/
  {
    temp=num1;
    num1=num2;
    num2=temp;
  }
  a=num1;b=num2;
  while(b!=0)/*选拔辗除法,直到b为0停止*/
  {
    temp=a%b;
    a=b;
    b=temp;
  }
  printf(“gongyueshu:%dn”,a);
  printf(“gongbeishu:%dn”,num1*num2/a);
  getch();

}

【程序17】
主题素材:输入意气风发行字符,分别计算出里面保加乌兰巴托语字母、空格、数字和别的字符的个数。
1.前后相继解析:利用while语句,条件为输入的字符不为’n’.
      
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  char c;
  int letters=0,space=0,digit=0,others=0;
  printf(“please input some charactersn”);
  while((c=getchar())!=’n’)
  {
    if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)
      letters++;
      else if(c==’ ‘)
        space++;
        else if(c>=’0’&&c<=’9′)
          digit++;
        else
          others++;
  }
  printf(“all in all:char=%d space=%d digit=%d others=%dn”,letters,
  space,digit,others);
  getch();

}

【程序18】
标题:求s=a+aa+aaa+aaaa+aa…a的值,在那之中a是三个数字。举例2+22+222+2222+22222(那时
   共有5个数相加),多少个数相加有键盘调控。
1.主次剖判:关键是总括出每生龙活虎项的值。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int a,n,count=1;
  long int sn=0,tn=0;
  printf(“please input a and nn”);
  scanf(“%d,%d”,&a,&n);
  printf(“a=%d,n=%dn”,a,n);
  while(count<=n)
  {
    tn=tn+a;
    sn=sn+tn;
    a=a*10;
    ++count;
  }
  printf(“a+aa+…=%ldn”,sn);
  getch();

}

【程序19】
难题:二个数固然恰巧等于它的因子之和,这么些数就叫做“完数”。举个例子6=1+2+3.编制程序
   找寻1000以内的装有完数。

  1. 次第深入分析:请参见程序<–上页程序14. 
    2.程序源代码:
    #include “stdio.h”
    #include “conio.h”
    main()
    {
      static int k[10];
      int i,j,n,s;
      for(j=2;j<1000;j++)
      {
        n=-1;
        s=j;
        for(i=1;i<j;i++)
        {
          if((j%i)==0)
          {
            n++;
            s=s-i;
            k[n]=i;
          }
        }
        if(s==0)
        {
          printf(“%d is a wanshu”,j);
          for(i=0;i<n;i++)
          printf(“%d,”,k);
          printf(“%dn”,k[n]);
        }
      }
      getch();
    }
    ============================================================== 
    【程序20】
    主题材料:一个球从100米高度自由落下,每一趟曝腮龙门后反跳回原中度的八分之四;再落下,求它在
       第12遍名落孙山时,共通过多少米?第11回反弹多高?
    1.前后相继解析:见下面注释
    2.程序源代码:
    #include “stdio.h”
    #include “stdio.h”
    main()
    {
      float sn=100.0,hn=sn/2;
      int n;
      for(n=2;n<=10;n++)
      {
        sn=sn+2*hn;/*第n次一败涂地时共通过的米数*/
        hn=hn/2; /*第n次反跳中度*/
      }
      printf(“the total of road is %fn”,sn);
      printf(“the tenth is %f metern”,hn);
      getch();
    }

  .:.:经典c程序100例==21–30:.:. 

    经典c程序100例==21–30
【程序21】
主题素材:猴子吃桃难题:猴子第一天摘下多少个黄桃,当即吃了大意上,还不瘾,又多吃了二个
   第二天早晨又将剩余的白桃吃掉贰分一,又多吃了一个。今后每一日下午都吃了昨日剩余
   的八分之四零叁个。到第10天早晨想再吃时,见只剩下二个水蜜桃了。求第一天共摘了有一些。
1.顺序分析:接收逆向思维的形式,从后往前忖度。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int day,x1,x2;
  day=9;
  x2=1;
  while(day>0)
  {
    x1=(x2+1)*2;/*第一天的寿星桃数是第2天黄肉桃数加1后的2倍*/
    x2=x1;
    day–;
  }
  printf(“the total is %dn”,x1);
  getch();

}

【程序22】
难点:多少个乒球队实行较量,各出四人。甲队为a,b,c几个人,乙队为x,y,z四人。已抽签决定
   比赛名单。有人向队员了然竞赛的名册。a说她不和x比,c说她不和x,z比,请编制程序序寻觅
   三队赛手的名单。 
1.顺序剖析:推断素数的方法:用一个数分别去除2到sqrt(那么些数卡塔尔,借使能被整除,
      则申明此数不是素数,反之是素数。       
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
  for(i=’x’;i<=’z’;i++)
    for(j=’x’;j<=’z’;j++)
    {
      if(i!=j)
      for(k=’x’;k<=’z’;k++)
      {
        if(i!=k&&j!=k)
        {
          if(i!=’x’&&k!=’x’&&k!=’z’)
            printf(“order is a–%ctb–%ctc–%cn”,i,j,k);
         }
      }
    }
  getch();

}

【程序23】 
问题:打字与印刷出如下图案(菱形)
   *
  ***
*****
*******
*****
  ***
   *
1.先后解析:先把图片分成两部分来看待,前四行一个法则,后三行一个原理,利用再一次
      for循环,第意气风发层调节行,第二层调节列。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i,j,k;
  for(i=0;i<=3;i++)
  {
    for(j=0;j<=2-i;j++)
      printf(” “);
    for(k=0;k<=2*i;k++)
      printf(“*”);
    printf(“n”);
  }
  for(i=0;i<=2;i++)
  {
    for(j=0;j<=i;j++)
      printf(” “);
    for(k=0;k<=4-2*i;k++)
      printf(“*”);
    printf(“n”);
  }
  getch();

}

【程序24】 
难题:有一分数连串:2/1,3/2,5/3,8/5,13/8,21/13…求出那一个数列的前20项之和。
1.顺序解析:请抓住分子与分母的变化规律。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int n,t,number=20;
  float a=2,b=1,s=0;
  for(n=1;n<=number;n++)
  {
    s=s+a/b;
    t=a;a=a+b;b=t;/*那有的是程序的机要,请读者猜猜t的机能*/
  }
  printf(“sum is %9.6fn”,s);
  getch();

}

【程序25】 
题目:求1+2!+3!+…+20!的和
1.顺序解析:此程序只是把累积变成了累乘。 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  float n,s=0,t=1;
  for(n=1;n<=20;n++)
  {
    t*=n;
    s+=t;
  }
  printf(“1+2!+3!…+20!=%en”,s);
  getch();

}

【程序26】 
难题:利用递归方法求5!。
1.主次分析:递归公式:fn=fn_1*4!
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i;
  int fact();
  for(i=0;i<5;i++)
  printf(“40:%d!=%dn”,i,fact(i));
  getch();
}
int fact(j)
int j;
{
  int sum;
  if(j==0)
    sum=1;
  else
    sum=j*fact(j-1);
  return sum;

}

【程序27】 
标题:利用递归函数调用格局,将所输入的5个字符,以相反顺序打印出来。
1.顺序解析:
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main()
{
  int i=5;
  void palin(int n);
  printf(“40:”);
  palin(i);
  printf(“n”);
  getch();
}
void palin(n)
int n;
{
  char next;
  if(n<=1)
  {
    next=getchar();
    printf(“n:”);
    putchar(next);
  }
  else
  {
    next=getchar();
    palin(n-1);
    putchar(next);
  }

}

【程序28】 
主题材料:有5个人坐在一同,问第三人多少岁?他说比首个人民代表大会2岁。问第1个人年纪,他说比第
   3个人民代表大会2岁。问第多个人,又说比第2人民代表大会两岁。问第2私房,说比第一人民代表大会两岁。最终 
   问第意气风发民用,他视为10岁。请问第三个人多大?
1.前后相继解析:利用递归的议程,递归分为回推和递推四个级次。要想通晓第三人年龄,需掌握
      第多人的年龄,依次类推,推到第3位(10岁),再往回推。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
age(n)
int n;
{
  int c;
  if(n==1) c=10;
  else c=age(n-1)+2;
  return(c);
}
main()
{
  printf(“%d”,age(5));
  getch();

}

【程序29】 
标题:给多少个相当少于5位的正整数,须求:意气风发、求它是叁个人数,二、逆序打字与印刷出各位数字。
1.
程序深入分析:学会分解出每个人数,如下解释:(这里是生龙活虎种轻易的算法,师范专科学校数002班赵鑫提供卡塔尔国 
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main( )
{
  long a,b,c,d,e,x;
  scanf(“%ld”,&x);
  a=x/10000;/*演说出万位*/
  b=x%10000/1000;/*表明出千位*/
  c=x%1000/100;/*解说出百位*/
  d=x%100/10;/*解释出11个人*/
  e=x%10;/*分解出个位*/
  if (a!=0) printf(“there are 5, %ld %ld %ld %ld %ldn”,e,d,c,b,a);
  else if (b!=0) printf(“there are 4, %ld %ld %ld %ldn”,e,d,c,b);
    else if (c!=0) printf(” there are 3,%ld %ld %ldn”,e,d,c);
      else if (d!=0) printf(“there are 2, %ld %ldn”,e,d);
        else if (e!=0) printf(” there are 1,%ldn”,e);
  getch();

}

【程序30】 
难题:叁个5位数,推断它是还是不是回文数。即12321是回文数,个位与万位肖似,11个人与千位相近。   
1.顺序深入分析:同29例
2.程序源代码:
#include “stdio.h”
#include “conio.h”
main( )
{
  long ge,shi,qian,wan,x;
  scanf(“%ld”,&x);
  wan=x/10000;
  qian=x%10000/1000;
  shi=x%100/10;
  ge=x%10;
  if(ge==wan&&shi==qian)/*个位等于万位而且拾二位等于千位*/
    printf(“this number is a huiwenn”);
  else
    printf(“this number is not a huiwenn”);
  getch();
}

  .:.:经典c程序100例==31–40:.:. 

    经典c程序100例==31–40
【程序31】
标题:请输入星期几的第三个假名来判断一下是星期几,如若第多个字母相似,则继续
   剖断第三个假名。
1.程序解析:用状态语句相比好,若是第一个假名雷同,则决断用状态语句或if语句剖断第二个字母。
2.程序源代码:
#include “stdio.h”
#include “conio.h”
void main()
{
  char letter;
  printf(“please input the first letter of somedayn”);
  while((letter=getch())!=’Y’)/*当所按字母为Y时才甘休*/
  {
    switch (letter)
    {
      case ‘S’:printf(“please input second lettern”);
      if((letter=getch())==’a’)
        printf(“saturdayn”);
        else if ((letter=getch())==’u’)
          printf(“sundayn”);
          else printf(“data errorn”);

题目:有1、2、3、4个数字,能整合多少个互不相似且无重复数字的多少人数?都以稍微?
1.顺序深入分析:可填在百位、十一个人、个位的…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图