牛客网刷题 | BC84 牛牛学数列2

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

这次牛牛又换了个数列,他想计算:1+1/2+1/3+…+1/N的值。(保留6位小数)

输入描述:

输入一个整数,范围在0到1000

输出描述:

输出一个浮点数


思路 :

理解题目要求:题目要求计算数列  1+1/2+1/3+…+1/N 的和,其中 N 是一个整数,范围是 0 到 1000。结果需要保留六位小数。

输入处理:读取用户输入的整数 𝑁。

循环计算:使用一个循环从 11 到 𝑁(包括 𝑁),累加每一项 1 / i​。

精度控制:由于题目要求保留六位小数,我们需要在累加过程中就注意精度问题,避免因为浮点数的精度问题导致结果不准确。

输出结果:将计算得到的和转换为字符串格式,确保小数点后有六位数字,然后输出。

  • 在C语言中,scanf 用于读取输入,printf 用于格式化输出。
  • 循环中的 1.0 / i 确保了除法操作的结果是一个浮点数,避免了整数除法的问题。
  • printf 中的 %.6f 格式化输出确保了结果保留六位小数。

代码 1 :


int main()
{
	int a = 0;
	double c = 0;
	scanf("%d", &a);

	for (int b = 1; b <= a; b++)
	{
		c = 1.0 / b + c;
	}

	printf("%.6lf", c);
	return 0;
}

代码 2:

#include <stdio.h> // 引入标准输入输出库

int main() // 主函数的开始
{
    double i = 1; // 定义一个变量i,表示分子,初始值为1
    double n = 0; // 定义一个变量n,用于存放用户输入的整数,初始值为0
    double j = 0; // 定义一个变量j,用于for循环的迭代,初始值为0
    double sum = 0; // 定义一个变量sum,用于累加求和,初始值为0
    scanf("%lf", &n); // 从标准输入读取一个浮点数,存储在变量n中

    if (n == 1) // 如果输入的n等于1
    {
        printf("1\n"); // 输出1,因为1+1/2+...+1/1的和就是1
    }
    else if (n > 0 && n <= 1000) // 如果输入的n大于0且小于等于1000
    {
        for (j = 1; j <= n; j++) // 使用for循环,从1迭代到n
        {
            sum = (i / j) + sum; // 计算每一项1/j,并加到sum上
        }
        printf("%.6lf\n", sum); // 输出累加和sum,保留六位小数
    }
    else // 如果输入的n不满足条件(即n为负数或大于1000)
    {
        printf("输入错误\n"); // 输出错误信息
    }
    
    return 0; // 返回0,表示程序正常结束
}

//改进后的:
#include <stdio.h>

int main() 
{
    double n = 0; // 用户输入
    double sum = 0; // 用于累加的变量,初始化为0
    scanf("%lf", &n); // 读取用户输入的整数

    if (n == 1) 
    {
        printf("1\n"); // 如果输入的n为1,直接输出1
    } 

    else if (n > 0 && n <= 1000) 
    {
        for (double j = 1; j <= n; j++) 
        { // 开始for循环,从1到n
            sum += 1.0 / j; // 直接使用1.0作为分子,累加到sum上
        }
        printf("%.6lf\n", sum); // 输出累加和sum,保留六位小数
    } 

    else 
    {
        printf("输入错误\n"); // 如果输入的n不满足条件,输出错误信息
    }

    return 0; // 程序正常结束
}

/*在这个修改后的版本中,我去掉了 double i = 1; 
这行代码,因为不需要单独定义一个变量来表示分子。
在 for 循环中,直接使用 1.0 / j 来进行计算,
其中 1.0 表示分子,j 表示分母。
这样代码更为简洁,并且避免了不必要的变量定义。*/

代码 3 :

#include <stdio.h>

int main() {
    int N;
    double sum = 0.0; // 用于累加的变量,初始化为0.0

    // 读取输入
    scanf("%d", &N);

    // 循环计算数列和
    for (int i = 1; i <= N; ++i) {
        sum += 1.0 / i; // 注意这里1.0是双精度浮点数,以确保除法结果是浮点数
    }

    // 保留小数点后六位,使用printf的格式化输出来实现
    printf("%.6f\n", sum);

    return 0;
}

知识点 :

浮点数精度:在C语言中,涉及到小数的计算时,需要使用浮点数类型,如 floatdouble。由于题目要求保留六位小数,使用 double 类型可以提供足够的精度。

