PAT|中国大学MOOC-翁恺-C语言程序设计习题集17-20
2015-02-05 19:53
501 查看
05-1. 约分最简分式(15)
分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠“/”分隔,如: 12/34 表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
提示:在scanf的格式字符串中加入“/”,让scanf来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用“分子/分母”的形式表示分数。如 5/6表示6分之5。
输入样例:
60/120
输出样例:
1/2
05-2. 念数字(15)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如: 1234 。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。
输入样例:
-600
输出样例:
fu liu ling ling
05-3. 求a的连续和(15)
输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+…+aaa…a(n个a)。 如a为2、n为8时输出的是2+22+222+…+22222222的和。
输入格式:
输入在一行中给出两个整数,先后表示a和n。
输出格式:
在一行中输出要求的数列之和。
输入样例:
2 4
输出样例:
2468
06-0. 混合类型数据格式化输入(5)
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70
分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠“/”分隔,如: 12/34 表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
提示:在scanf的格式字符串中加入“/”,让scanf来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用“分子/分母”的形式表示分数。如 5/6表示6分之5。
输入样例:
60/120
输出样例:
1/2
#include <stdio.h> int main() { int num1, num2, t, s, mod,r; scanf("%d/%d", &num1, &num2); s = num1; r = num2; if (num1 < num2) { t = num1; num1 = num2; num2 = t; } while (num1%num2!=0) { mod = num1%num2; num1 = num2; num2 = mod; } s = s / num2; r = r / num2; printf("%d/%d", s, r); return 0; }
05-2. 念数字(15)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如: 1234 。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。
输入样例:
-600
输出样例:
fu liu ling ling
#include <stdio.h> #include <math.h> int main() { int n, num, len, i, j,a,b; int m[10]; scanf("%d", &num); n = 1; if (num >0) { for (i = 0; i <= 9; i++) { if (num >= pow(10.0, i) && num <= pow(10.0, i + 1) - 1) { len = i + 1; break; } } m[0] = num / pow(10.0, len - 1); for (i = len-1; i >=1; i--) { a = num % (int)pow(10.0,i) / (int)pow(10.0,i-1 ); m = a; n++; } for (j = 0; j <= n-1; j++) { b = m[j]; if (j < n - 1) { switch (b) { case 0:printf("ling "); break; case 1:printf("yi "); break; case 2:printf("er "); break; case 3:printf("san "); break; case 4:printf("si "); break; case 5:printf("wu "); break; case 6:printf("liu "); break; case 7:printf("qi "); break; case 8:printf("ba "); break; case 9:printf("jiu "); break; } } else { switch (b) { case 0:printf("ling"); break; case 1:printf("yi"); break; case 2:printf("er"); break; case 3:printf("san"); break; case 4:printf("si"); break; case 5:printf("wu"); break; case 6:printf("liu"); break; case 7:printf("qi"); break; case 8:printf("ba"); break; case 9:printf("jiu"); break; } } } } else if (num == 0) { printf("ling"); } else { num = -num; for (i = 0; i <= 9; i++) { if (num >= pow(10.0, i) && num <= pow(10.0, i + 1) - 1) { len = i + 1; break; } } m[0] = num / pow(10.0, len - 1); for (i = len - 1; i >= 1; i--) { a = num % (int)pow(10.0, i) / (int)pow(10.0, i - 1); m = a; n++; } printf("fu "); for (j = 0; j <= n - 1; j++) { b = m[j]; if (j < n - 1) { switch (b) { case 0:printf("ling "); break; case 1:printf("yi "); break; case 2:printf("er "); break; case 3:printf("san "); break; case 4:printf("si "); break; case 5:printf("wu "); break; case 6:printf("liu "); break; case 7:printf("qi "); break; case 8:printf("ba "); break; case 9:printf("jiu "); break; } } else { switch (b) { case 0:printf("ling"); break; case 1:printf("yi"); break; case 2:printf("er"); break; case 3:printf("san"); break; case 4:printf("si"); break; case 5:printf("wu"); break; case 6:printf("liu"); break; case 7:printf("qi"); break; case 8:printf("ba"); break; case 9:printf("jiu"); break; } } } } return 0; }
05-3. 求a的连续和(15)
输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+…+aaa…a(n个a)。 如a为2、n为8时输出的是2+22+222+…+22222222的和。
输入格式:
输入在一行中给出两个整数,先后表示a和n。
输出格式:
在一行中输出要求的数列之和。
输入样例:
2 4
输出样例:
2468
#include <stdio.h> #include <math.h> int main() { int num1, num2, i, k, a, sum1, sum2; sum2 = 0; scanf("%d%d", &num1, &num2); for (k = 1; k <= num2; k++) { sum1 = 0; for (i = 0; i <= k-1; i++) { a = num1 * pow(10.0, i); sum1 = sum1 + a; } sum2 = sum2 + sum1; } printf("%d", sum2); return 0; }
06-0. 混合类型数据格式化输入(5)
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70
#include <stdio.h> int main() { float a, d; char c; int b; scanf("%f%d %c%f",&a,&b,&c,&d); printf("%c %d %.2f %.2f",c, b, a, d); return 0; }
相关文章推荐
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集25-28
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集29-32
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集33-36
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集37-38
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集01-04
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集05-08
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集09-12
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集13-16
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集21-24
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号02-3 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号02-4 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号03-0 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集 题目号03-1 Source code
- 中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
- PAT-中国大学MOOC-陈越、何钦铭-数据结构基础习题集 00-自测4. Have Fun with Numbers (20) 【二星级】
- 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
- PAT-中国大学MOOC-陈越、何钦铭-数据结构基础习题集 00-自测5. Shuffling Machine (20) (简单模拟)【二星级】
- 中国大学MOOC-翁恺-C语言程序设计习题集(学习笔记)
- 中国大学MOOC-翁恺-C语言程序设计习题集 05-0 到 06-3