目录

写在前面

正文

第1关:小球自由落体运动

第2关:求解出n以内所有能被5整除的正整数的乘积

第3关:最大公约数和最小公倍数

第4关:字符串中各类字符数的统计

第5关:求sn=a+aa+aaa+aaaa+......的值

写在最后


写在前面

本文代码是我自己所作,本人水平有限,可能部分代码看着不够简练,运行效率不高,但都能运行成功。另外,如果想了解更多,请订阅专栏头歌C语言程序与设计


正文

第1关:小球自由落体运动

任务描述:一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 结果保留两位小数。

输入: 从键盘输入MN的值。

输出 :它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行。

样例输入:

1000 5

样例输出:

31.25 2875.00

#include<stdio.h>

int main(void)
{  
    /*********Begin*********/
    double M, N, sum, rebound;
    int i;
    scanf("%lf%lf", &M, &N); 
    sum = M;
    rebound = M / 2.0; // 第一次反弹的高度

    for(i = 1; i < N; i++) // 循环N-1次,因为第一次落地后已经计算了一次反弹
    {
        sum += 2 * rebound; // 每次落地后会经过两倍的反弹高度(上升和下降)
        rebound /= 2.0; // 每次落地反弹高度减半
    }

    printf("%.2lf %.2lf", rebound, sum); // 输出第N次落地时的反弹高度和总共经过的距离

    /*********End**********/ 
    return 0;
}

第2关:求解出n以内所有能被5整除的正整数的乘积

本关任务:求解出n以内(包含n)所有能被5整除的正整数数的乘积s

输入: 输入包含多个样例,每个样例一个正整数n,占一行。读取到文件结尾。输入的n不超过100

输出 :对于每个样例n,输出n以内(包含n)所有能被5整除的正整数的乘积。

样例输入:

19

样例输出:

750

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int n,i;
      int s=1;
      scanf("%d",&n);
      for(i=1;i<=n;i++)
      {
         if(i%5==0)
           s*=i;
      }
      printf("%d\n", s);
	  
	  /*********End**********/ 
       return 0;
	}

第3关:最大公约数和最小公倍数

本关任务:输入两个正整数mn,求其最大公约数和最小公倍数。

输入: 从键盘上任意输入两个数。

输出 :分两行输出,第一行输出:最大公约数是多少;第二行输出最小公倍数是多少。

样例输入:

2 3

样例输出:

最大公约数是:1

最小公倍数是:6 

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
      int m,n,tmp,a,b;
      int max,min;
      scanf("%d%d",&m,&n);
      a=m;
      b=n;
      while(m%n!=0)
      {
        if(m<n)
        {
          tmp=m;
          m=n;
          n=tmp;
        }
        n=m%n;
        min=n;
      }
      max=a*b/min;
	  printf("最大公约数是:%d\n",min);
      printf("最小公倍数是:%d",max);
	  /*********End**********/ 
       return 0;
	}

第4关:字符串中各类字符数的统计

本关任务:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

输入: 一行字符。

输出: 统计每种字符的个数值。

样例输入:

aklsjflj123 sadf918u324 asdf91u32oasdf/.';123

样例输出:

23 16 2 4

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
      int letters=0,num=0,space=0,others=0,i=0;
	  char ch;
      while((ch=getchar())!='\n')
      {
        if(ch>='a'&&ch<='z')
            letters++;
        else if(ch>='1'&&ch<='9')
            num++;
        else if(ch==' ')
            space++;
        else
            others++;
      }
      printf("%d %d %d %d",letters,num,space,others);
	  /*********End**********/ 
       return 0;
	}

第5关:求sn=a+aa+aaa+aaaa+......的值

本关任务:键盘输入正整数an,编程 s=a+aa+aaa+aaaa+aa...ana)的值。

输入:5 3 表示3个由5组成的数相加,即计算5+55+555的值,输出:615

输入:5 4 表示计算5+55+555+5555的值,输出:6170

输入:5 3

输出:615

输入:6 4

输出:7404

输入:3 5

输出:37035

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int a,n,s;
      int num=1;
      int i,j;
      scanf("%d%d",&a,&n);
    //   5*10*10*10*10*10
    //   5*10*10*10*10
    //   5*10*10*10
    //   5*10*10
    //   5*10
    //   5
      for(i=n;i>=0;i--)
      {
          num=1;
          for(j=i;j>0;j--)
          {
              num=num*10;
          }
          s+=(num-1)/9*a;
      }
      printf("%d",s);
	  
	  /*********End**********/ 
       return 0;
	}

写在最后

👍🏻点赞,你的认可是我创作的动力!

⭐收藏,你的青睐是我努力的方向!

✏️评论,你的意见是我进步的财富!