输入验证:在读取用户输入后,应进行验证以确保输入值在题目要求的范围内(0到1000)。如果不在这个范围内,应提示用户输入错误。

循环控制:使用 for 循环来遍历从1到N(包括N)的整数,并计算每一项的和。

累加求和:在循环中,需要将每一项 1.0 / j 加到累加器 sum 上。注意这里使用 1.0 而不是 1,因为 1.0 是一个 double 类型的值,这样可以确保除法操作的结果是一个浮点数。

格式化输出:使用 printf 函数的格式化输出 %.6lf 来控制输出的精度,保留小数点后六位。

条件语句:使用 ifelse if 语句来处理不同的输入情况,如输入为1时的特殊情况,或者输入不符合要求时的错误提示。

变量初始化:在开始计算之前,应确保所有变量(如累加器 sum)已经被初始化,以避免使用未初始化的变量。

整数与浮点数的除法:在C语言中,当两个操作数都是整数时,除法结果也是整数。因此,至少有一个操作数必须是浮点数,以进行浮点除法。

代码风格:保持代码的可读性,使用适当的变量命名,添加注释来解释代码的功能。

资源限制:注意题目中提到的时间限制和空间限制,确保算法的效率。

四舍五入:题目要求结果保留六位小数,这意味着需要进行四舍五入处理,C语言标准库中 printf 函数可以直接完成这个任务。

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/626849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境变量详解

文章目录 1. 前言2 什么是PATH环境变量3. 如何添加PATH环境变量4. 系统中的其他环境变量5. 环境变量的由来6. 环境变量的基本操作6.1 设置环境变量6.2 通过getenv获取环境变量6.3 环境变量的应用场景 7. 通过命令行参数获取环境变量 1. 前言 本篇文章将以PATH环境变量为例来对整…

基于svpwm(羊角波)控制策略的二极管钳位型三电平逆变器双闭环simulink仿真

本人搭建了基于svpwm&#xff08;羊角波&#xff09;控制策略的二极管钳位型三电平逆变器双闭环simulink仿真模型&#xff0c;该模型按照三电平SVPWM理论生成羊角波&#xff0c;并搭建了双闭环控制系统。效果十分优异&#xff0c;配置参考文献&#xff0c;适合学习使用。 DC&a…

Music Star Studio

Music Star Studio资产包配有一个模块化音乐工作室、40多个游戏道具和完整的场景。 音乐之星工作室包括一个主舞台、一个评委舞台和一个观众座位。工作室是模块化的,您可以使用提供的建筑元素进一步设计您的工作室,如柱子、地板砖、墙砖、楼梯、围栏、舞台、玻璃墙、墙报等。…

C++进阶:红黑树介绍及模拟实现(图示详解过程)

C进阶&#xff1a;红黑树介绍及模拟实现 上次介绍了AVL树&#xff1a;C进阶&#xff1a;AVL树详解及模拟实现&#xff08;图示讲解旋转过程&#xff09; 今天就来紧接着来红黑树啦!!! 文章目录 1.红黑树介绍约束规则 2.项目文件规划3.整体框架&#xff08;节点和Tree&#xf…

从零开始:C++ String类的模拟实现

文章目录 引言1.类的基本结构2.构造函数和析构函数3.基本成员函数总结 引言 在C编程中&#xff0c;字符串操作是非常常见且重要的任务。标准库中的std::string类提供了丰富且强大的功能&#xff0c;使得字符串处理变得相对简单。然而&#xff0c;对于学习C的开发者来说&#x…

树莓派|串口通信协议

1、串口通信原理 串口通讯(Serial Communication)&#xff0c;是指外设和计算机间&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数据的一种通讯方式。串口是一种接口标准&#xff0c;它规定了接口的电气标准&#xff0c;没有规定接口插件电缆以及使用的协议。串…

霍廷格电源 Tru plasma DC3030 通快DC3040 MF3030

霍廷格电源 Tru plasma DC3030 通快DC3040 MF3030

谈谈 Spring 的过滤器和拦截器

前言 我们在进行 Web 应用开发时&#xff0c;时常需要对请求进行拦截或处理&#xff0c;故 Spring 为我们提供了过滤器和拦截器来应对这种情况。那么两者之间有什么不同呢&#xff1f;本文将详细讲解两者的区别和对应的使用场景。 &#xff08;本文的代码实现首先是基于 Sprin…

【微命令】git config如何配置全局的用户和邮箱?(--global user.name、user.email;git config --help)

