解题思路:
求1~a之和:A0 = 0; A1 = A0 + 1
A2 = A1 + 2
A3 = A2 + 3
......
1~a之和: An = A(n-1) + n
求1~b平方和:B0 = 0; B1 = B0 + 1*1
B2 = B1 + 2*2
B3 = B2 + 3*3
......
1~b平方和: Bn = B(n-1) + n*n
求1~c倒数之和:C0 = 0; C1 = C0 + 1/1
C2 = C1 + 1/2
C3 = C2 + 1/3
......
Cn = C(n-1) + 1/n
注意事项:
这题解题思路不难,如果之前的题目都会,这里不是难事,重点是细节。
代码中a / b如果表达式中的a和b这两个因子中任意一个为浮点型,则结果也为浮点型
结合参考代码内的注释更明白
参考代码:
#include<stdio.h>
int main(void)
{
int An = 0, Bn = 0;
float Cn = 0;
int a, b, c;
float i; //这里i的声明类型也可以为int,但如果这样,下面有些地方就要做出改变
scanf("%d %d %d", &a, &b, &c);
for (i = 1; a >= i; i++)
{
An = i + An;
}
for (i = 1; b >= i; i++)
{
Bn = i * i + Bn;
}
for ( i = 1; c >= i; i++)
{
Cn = 1 / i + Cn; /*如果上面i的定义不为浮点型而是整型,这里的1就应该变为1.0,否则1/i的结果就不是浮点型,小数点后面位数的数值会直接被忽略,这里也是导致程序结果虽然保留两位小数,但小数点后的位数却是零的缘故。*/
}
printf("%.2f", An + Bn + Cn);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
int An = 0, Bn = 0;
float Cn = 0;
int a, b, c;
float i; //这里i的声明类型也可以为int,但如果这样,下面有些地方就要做出改变
scanf("%d %d %d", &a, &b, &c);
for (i = 1; a >= i; i++)
{
An = i + An;
}
for (i = 1; b >= i; i++)
{
Bn = i * i + Bn;
}
for (i = 1; c >= i; i++)
{
Cn = 1 / i + Cn; /*如果上面i的定义不为浮点型而是整型,这里的1就应该变为1.0,否则1/i的结果就不是浮点型,小数点后面位数的数值会直接被忽略,这里也是导致程序结果虽然保留两位小数,但小数点后的位数却是零的缘故。*/
}
printf("%.2f", An + Bn + Cn);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/0ff5679fc245c2785061c97f484c9f48.png)