以下是我写的,但是不对
#include
#include
int main(){
double sum=0;
int m,n,i,count=0;
scanf("%d%d",&n,&m);
while(scanf("%d%d",&n,&m)==2&&n!=m)
{
for(i=n;i<=m;i++){
sum+=1.0/pow(i,2);
}
printf("case %d: %.5f",++count,sum);
scanf("%d%d",&n,&m);
}
}
兄弟,你这个有问题啊代码!
第一个,依照题目来说,可以连续输入多组数据,然后在输入0 0的时候结束输入
然后一口气输出所有答案,这么看来必然会有数组的存在
先多次输入数据,每次输入数据的时候都会有一次计算,计算结果存入数组,最后一口气输出,在你的i^2的时候会造成溢出,超出int的最大可以容纳的数值,所以用/i/i
#include<stdio.h>
int main(){
double data[10];
double sum=0;
int m,n,count=0,i,j;
printf("请输入m,n的数值:\n");
scanf("%d%d",&n,&m);
while(n != 0 && m != 0 ){
for(i=n;i<=m;i++){
sum+=1.0/i/i;
}
data[count]=sum;
printf("请输入m,n的数值:\n");
scanf("%d%d",&n,&m);
count++;
}
for(j=0;j<count;j++){
printf("case %d: %.5f\n",(j+1),data[j]);
}
}
pow(i,2),i较大时候,会不会溢出?改成这样pow((1/i),2)可不可以, 另外1/i 保留6位小数以后 再 pow
这样写
#include<math.h>
#include<stdio.h>
int main(){
double sum=0;
int m,n,i,count=0;
while(scanf("%d%d",&n,&m)==2&&n!=m)
{
sum = 0; //每次计算,sum都要初始化一下
for(i=n;i<=m;i++){
sum+=1.0/pow((double)i,(double)2.0);
}
printf("case %d: %.5f",++count,sum);
}
}
采纳