目录
写在前面
本文代码是我自己所作,本人水平有限,可能部分代码看着不够简练,运行效率不高,但都能运行成功。另外,如果想了解更多,请订阅专栏
头歌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;
}
写在最后
👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!