首页 分享 EDUCoder编程练习题解(循环一)

EDUCoder编程练习题解(循环一)

来源:花匠小妙招 时间:2024-12-15 02:16

编辑与调试    顺序结构    选择结构一    选择结构二    循环一     循环二    函数
递归与嵌套函数     一维数组和二维数组     字符数组      指针一    指针二     结构体      文件

循环一

第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 %.2fn", m, sum); /*********End**********/ return 0; }

1234567891011121314151617181920212223

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

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

输入格式

scanf(“%d”, &n)
输出
对于每个样例n,输出n以内(包含n)所有能被5整除的正整数的乘积。
输出格式

printf(“%dn”, 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("%dn", p); }/*********End**********/ return 0; }

123456789101112131415161718

第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("最大公约数是:%dn", g); printf("最小公倍数是:%dn", n / g * m);/*********End**********/ return 0; }

1234567891011121314151617181920212223

第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 %dn", letter, digit, space, other);/*********End**********/ return 0; }

1234567891011121314151617181920212223

/* 第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 %dn", letter, digit, space, other);/*********End**********/ return 0; }

1234567891011121314151617181920212223'

第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("%dn", sum);/*********End**********/ return 0; }

1234567891011121314151617181920

编辑与调试    顺序结构    选择结构一    选择结构二    循环一     循环二    函数
递归与嵌套函数     一维数组和二维数组     字符数组      指针一    指针二     结构体      文件

相关知识

编程基本功训练:流程图画法及练习
洛谷 P1077 摆花 题解
三、Python循环语句
动态规划 摆花 题解
python循环的复习练习
Hello world Python新手赛题解
武汉PLC自动化编程培训课程
Python编程:while与for循环实践及应用
ZUST 程序设计算法竞赛基础【1】题解报告
揭秘Vue.js异步编程精髓:原理图解析与实战技巧全解析

网址: EDUCoder编程练习题解(循环一) https://www.huajiangbk.com/newsview1100811.html

所属分类:花卉
上一篇: JSTL自定义标签(三)
下一篇: “花满渚,酒满瓯,万顷波中得自由

推荐分享