解题思路: 先把这个题目一步一步分解,再利用代码把分出来的的步骤一步一步解决,做很多题都是一样的
先看此题要求:求以下三数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和
接下来分步骤来做:1)接受三个值
2)利用for循环,按题目符合要求三个对应数之和
3)输出结果
1)接受三个值
这个就不用多说吧,声明变量利用scanf()获取用户输入
int a, b, c; //声明变量获取计算机存储 long long An = 0, Bn = 0; /* An是1+2+...+a之和, Bn是1^2 + 2^2 +...+b^2之和 An Bn类型可以是long或unsigned int但不能是int(-32767 - 32767)*/ float Cn = 0, Sn; // Cn是 1.0/1 + 1.0/2 + ...+ 1.0/c之和 double也行 scanf("%d %d %d", &a, &b, &c); //获取用户输入
2)利用for循环,按题目符合要求三个对应数之和(while循环也行)
i. 1 + 2 + ... + a之和
一般这种有规律连加之和,一般采用An = An + an ,其中an代表第n个数,An使用前初始化为0
下面的两种数求和也是同样如此
这种形式可能有些人看不太明白,我们可以这样看
第一次循环: A1 = A1 + a1; A1 = 0 所以最终结果是 A1 = a1
第二次循环: A2 = A1 + a2;A1是第一次计算出来的,所以A2 =a1 + a2;
第三次循环: A3 = A2 + a3;A2是第二次计算出来的,所以A3 = a1 + a2 +a3;
以此类推
第n次循环: An = An-1 + an;An-1是第n-1次计算出来的,An = a1 + a2 +...+ an;
for (int i = 1; i <= a; i++) An = i + An;
ii.1^2 + 2^2 +...+b^2之和
for (int m = 1; m <= b; m++) Bn = m * m + Bn;
iii.1.0/1 + 1.0/2 + ...+ 1.0/c之和
for (int n = 1; n <= c; n++) Cn = 1.0 / n + Cn; //为什么用1.0除而非1,/两边都是整型的话是取整,但要是一边或两变有一个小数则结果为浮点数 /*可以这么说整型和整型得出整型 浮点和浮点得出浮点 浮点和整型得出浮点*/
3)输出结果
Sn = An + Bn + Cn; //算出三者之和 printf("%.2f", Sn);//保留两位小数并输出
注意事项: 变量要选择合适的类型,注意要 1.0 / c (对类型的大致范围不太清晰的,可以自己复习下)
参考代码:
#include <stdio.h> int main(void) { int a, b, c; long long An = 0, Bn = 0; //long也行 unsigned int也可 float Cn = 0, Sn; //double也可 scanf("%d %d %d", &a, &b, &c); for (int i = 1; i <= a; i++) //三个for循环求三数之和 An = i + An; for (int m = 1; m <= b; m++) Bn = m * m + Bn; for (int n = 1; n <= c; n++) Cn = 1.0 / n + Cn; Sn = An + Bn + Cn; printf("%.2f", Sn); //注意要1.0去除 return 0; }
0.0分
8 人评分