虽然经常用&#xff0c;也经常忘记&#xff0c;特此记录。 命令 git config --global user.name "myname" git config --global user.email test163.com另外一种方式 help git config --help |grep email | grep name直接help查看

OpenAI推出旗舰AI模型GPT-4o并免费开放

&#x1f989; AI新闻 &#x1f680; OpenAI推出旗舰AI模型GPT-4o并免费开放 摘要&#xff1a; OpenAI 未来的产品将以免费为优先&#xff0c;以让更多人使用为目标。OpenAI 发布了桌面版本的程序和更新后的 UI&#xff0c;更加简单自然。推出了新一代大模型 GPT-4o&#xf…

PLL-分频器

概念 分频器的性能一般用四个参数来规定:(1)分频比&#xff0c;(2)最大允许输入频率fmax&#xff0c;(3)功耗&#xff0c;(4)最小允许输入电压摆幅(也叫“灵敏度”)。虽然分频器的相位噪声也很重要&#xff0c;但在大多数情况下它可以忽略不计。 把一般分频器的输入灵敏度画成…

AI实景自动无人直播软件:引领直播新时代的智能化创作工具,实现一部手机24小时直播拓客

在科技飞速发展的今天&#xff0c;AI实景自动无人直播软件以其独特的功能和便捷性&#xff0c;正成为商家和内容创作者们的利器。这款先进的软件支持智能讲解、一键开播、智能回复以及手机拍摄真实场景等特性&#xff0c;为用户呈现了全新的直播体验&#xff0c;引领着直播行业…

K8s 二进制部署 上篇

一 K8S按装部署方式&#xff1a; ① Minikube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特 性使用。 部署地址&#xff1a;https://kubernetes.io/docs/setup/minikube ② Kubeadmin Kubeadmin也是一个工…

目标检测算法YOLOv6简介

YOLOv6由Chuyi Li等人于2022年提出&#xff0c;论文名为&#xff1a;《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/2209.02976 &#xff0c;项目网页&#xff1a;https://github.c…

深度学习设计模式之简单工厂模式

文章目录 前言一、简单工厂设计模式的作用&#xff1f;二、详细分析1.核心组成2.实现步骤3.示例代码4.优缺点优点缺点 5.使用场景 总结 前言 本文主要学习简单工厂设计模式&#xff0c;这个设计模式主要是将创建复杂对象的操作单独放到一个类中&#xff0c;这个类就是工厂类&a…

详述进程的地址空间

进程的地址空间 合法的地址 (可读或可写) 代码 (main, %rip 会从此处取出待执行的指令)&#xff0c;只读数据 (static int x)&#xff0c;读写堆栈 (int y)&#xff0c;读写运行时分配的内存 (???)&#xff0c;读写动态链接库 (???) 非法的地址 NULL&#xff0c;导致 se…

Gooxi发布最新AI服务器:加速生成式AI落地 更懂AI

近日&#xff0c;Gooxi发布最新训推一体AI服务器&#xff0c;以大容量内存和灵活的高速互连选项满足各种AI应用场景&#xff0c;最大可能支持扩展插槽&#xff0c;从而大幅提升智能算力性能&#xff0c;以最优的性能和成本为企业的模型训练推理落地应用提供更好的通用算力。 AI…

FSMC的NOR Flash/PSRAM 控制器功能介绍(STM32F4)

目录 概述 1 FSMC支持的类型 1.1 信号类型概述 1.2 FSMC的应用 2 外部存储器接口信号 2.1 I/O NOR Flash 2.2 PSRAM/SRAM 3 支持的存储器和事务 4 通用时序规则 5 NOR Flash/PSRAM 控制器异步事务 5.1 模式 1 - SRAM/PSRAM (CRAM) 5.2 模式 A - SRAM/PSRAM (CRAM…

GPU Burn测试指导

工具下载链接&#xff1a; https://codeload.github.com/wilicc/gpu-burn/zip/master测试方法&#xff1a; 上传工具到操作系统下&#xff0c;解压缩工具&#xff0c;使用make命令完成编译&#xff08;确保cuda环境变量已经配置成功、 nvcc -v能显示结果&#xff09;。 如果安…

图扑智慧农业——生态鱼塘数字孪生监控

智慧农业园作为新型农业经营模式&#xff0c;正在以其高效、环保、可持续的特点受到广泛关注。智慧鱼塘作为智慧农业中一项关键技术&#xff0c;结合物联网、人工智能、云计算等技术&#xff0c;实现对新型养殖模式的实时监控、优化与管理。 效果展示 图扑软件应用自研 HT for…