千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > c语言经典练习题100道(六)

c语言经典练习题100道(六)

来源:千锋教育
发布人:syq
时间: 2022-07-29 17:18:22 1659086302

  【程序26】 题目:利用递归方法求5!。

c语言经典练习题

  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!=%d\n",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\0:");

    putchar(next);

  }

  else

  {

    next=getchar();

    palin(n-1);

    putchar(next);

  }

}

  ——————————————————————————————————————

  【程序28】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是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();

}

  ——————————————————————————————————————

  【程序29】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

  1. 程序分析:学会分解出每一位数,如下解释:()

  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 %ld\n",e,d,c,b,a);

  else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);

    else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);

      else if (d!=0) printf("there are 2, %ld %ld\n",e,d);

        else if (e!=0) printf(" there are 1,%ld\n",e);

  getch();

}

  ——————————————————————————————————————

  【程序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)/*个位等于万位并且十位等于千位*/

    printf("this number is a huiwen\n");

  else

    printf("this number is not a huiwen\n");

  getch();

}

  ——————————————————————————————————————

  更多关于物联网培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT