目录
写在前面
正文
第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>
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关:最大公约数和最小公倍数
本关任务:输入两个正整数
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;
}
写在最后
👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!