概述
我们来看第一个题目:
约分最简分式:
就是用户输入一个分式,我们的程序将这个分式变成了最简的分式,说白了就是变成,分子分母的最大公约数为1。
其实说白了就是求分子和分母的最大公约数,然后让分子分母都除一下这个数字,就可以了。
最大的难点是在于如何处理输入的时候的斜杠:把它在scanf_s的双引号中处理。
输入和输出的格式就是像2/3这样的完整的分数输出。
我们下面来具体看一下代码:
#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”的字,注意每两个拼音中间要有空格隔开,但是最后的一个拼音后面没有空格。
我们来看一下具体的思路:
主要还是按照我们在前面讲过的整数分解那一块的方法,只不过输出的是数字的拼音,而不是数字,并且注意符号是什么样子的:
我们来看整个的的代码是什么样子的:
#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.
输出的格式为在一行值中输出要求的数列的和即可。
我们来看一下代码:
#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:例题赏析——三道例题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复