【头歌C语言程序与设计】循环结构程序设计1

  • Post author:
  • Post category:其他



目录


写在前面


正文


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


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


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


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


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


写在最后


写在前面

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

头歌C语言程序与设计


正文

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


任务描述:

一球从

M

米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第

N

次落地时反弹多高?共经过多少米? 结果保留两位小数。


输入:

从键盘输入

M



N

的值。


输出

:它在第

N

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

样例输入:


1000 5

样例输出:


31.25 2875.00

#include<stdio.h>
#include<math.h>
	int main(void)
	{  
      int N,i;
      float M,m,rebound,sum;
      scanf("%f%d",&M,&N);
      sum=M;
      if(N==1)
      {
         rebound=M/2.0;
         m=M;
      }

      else
      {
         for(i=0;i<N;i++)
         {
            M=M/2;
            rebound=M;
            sum+=2*M;
         }
      }
      sum -= 2*M;
      printf("%.2f %.2f",rebound,sum);
      return 0;
   }
//  
//    rebound   sum
// 1   500      1000
// 2   250      500  
// 3   125      250
// 4   62.5     125    =2875
// 5   31.25    62.5若要把第五次循环的62.5放进sum,则会多加,那么就需要再减去最后的2倍rebound(M)

第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关:最大公约数和最小公倍数


本关任务:

输入两个正整数

m



n

,求其最大公约数和最小公倍数。


输入:

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


输出

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

样例输入:


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+……的值


本关任务

:键盘输入正整数

a



n

,编程

s=a+aa+aaa+aaaa+aa...a



n



a

)的值。


输入:


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;
	}

写在最后


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


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


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



版权声明:本文为m0_73222051原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。