本文主要是介绍EDUCoder编程练习题解(循环一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编辑与调试 顺序结构 选择结构一 选择结构二 循环一 循环二 函数
递归与嵌套函数 一维数组和二维数组 字符数组 指针一 指针二 结构体 文件
循环一
第1关:小球自由落体运动
任务描述
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 结果保留两位小数。
输入
从键盘输入M和N的值。
输出
它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
1000 5
样例输出:
31.25 2875.00
解题说明:
注意大坑:经过多少米是指最后到落地经过了多少米,最后一次没有反弹的!
解题程序:
/* 第1关:小球自由落体运动 */#include<stdio.h>
int main(void)
{/*********Begin*********/float m;int n, i;scanf("%f%d", &m, &n);float sum = m;for(i = 1; i <= n; i++) {if(i > 1)sum += m + m;m /= 2;}printf("%.2f %.2f\n", m, sum);/*********End**********/return 0;
}
第2关:求解出n以内所有能被5整除的正整数的乘积
任务描述
本关任务:求解出n以内(包含n)所有能被5整除的正整数数的乘积s。
输入
输入包含多个样例,每个样例一个正整数n,占一行。读取到文件结尾。输入的n不超过100。
输入格式
scanf(“%d”, &n)
输出
对于每个样例n,输出n以内(包含n)所有能被5整除的正整数的乘积。
输出格式
printf(“%d\n”, s);
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
19
样例输出:
750
解题程序:
/* 第2关:求解出n以内所有能被5整除的正整数的乘积 */#include<stdio.h>
int main(void)
{ /*********Begin*********/int n;while(scanf("%d", &n) != EOF) {int p = 1, i; for(i = 5; i <= n; i += 5)p *= i; printf("%d\n", p); }/*********End**********/ return 0;
}
第3关:最大公约数和最小公倍数
任务描述
本关任务:输入两个正整数m和n,求其最大公约数和最小公倍数。
输入
从键盘上任意输入两个数。
输出
分两行输出,第一行输出:最大公约数是多少;第二行输出最小公倍数是多少。
测试说明
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
样例输入:
2 3
样例输出:
最大公约数是:1
最小公倍数是:6
解题程序:
/* 第3关:最大公约数和最小公倍数 */#include<stdio.h>int gcd(int n, int m)
{return m == 0 ? n : gcd(m, n % m);
}int main(void)
{ /*********Begin*********/int n, m;scanf("%d%d", &n, &m);int g = gcd(n, m);printf("最大公约数是:%d\n", g);printf("最小公倍数是:%d\n", n / g * m); /*********End**********/ return 0;
}
第4关:字符串中各类字符数的统计
任务描述
本关任务:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
输入
一行字符。
输出
统计每种字符的个数值。
样例输入:
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
样例输出:
23 16 2 4
解题程序(2种):
/* 第4关:字符串中各类字符数的统计 */#include<stdio.h>
#include<ctype.h>#define N 1024
char s[N +1];int main(void)
{ /*********Begin*********/int letter = 0, digit = 0, space = 0, other = 0, i;fgets(s, N, stdin);for(i = 0; s[i] != '\n'; i++)if(isalpha(s[i])) letter++;else if(isdigit(s[i])) digit++;else if(isspace(s[i])) space++;else other++;printf("%d %d %d %d\n", letter, digit, space, other); /*********End**********/ return 0;
}
/* 第4关:字符串中各类字符数的统计 */#include<stdio.h>
#include<ctype.h>#define N 1024
char s[N +1];int main(void)
{ /*********Begin*********/int letter = 0, digit = 0, space = 0, other = 0, i;fgets(s, N, stdin);for(i = 0; s[i] != '\n'; i++)if('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z') letter++;else if('0'<=s[i]&&s[i]<='9') digit++;else if(s[i] == ' ') space++;else other++;printf("%d %d %d %d\n", letter, digit, space, other); /*********End**********/ return 0;
}
第5关:求sn=a+aa+aaa+aaaa+…的值
任务描述
本关任务:键盘输入正整数a和n,编程 s=a+aa+aaa+aaaa+aa…a(n个a)的值。
例如:
a=2 ,n=5时,表示计算由2组成的数的和:2+22+222+2222+22222 ( 此时 共有5个数相加)。
输入:5 3 表示3个由5组成的数相加,即计算5+55+555的值,输出:615
输入:5 4 表示计算5+55+555+5555的值,输出:6170
测试说明
以下是测试样例:
输入:5 3
输出:615
输入:6 4
输出:7404
输入:3 5
输出:37035
解题代码:
/* 第5关:求sn=a+aa+aaa+aaaa+......的值 */#include<stdio.h>int main(void)
{ /*********Begin*********/int a, n, t = 0, sum = 0, i;scanf("%d%d", &a, &n);for(i = 1; i <= n; i++) {t *= 10, t += a;sum += t;}printf("%d\n", sum); /*********End**********/ return 0;
}
编辑与调试 顺序结构 选择结构一 选择结构二 循环一 循环二 函数
递归与嵌套函数 一维数组和二维数组 字符数组 指针一 指针二 结构体 文件
这篇关于EDUCoder编程练习题解(循环一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!