解题思路以及注意事项:

  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 条评论

JayYu 4年前 回复TA
@代梦对数 @Monsterpp 已经定义i为double了
勤勤恳恳 4年前 回复TA
# include <stdio.h>
int main()
{
    double a, b, c;
    double i, j, k;
    i,j = 0; k = 1;
    double sum = 0;

    scanf ("%lf %lf %lf", &a, &b, &c);


    while (i <= a)
    {
        sum = sum + i;
        i++;
    }

    while (j <= b)
    {
        sum = sum + j*j;
        j++;
    }

    while(k <= c)
    {
        sum = 1.0/k + sum;
        k++;
    }

    printf("%0.2lf",sum);

    return 0;
}
样例可以通过,但还是显示答案错误,是哪里有问题呢?
勤勤恳恳 4年前 回复TA
@早睡先生 保留两位小数?
onemorecod 4年前 回复TA
#include <stdio.h>

int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	int sum1=0,sum2=0;
	double sum3=0;
	int i;
	
	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;
	}
	
	printf("%.2f",sum1+sum2+sum3);
	
	return 0;
}
onemorecod 4年前 回复TA
@早睡先生 scanf中的%lf之间要加空格
古若求水 4年前 回复TA
@代梦对数 可能是编译软件不同吧
早睡先生 4年前 回复TA
#include<stdio.h>
int main()
{
    double a,b,c,sa,sb,sc,i;
    scanf("%lf%lf%lf",&a,&b,&c);
    for(sa=0,i=1;i<=a;i++)
    sa=sa+i;
    for(sb=0,i=1;i<=b;i++)
    sb=sb+i*i;
    for(sc=0,i=1;i<c;i++)
    sc=sc+(1.0)/i;
    printf("%lf",sa+sb+sc);
    return 0;
}


为什么会显示答案错误呢
Monster00 4年前 回复TA
@代梦对数 @201306 可是我的程序用的就是1/i也通过编译了啊。。。
Min 4年前 回复TA
#include <stdio.h>
int main (void)
{
	double a,b,c,d=1,f=1,h=1;
	int i,j,k;
	scanf("%lf%lf%lf", &a,&b,&c);
	double e=a;
	for(i = 1; i <a; ++i)   
	{
		e+=d;
		d++;
	}
	double g=b*b;
	for(j = 1; j < b; ++j)    
	{
		g+=f*f;
		f++;
	}
	double n=1/c;
	for(k = 1; k < c; ++k)	
	{
		n+=1/h;
		++h;
	}
	printf("%.2lf", e+g+n);
	return 0;
}
虽然正确,但是复杂一些- -
HeroREN 4年前 回复TA
@代梦对数 1/i的话两个整型相除 不会保留小数的有效位小数