我们来看第一个题目:
约分最简分式:
就是用户输入一个分式,我们的程序将这个分式变成了最简的分式,说白了就是变成,分子分母的最大公约数为1。
其实说白了就是求分子和分母的最大公约数,然后让分子分母都除一下这个数字,就可以了。
最大的难点是在于如何处理输入的时候的斜杠:把它在scanf_s的双引号中处理。
输入和输出的格式就是像2/3这样的完整的分数输出。
我们下面来具体看一下代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#include<stdio.h> int main() { int dividend, divisor; scanf_s("%d/%d",÷nd,&divisor);//输入原来的分数。 int a = dividend; int b = divisor; int t; //这里的一个循环为辗转相除法,我愿意把它看成:向前推的方法。 while (b > 0)//条件是判断上一循环的相除的结果是不是0. { t = a % b;//先除。 a = b;//后向前推。 b = t;//后再向前推。 } printf("%d/%dn", dividend / a, divisor / a); return 0; }
第二题是读数字
就是把每一个数字的拼音读出来,注意的是如果是负数的话在前面还有输出一个“fu”的字,注意每两个拼音中间要有空格隔开,但是最后的一个拼音后面没有空格。
我们来看一下具体的思路:
主要还是按照我们在前面讲过的整数分解那一块的方法,只不过输出的是数字的拼音,而不是数字,并且注意符号是什么样子的:
我们来看整个的的代码是什么样子的:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43#include<stdio.h> int main() { int x; scanf_s("%d", &x); if (x < 0)//输出完fu之后再把它翻过来,用整数的方法来进行运算。 { printf("fu"); x = -x; } int mask = 1; int t = x; while (t > 9)//计算一共有多少的位数。 { t /= 10; mask *= 10; } do { int d = x / mask;//挨个的从最左位开始挨个进入循环。 switch (d)//由于是刚好为对应的每一个整数,所以用switch的方法更好一些。 { 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; } if (mask > 9) //除了最后一个以外,在每两个拼音的中间是有空格的。 { printf(" "); } x = x % mask;//这块的两个很重要不要忘记了。 mask /= 10; } while (mask > 0);//还是强调一下,这里的计算都是根据mask的等于的结果来判断,而不是根据输入的x来进行判断。 printf("n"); return 0; }
最后一个例题:求a的连续和:
我们先来看一下这个题目是什么样子的。
用户输入两个整数a和n,规定a输入的范围为[0,9],n的范围为[1,8],求数列之和S=a+aa+aaa+aa.....a(n个a)。
比如:a为2,n为8时,输出的是:2+22+222+......+22222222的和。
输入的格式为输入两个整数:先后表示a和n.
输出的格式为在一行值中输出要求的数列的和即可。
我们来看一下代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#include<stdio.h> int main() { int a, n; scanf_s("%d %d", &a, &n); int sum = 0; int i; int t = 0; //2;2*10+2;(2*10+2)*10+2 for (i = 0; i < n; i++) { t = t * 10 + a; sum += t; } printf("%dn", sum); return 0; }
最后
以上就是无情溪流最近收集整理的关于C语言重来30:例题赏析——三道例题的全部内容,更多相关C语言重来30内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复