/*
05-0. 求序列前N项和(15)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列
从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:输入在一行中给出一个正整数N。
输出格式:在一行中输出部分和的值,精确到小数点后2位。题目保证计算结果不超过双精度范围。
输入样例:20
输出样例:32.66
*/
#include <stdio.h>
int main()
{
float a=2, b=1;
int n, t, i;
float total=0;
printf("input>>> ");
scanf("%d",&n);
for(i=0; i<n; i++){
total += a/b;
// printf("a=%f, b=%f, total=%f \n", a,b,total);
t = a;
a = a+b;
b = t;
}
printf("\n\n%.2f", total);
return 0;
}
/*
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
*/
#include <stdio.h>
int main()
{
printf("input>>> ");
int a,b;
scanf("%d/%d", &a, &b);
int m = a;
int n = b;
int t;
while(n > 0){
t = m % n;
m = n;
n = t;
}
printf("%d/%d\n", a/m, b/m);
return 0;
}
/*
05-2. 念数字(15)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。
十个数字对应的拼音如下:0: ling 1: yi 2: er 3: san 4: si ……
输入格式:输入在一行中给出一个整数,如:1234。
提示:整数包括负数、零和正数。
输出格式:在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si。
输入样例:-600
输出样例:fu liu ling ling
*/
#include <stdio.h>
int main()
{
printf("input>>> ");
int x;
scanf("%d",&x);
if(x < 0){
printf("fu ");
x = -x;
}
int mask = 1;
int t = x;
while(t > 9){
t /= 10;
mask *= 10;
// printf("t=%d,mask=%d\n", t,mask);
}
while(mask > 0){
int d = x / mask;
switch(d){
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 %= mask;
mask /= 10;
}
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>
int main()
{
printf("input a and n, please \nseparate with spaces >>>");
int a,n;
scanf("%d %d", &a, &n);
int sum=0,t=0;
for(int i=0; i<n; i++){
t = t*10+a;
sum += t;
}
printf("sum=%d", sum);
return 0;
}