【练习】
题目要求:
求以下三数的和,保留2位小数 1~a之和 与 1~b的平方和 与 1~c的倒数和 之和。
例如:
输入:a b c
输出:1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/c
输入:100 50 10
输出:47977.93
解法一:while循环
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,i=1;
double suma,sumb,sumc,sum;
scanf("%lf %lf %lf",&a,&b,&c);
while(i) //while死循环
{
if(i<=a)
{
suma += i; //由1+2+...加到a
}
if(i<=b)
{
sumb += pow(i,2);//调用pow函数计算i的2次方
}
if(i<=c)
{
sumc += 1.0/i; //计算1~c的倒数和
}
if(i>a&&i>b&&i>c) //当条件都不满足时跳出
{
break;
}
i++;
}
sum = suma + sumb + sumc;//总和
printf("%.2f",sum); //保留两位小数输出
return 0;
}
解法二:for循环
#include <stdio.h>
int main()
{
double a,b,c,i;
double suma,sumb,sumc,sum;
scanf("%lf %lf %lf",&a,&b,&c);
for(i=1;i<=a;i++) //从1+2+3+..+a
{
suma += i;
}
for(i=1;i<=b;i++)
{
sumb += i * i; //从1^2+2^2+...+b^b
}
for(i=1;i<=c;i++)
{
sumc += 1.0 / i; //从1~c的倒数和
}
sum = suma + sumb + sumc;
printf("%.2lf",sum);
return 0;
}