当前位置:首页 >> 开发者生态 >> 【PTA-C语言】编程练习3 - 循环结构Ⅰ,starwar6

【PTA-C语言】编程练习3 - 循环结构Ⅰ,starwar6

cpugpu芯片开发光刻机 开发者生态 1
文件名:【PTA-C语言】编程练习3 - 循环结构Ⅰ,starwar6 【PTA-C语言】编程练习3 - 循环结构Ⅰ 如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习3 - 循环结构(1~8) 7-1 统计整数的位数(分数 15)7-2 输出闰年(分数 15)7-3 求分数序列前N项和(分数 15)7-4 求给定精度的简单交错序列部分和(分数 15)7-5 最佳情侣身高差(分数 10)7-6 简写转全称(分数 15)7-7 约分最简分式(分数 15)7-8 猴子吃桃问题(分数 15) 7-1 统计整数的位数(分数 15)

从键盘读入一个整数,统计该数的位数。例如,输入12534,输出5;输入-99,输出2;输入0,输出1。

输入格式: 输入一个整数N(−105 ≤N≤105)。

输出格式: 在一行中按如下格式输出该数的位数。

It contains 位数 digits.

输入样例:

12534

输出样例:

It contains 5 digits.

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include <stdio.h>int main(){int n, d=0;scanf("%d", &n);if (n==0) d=1;if (n<0) n=-n;while (n!=0) {n/=10;d++;}printf("It contains %d digits.", d);return 0;} 7-2 输出闰年(分数 15)

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式: 输入在一行中给出21世纪的某个截止年份。

输出格式: 逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。

输入样例1:

2048

输出样例1:

200420082012201620202024202820322036204020442048

输入样例2:

2000

输出样例2:

Invalid year!

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include <stdio.h>#include <math.h>int main() {int n, i, t = 0;scanf("%d", &n);if (n <= 2000 || n > 2100) {printf("Invalid year!\n");return 0;}for (i = 2001; i <= n; i++) {if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {printf("%d\n", i);t = 1;}}if (t == 0) printf("None");return 0;} 7-3 求分数序列前N项和(分数 15)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式: 输入在一行中给出一个正整数N。

输出格式: 在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:

20

输出样例:

32.66

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include <stdio.h>int main(){int n, i;double sum=0, a=1.0, b=2.0, c;scanf("%d", &n);for(i=1; i<=n; i++) {sum += b/a;c=b;b=a+b;a=c;}printf("%.2f", sum);return 0;} 7-4 求给定精度的简单交错序列部分和(分数 15)

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。

输入格式: 输入在一行中给出一个正实数eps。

输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

输入样例1:

4E-2

输出样例1:

sum = 0.854457

输入样例2:

0.02

输出样例2:

sum = 0.826310

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include <stdio.h>int main(){int i, flag=1;double sum=0, n=1.0, eps;scanf("%lf", &eps);if (eps>=1)printf("sum = %.6f", n);else {for(i=1; n>eps; i++) {n = 1.0/(3*i-2);sum += n*flag;flag =- flag;}printf("sum = %.6f", sum);}return 0;} 7-5 最佳情侣身高差(分数 10)

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入格式: 输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出格式: 对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

输入样例:

2M 1.75F 1.8

输出样例:

1.611.96

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include<stdio.h>int main(){int n, i;char ch, x;double h;scanf("%d", &n);scanf("%c", &x);for(i=1; i<=n; i++) {scanf("%c %lf%c", &ch, &h, &x);if (ch=='M') h /= 1.09;else h *= 1.09;printf("%.2lf\n", h);}return 0;} 7-6 简写转全称(分数 15)

在一行中输入若干个字符作为简写字符,字符之间没有空格间隔,并按如下规则产生输出:

每个简写字母对应一行输出若字符为C或c,则该行输出"BEIJING OLYMPIC GAMES"若字符为J或j,则该行输出"JAPAN WORLD CUP"若字符为K或k,则该行输出"KOREA WORLD CUP"若为其他字符,则该行原样输出该字符。

输入格式: 输入在一行中输入若干个字符,字符之间没有空格间隔,以回车结束。

输出格式: 按题目要求产生若干行输出。

输入样例:

kijckj

输出样例:

KOREA WORLD CUPiJAPAN WORLD CUPBEIJING OLYMPIC GAMESKOREA WORLD CUPJAPAN WORLD CUP

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include <stdio.h>int main(){int ch;while((ch=getchar()) != '\n')if (ch=='c' || ch=='C')printf("BEIJING OLYMPIC GAMES\n");else if (ch=='J' || ch=='j')printf("JAPAN WORLD CUP\n");else if (ch=='K' || ch=='k')printf("KOREA WORLD CUP\n");elseprintf("%c\n", ch);return 0;} 7-7 约分最简分式(分数 15)

分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。

输入格式: 输入在一行中给出一个分数,分子和分母中间以斜杠/分隔,如:12/34表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。

提示:

对于C语言,在scanf的格式字符串中加入/,让scanf来处理这个斜杠。对于Python语言,用a,b=map(int, input().split('/'))这样的代码来处理这个斜杠。

输出格式: 在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母的形式表示分数。如 5/6表示6分之5。

输入样例:

66/120

输出样例:

11/20

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include<stdio.h>int main(){int i, a=0, b=0;scanf("%d/%d", &a, &b);for(i=b; i>1; i--)if(a%i==0 && b%i==0){a /= i;b /= i;}printf("%d/%d", a, b);return 0;}

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

7-8 猴子吃桃问题(分数 15)

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式: 输入在一行中给出正整数N(1<N≤10)。

输出格式: 在一行中输出第一天共摘了多少个桃子。

输入样例:

3

输出样例:

10

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

参考代码

#include<stdio.h>int main(){int i, d, n=1;scanf("%d", &d);for(i=2; i<=d; i++)n = (n+1)*2;printf("%d",n);return 0;}
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接