寻光


私信TA

用户名:RITD

访问量:28148

签 名:

追寻最优解

等  级
排  名 424
经  验 4958
参赛次数 0
文章发表 13
年  龄 20
在职情况 学生
学  校 East Electricity
专  业 计科

  自我简介:

很菜所以很努力

解题思路:   先把这个题目一步一步分解,再利用代码把分出来的的步骤一步一步解决,做很多题都是一样的

                 先看此题要求:求以下三数的和,保留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 人评分

  评论区

  • «
  • »