从键盘读入一个整数,统计该数的位数。例如,输入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;}