解题思路以及注意事项:

  1. 注意前面用double定义后面输出就得用%lf。

  2. 注意循环开始和结尾,否则容易出错。

实例代码:

#include"stdio.h"
int main()
{
    double a,b,c,sum1=0,sum2=0,sum3=0,i,sum=0;
    scanf("%lf",&a);
    scanf("%lf",&b);
    scanf("%lf",&c);
    for(i=1;i<=a;i++)                 //开始和结束非常重要
    {
        sum1+=i;    
    }
    for(i=1;i<=b;i++)
    {
        sum2+=i*i;
    }
    for(i=1;i<=c;i++)
    {
        sum3+=1.0/i;                  //注意要用1.0/i
    }
    sum=sum1+sum2+sum3;
    printf("%.2lf",sum);
    return 0;
}

还有什么不懂的请在下面评论区留言,小方会及时为您解答

点赞(40)
 

0.0分

64 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 165 条评论

青青草原抓羊 6年前 回复TA
#include<stdio.h>
 int main(){
 	int sum1=0;
 	int sum2=0;
 	int sum3=0;
 	int i;
 	i=1;
 	float a,b,c;
 	scanf("%f%f%f",&a,&b,&c);
 	while(i<a){
 		sum1=sum1+i;
 		i++;
 		printf("%.2f\n",sum1);
 			
	 }
	while(i<b){
		sum2=sum2+i*i;
		i++;
		printf("%.2f\n",sum2);	
	}
	while(i<c){
		sum3=sum3+1.0/i;
		i++;
		printf("%.2f\n",sum3);
	}

 }
请问为什么这么写运行的结果都是0.00呢?
我爱业勤 6年前 回复TA
@卖小女孩的火柴 1/i只是取整数,1.0/i才是取小数
卖小女孩的火柴 6年前 回复TA
我用1/i的结果 和1.0/i的结果不同,为什么呀?
itwai 6年前 回复TA
@依然范特西 为什么不可以
sss 6年前 回复TA
@sss MD把那个print去掉就对了。。。。。
sss 6年前 回复TA
#include<stdio.h>
int main()
{
    double a,b,c;
    double x1=0,x2=0,x3=0;
    int i,j,k;
    double x;
    printf("ple enter three nums:");
    scanf("%lf %lf %lf",&a,&b,&c);
    for(i=1;i<a+1;i++)
    {
        x1+= i;
    }
    for(j=1;j<b+1;j++)
    {
        x2+= (j*j);
    }
    for(k=1;k<c+1;k++)
    {
        x3+= (double)1/k;
    }
    x=x1+x2+x3;
    //printf("x1=%lf,x2=%lf,x3=%lf\n",x1,x2,x3);
    printf("%.2lf",x);
    return 0;
}
这个哪里有问题呢,测试了样例输入,没问题啊,提交就报错
RickDong 6年前 回复TA
#include<stdio.h>
int sum_a(int a)
{
    int i,result=0;
    for(i=1;i<=a;i++)
        result+=i;
    return result;
}
int square_sum(int a)
{
    int i,result=0;
    for(i=1;i<=a;i++)
        result+=i*i;
    return result;
}
double reciprocal_num(int a)
{
    int i;
    double result=0;
     for(i=1;i<=a;i++)
        result+=1.0/i;
    return result;
}

int main(void)
{
    int a,b,c;
    double sum=0;
    printf("Please enter three numbers:");
    scanf("%d %d %d",&a,&b,&c);
    sum=sum_a(a)+square_sum(b)+reciprocal_num(c);
    printf("%.2lf",sum);

    return (0);
}
stadio 6年前 回复TA
@Arturia 注意前面用double定义后面输出就得用%lf。这里正确应为英文字母小写的l,而不是你英文字母大写的L。如果前面用long double定义后面输出就得用%Lf。
Arturia 6年前 回复TA
#include<stdio.h>
int main()
{
	double sum1=0,sum=0,sum2=0,sum3=0,a,b,c,i;
	scanf("%Lf %Lf %Lf",&a,&b,&c);

	for(i=1;i<=a;i++)
	{
		sum1=sum1+i;
	}
	for(i=1;i<=b;i++)
	{
		sum2=sum2+i*i;
	}
	for(i=1;i<=c;i++)
	{
		sum3=sum3+1.0/i;
	}
    sum=sum1+sum2+sum3;
	printf("%.2Lf",sum);
	return 0;
}
为什么会提示答案错误呢
Christ 6年前 回复TA
@eleven printf  Lf  输出的是 long double,  输出double  用lf就好了