【问题描述】
求以下三正整数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和。
【输入形式】
a b c
【输出形式】
sum=xx.xx
【样例输入】
100 50 10
【样例输出】
sum=47977.93
注意要点:
1)输出要保留两位小数,有精度要求,所以定义时要注意;
2)输出形式中为sum=xx.xx,所以代码应为printf("sum=%d",sum);
3)分析题目,明晰题意是分别要求三个的和,此处用两个方法可以分别解决,第一种是直接在主函数中暴力解决,还一种是用函数解决,可以多次利用这一个函数;
4)有多处运用多种未知数,需要赋予初始值!!
答案1:暴力解决
#include<stdio.h>
#include<math.h>
int main ()
{
int a,b,c,sum1=0,i,j,k;
double sum2=0,sum3=0,item=1,sum=0;
scanf("%d%d%d",&a,&b,&c);
for(i=1;i<=a;i++)
{
sum1=sum1+i;
}
for(j=1;j<=b;j++)
{
sum2=sum2+pow(j,2);
}
for(k=1;k<=c;k++)
{
item=1.0/k;
sum3=sum3+item;
}
sum=sum1+sum2+sum3;
printf("sum=%.2f",sum);
return 0;
}
注意:字母一定要一一对应,不要出现在j或k的循环中还用i来表示,这样是错误的,要细心!!!
ps:此处也可以不用数学函数,在第二个循环中可以写成sum=sum+j*j;这样也可以,数学函数只是一种方法。
答案2:函数法(如果一个代码中多次需要用到某一循环,则可以用这个办法)
#include<stdio.h>
int f(int n);
int A(int x);
double B(int h);
int main()
{
int a,b,c;
double sum=0,sum1=0,sum2=0,sum3=0; //千万不能忘记给未知数赋初始值
scanf("%d%d%d",&a,&b,&c);
sum1=f(a);
sum2=A(b);
sum3=B(c);
sum=sum1+sum2+sum3;
printf("%.2f",sum);
return 0;
}
int f(int n)
{
int a,sum1=0,i;
a=n;
for(i=1;i<=a;i++)
{
sum1=sum1+i;
}
return sum1;
}
int A(int x)
{
int b,j,sum2=0;
b=x;
for(j=1;j<=b;j++)
{
sum2=sum2+j*j; //也可以采用数学函数法
}
return sum2;
}
double B(int h)
{
int c,k;
double sum3=0;
c=h;
for(k=1;k<=c;k++)
{
sum3=sum3+1.0/k;
}
return sum3;
}