ZZNUOJ(C/C++)基础练习1041——1050(详解版)

news2025/2/3 5:08:07

1041 : 数列求和2

题目描述

输入一个整数n,输出数列1-1/3+1/5-……前n项的和。

输入

输入只有一个整数n。

输出

结果保留2为小数,单独占一行。

样例输入

3

样例输出

0.87

注意sum += 1相当于sum=sum+1

注意sum *= 1相当于sum=sum*1

C语言版

#include<stdio.h> // 包含标准输入输出库
#include<math.h> // 包含数学库(虽然在这个程序中没有用到数学库的功能)

int main() // 主函数
{
    int n, i; // 定义两个整型变量n和i,用于存储用户输入的项数和循环计数
    double sum = 0, mid = -1; // 定义两个双精度浮点型变量sum和mid,分别用于存储数列和和交替符号的项
    scanf("%d", &n); // 从用户输入中读取一个整数,存储到变量n中

    // 计算数列和
    for (i = 1; i <= n; i++) // 从1到n循环
    {
        mid *= -1.0; // 交替符号
        sum += mid / (2 * i - 1); // 计算当前项并加到sum上
    }

    printf("%.2f\n", sum); // 输出数列和,保留两位小数
    return 0; // 程序正常结束
}

C++版 

#include<iostream> // 包含标准输入输出流库
#include<iomanip> // 包含输入输出流格式化库
using namespace std; // 使用标准命名空间std

int main() // 主函数
{
    int n, i; // 定义两个整型变量n和i,用于存储用户输入的项数和循环计数
    double sum = 0, mid = -1; // 定义两个双精度浮点型变量sum和mid,分别用于存储数列和和交替符号的项
    cin >> n; // 从标准输入读取一个整数,存储到变量n中

    // 计算数列和
    for (i = 1; i <= n; i++) // 从1到n循环
    {
        mid *= -1.0; // 交替符号
        sum += mid / (2 * i - 1); // 计算当前项并加到sum上
    }

    cout << setprecision(2) << fixed << sum << endl; // 使用setprecision(2)和fixed设置小数精度为2位,并输出数列和
    return 0; // 程序正常结束
}

1042 : 数列求和3

题目描述

求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数。

输入

输入正整数n(n>0)。

输出

输出一个实数,保留3位小数,单独占一行。

样例输入

5

样例输出

0.917

C语言版

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

int main() // 主函数
{
    int n, i; // 定义两个整型变量n和i,用于存储用户输入的项数和循环计数
    double sum = 0, mid = -1; // 定义两个双精度浮点型变量sum和mid,分别用于存储数列和和交替符号的项
    scanf("%d", &n); // 从用户输入中读取一个整数,存储到变量n中

    // 计算数列和
    for (i = 1; i <= n; i++) // 从1到n循环
    {
        mid *= -1.0; // 交替符号
        sum += mid * i / (2 * i - 1); // 计算当前项并加到sum上
    }

    printf("%.3f\n", sum); // 输出数列和,保留三位小数
    return 0; // 程序正常结束
}

C++版 

#include<iostream> // 包含标准输入输出流库
#include<iomanip> // 包含输入输出流格式化库
using namespace std; // 使用标准命名空间std

int main() // 主函数
{
    int n, i; // 定义两个整型变量n和i,用于存储用户输入的项数和循环计数
    double sum = 0, mid = -1; // 定义两个双精度浮点型变量sum和mid,分别用于存储数列和和交替符号的项
    cin >> n; // 从标准输入读取一个整数,存储到变量n中

    // 计算数列和
    for (i = 1; i <= n; i++) // 从1到n循环
    {
        mid *= -1.0; // 交替符号
        sum += mid * i / (2 * i - 1); // 计算当前项并加到sum上
    }

    cout << setprecision(3) << fixed << sum << endl; // 使用setprecision(3)和fixed设置小数精度为3位,并输出数列和
    return 0; // 程序正常结束
}

 

1043 : 最大值

题目描述

输入一个整数n和n个整数,输出这n个整数的最大值。

输入

输入有两行:第一行是一个正整数n,第二行是n个整数。

输出

输出包含一个整数,即n个数中的最大值,单独占一行。

样例输入

4
3 7 5 6

样例输出

7

注意设立变长数组,必须在输入n之后 

法一

C语言版

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

int main() {
    int n, i;  // 定义变量n用于存储数组大小,i用于循环控制
    scanf("%d", &n);  // 从输入中读取数组的大小n

    int arr[n];  // 定义一个动态数组,大小由用户输入决定

    // 从用户输入中读取数组的每个元素
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);  // 逐个读取输入的整数,存储到数组arr中
    }

    // 初始化最大值变量为数组的第一个元素
    int max = arr[0];  

    // 遍历数组,寻找最大值
    for (i = 1; i < n; i++) {
        if (arr[i] > max) {  // 如果当前元素大于当前最大值
            max = arr[i];    // 更新最大值
        }
    }

    // 输出最大值
    printf("%d\n", max);

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

C++版

#include<iostream>  // 包含C++标准输入输出流库
using namespace std; // 使用标准命名空间

int main() {
    int n, i;  // 定义变量n用于存储数组大小,i用于循环控制
    cin >> n;  // 从标准输入读取数组的大小n

    int arr[n];  // 定义一个变长数组,大小由输入决定

    // 从用户输入中读取数组的每个元素
    for (i = 0; i < n; i++) {
       cin>>arr[i];  // 使用cin逐个读取输入的整数,存储到数组arr中
    }

    // 初始化最大值变量为数组的第一个元素
    int max = arr[0];

    // 遍历数组,寻找最大值
    for (i = 1; i < n; i++) {
        if (arr[i] > max) {  // 如果当前元素大于当前最大值
            max = arr[i];    // 更新最大值
        }
    }

    // 输出最大值
    cout << max << endl;

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

法二(与法一没太大区别)

C语言版 

#include<stdio.h>  // 包含标准输入输出头文件

int main() {
    int n, i, max;  // 定义变量:n表示数组大小,i用于循环控制,max用于存储最大值

    // 读取数组大小n和数组的第一个元素(初始化最大值)
    scanf("%d%d", &n, &max);  

    int arr[n];  // 定义一个动态数组,大小由用户输入决定

    // 从数组的第二个元素开始读取(因为第一个元素已经读取并赋值给max)
    for (i = 1; i < n; i++) {
        scanf("%d", &arr[i]);  // 读取数组的第i个元素
        if (arr[i] > max) {    // 如果当前元素大于当前最大值
            max = arr[i];      // 更新最大值
        }
    }

    // 输出最大值
    printf("%d\n", max);

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

C++版 

#include<iostream>  // 包含C++标准输入输出流库
using namespace std;  // 使用标准命名空间,避免重复书写std::

int main() {
    int n, i, max;  // 定义变量:n表示数组大小,i用于循环控制,max用于存储最大值

    // 从标准输入读取数组的大小n和数组的第一个元素(初始化最大值)
    cin >> n >> max;

    int arr[n];  // 定义一个动态数组,大小由由输入决定(C++中不推荐使用VLA,但这里为了与C语言兼容)

    // 从数组的第二个元素开始读取(因为第一个元素已经读取并赋值给max)
    for (i = 1; i < n; i++) {
        cin >> arr[i];  // 读取数组的第i个元素
        if (arr[i] > max) {  // 如果当前元素大于当前最大值
            max = arr[i];    // 更新最大值
        }
    }

    // 输出最大值
    cout << max << endl;

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

法三 (排序思想)

C语言版

#include<stdio.h>  // 包含标准输入输出头文件

int main() {
    int n, i;  // 定义变量:n表示数组大小,i用于循环控制

    // 从输入中读取数组的大小n
    scanf("%d", &n);

    int arr[n];  // 定义一个变长数组(VLA),大小由输入决定

    // 从输入中读取数组的每个元素
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);  // 逐个读取输入的整数,存储到数组arr中
    }

    // 使用冒泡排序的思想,将数列最大值转移到最后一个元素
    for (i = 0; i < n-1; i++) {
        if (arr[i] > arr[i+1]) {  // 如果当前元素大于下一个元素
            int mid = arr[i];     // 交换两个元素的位置
            arr[i] = arr[i+1];
            arr[i+1] = mid;
        }
    }

    // 输出最大值(位于数组的最后一个位置)
    printf("%d\n", arr[n-1]);

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

C++版(可使用容器vector替换数组)

#include<iostream>  // 包含C++标准输入输出流库
using namespace std;

int main() {
    int n, i;  // 定义变量:n表示数组大小,i用于循环控制

    // 从标准输入读取数组的大小n
    cin >> n;

    int arr[n];  // 定义一个变长数组,大小由输入决定

    // 从标准输入读取数组的每个元素
    for (i = 0; i < n; i++) {
        cin >> arr[i];  // 逐个读取输入的整数,存储到数组arr中
    }

    // 使用冒泡排序的思想,将数列最大值转移到最后一个元素
    for (i = 0; i < n - 1; i++) {
        if (arr[i] > arr[i + 1]) {  // 如果当前元素大于下一个元素
            int mid = arr[i];       // 交换两个元素的位置
            arr[i] = arr[i + 1];
            arr[i + 1] = mid;
        }
    }

    // 输出最大值(位于数组的最后一个位置)
    cout << arr[n - 1] << endl;

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

法四(使用C++的nth_element函数)

了解nth_element函数:nth_element函数——C++快速选择函数-CSDN博客

#include<iostream>  // 包含标准输入输出流库
#include<algorithm> // 包含算法库,用于使用 nth_element
using namespace std; // 使用标准命名空间

int main()
{
    int n, i; // 定义变量 n 和 i,分别用于存储数组大小和循环索引
    cin >> n; // 输入数组的大小
    int arr[n]; // 定义一个动态数组,存储 n 个整数(C++11之前 不推荐这样定义动态数组)

    for(i = 0; i < n; i++) // 循环输入数组的每个元素
    {
        cin >> arr[i]; // 输入数组元素
    } 

    nth_element(arr, arr + n - 1, arr + n); // 调用 nth_element,将第 n 小的元素(即最大值)放到第n个位置(对应下标为n-1)

    cout << arr[n - 1] << endl; // 输出第 n 小的元素(即数组中的最大值)
  
    return 0; // 程序结束
}

下面这个代码逻辑运算是对的,但在oj上过不了 

#include<iostream>  // 包含标准输入输出流库
#include<algorithm> // 包含算法库,用于使用 nth_element
using namespace std; // 使用标准命名空间

int main()
{
    int n, i; // 定义变量 n 和 i,分别用于存储数组大小和循环索引
    cin >> n; // 输入数组的大小
    vector<int> arr(n); // 使用 vector 定义动态数组,存储 n 个整数

    for(i = 0; i < n; i++) // 循环输入数组的每个元素
    {
        cin >> arr[i]; // 输入数组元素
    } 

    nth_element(arr.begin(), arr.begin() + n - 1, arr.end()); // 调用 nth_element
    // 这里的目的是找到数组中第 n 小的元素(即数组中的最大值)
    // nth_element 会将第 n 小的元素放到 arr[n-1] 的位置上
    // 并且保证 arr[n-1] 之前的元素都不大于 arr[n-1]

    cout << arr[n - 1] << endl; // 输出第 n 小的元素(即数组中的最大值)
    return 0; // 程序结束
}

法五(使用C++的max_element函数,涉及到数组指针) 

max_element 函数会返回指向数组中最大元素的指针,然后通过解引用指针 *a 来输出最大值。了解max_element函数:简要介绍C++中的 max 和 min 函数以及返回值-CSDN博客

#include<iostream>  // 包含标准输入输出流库
#include<algorithm> // 包含算法库,用于使用 max_element
using namespace std; // 使用标准命名空间

int main()
{
    int n, i; // 定义变量 n 和 i,分别用于存储数组大小和循环索引
    cin >> n; // 输入数组的大小
    int arr[n]; // 定义一个动态数组,存储 n 个整数

    for(i = 0; i < n; i++) // 循环输入数组的每个元素
    {
        cin >> arr[i]; // 输入数组元素
    } 

    int* a = max_element(arr, arr + n); // 使用 max_element 找到数组中的最大值
    // max_element 返回指向数组中最大元素的指针

    cout << (*a) << endl; // 输出最大值
    return 0; // 程序结束
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析DDOS攻击及防御策略

DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种通过大量计算机或网络僵尸主机对目标服务器发起大量无效或高流量请求&#xff0c;耗尽其资源&#xff0c;从而导致服务中断的网络攻击方式。这种攻击方式利用了分布式系统的特性&#xff0c;使攻击规模更大、影响范围更广…

深度学习 Pytorch 神经网络的学习

本节将从梯度下降法向外拓展&#xff0c;介绍更常用的优化算法&#xff0c;实现神经网络的学习和迭代。在本节课结束将完整实现一个神经网络训练的全流程。 对于像神经网络这样的复杂模型&#xff0c;可能会有数百个 w w w的存在&#xff0c;同时如果我们使用的是像交叉熵这样…

【回溯】目标和 字母大小全排列

文章目录 494. 目标和解题思路&#xff1a;回溯784. 字母大小写全排列解题思路&#xff1a;回溯 494. 目标和 494. 目标和 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式…

Linux系统上安装与配置 MySQL( CentOS 7 )

目录 1. 下载并安装 MySQL 官方 Yum Repository 2. 启动 MySQL 并查看运行状态 3. 找到 root 用户的初始密码 4. 修改 root 用户密码 5. 设置允许远程登录 6. 在云服务器配置 MySQL 端口 7. 关闭防火墙 8. 解决密码错误的问题 前言 在 Linux 服务器上安装并配置 MySQL …

记录一次,PyQT的报错,多线程Udp失效,使用工具如netstat来检查端口使用情况。

1.问题 报错Exception in thread Thread-1: Traceback (most recent call last): File "threading.py", line 932, in _bootstrap_inner File "threading.py", line 870, in run File "main.py", line 456, in udp_recv IndexError: list…

群晖NAS安卓Calibre 个人图书馆

docker 下载镜像johngong/calibre-web&#xff0c;安装之 我是本地的/docker/xxx/metadata目录 映射到 /usr/local/calibre-web/app/cps/metadata_provider CALIBREDB_OTHER_OPTION 删除 CALIBRE_SERVER_USER calibre_server_user 缺省用户名口令 admin admin123 另外有个N…

android主题设置为..DarkActionBar.Bridge时自定义DatePicker选中日期颜色

安卓自定义DatePicker选中日期颜色 背景&#xff1a;解决方案&#xff1a;方案一&#xff1a;方案二&#xff1a;实践效果&#xff1a; 背景&#xff1a; 最近在尝试用原生安卓实现仿element-ui表单校验功能&#xff0c;其中的的选择日期涉及到安卓DatePicker组件的使用&#…

彩色控制台,自动换行...学习个新概念:流操控器![more cpp--11]

孩子们&#xff0c;我回来了。先看看今天我又学了什么CPP的没啥用新特性。彩色的控制台&#xff01; 还有很多的新花样&#xff01; 事情要从去年八月讲起&#xff0c;我那个时候在研究流函数&#xff0c;写了一些比较愚笨的代码。 为什么要研究这个呢&#xff1f;虽然我们的C…

基于单片机的盲人智能水杯系统(论文+源码)

1 总体方案设计 本次基于单片机的盲人智能水杯设计&#xff0c;采用的是DS18B20实现杯中水温的检测&#xff0c;采用HX711及应力片实现杯中水里的检测&#xff0c;采用DS1302实现时钟计时功能&#xff0c;采用TTS语音模块实现语音播报的功能&#xff0c;并结合STC89C52单片机作…

TensorFlow 示例摄氏度到华氏度的转换(一)

TensorFlow 实现神经网络模型来进行摄氏度到华氏度的转换&#xff0c;可以将其作为一个回归问题来处理。我们可以通过神经网络来拟合这个简单的转换公式。 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 …

win10部署本地deepseek-r1,chatbox,deepseek联网(谷歌网页插件Page Assist)

win10部署本地deepseek-r1&#xff0c;chatbox&#xff0c;deepseek联网&#xff08;谷歌网页插件Page Assist&#xff09; 前言一、本地部署DeepSeek-r1step1 安装ollamastep2 下载deepseek-r1step2.1 找到模型deepseek-r1step2.2 cmd里粘贴 后按回车&#xff0c;进行下载 ste…

【memgpt】letta 课程6: 多agent编排

Lab 6: Multi-Agent Orchestration 多代理协作 letta 是作为一个服务存在的,app通过restful api 通信 多智能体之间如何协调与沟通? 相互发送消息共享内存块,让代理同步到不同的服务的内存块

Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

【Linux】opencv在arm64上提示找不到libjasper-dev

解决opencv在arm64上提示找不到libjasper-dev的问题。 本文首发于❄慕雪的寒舍 问题说明 最近我在尝试编译opencv&#xff0c;安装依赖项libjasper1和libjasper-dev的时候就遇到了这个问题。在amd64平台上&#xff0c;我们可以通过下面的命令安装&#xff08;ubuntu18.04&…

LabVIEW在电机自动化生产线中的实时数据采集与生产过程监控

在电机自动化生产线中&#xff0c;实时数据采集与生产过程监控是确保生产效率和产品质量的重要环节。LabVIEW作为一种强大的图形化编程平台&#xff0c;可以有效实现数据采集、实时监控和自动化控制。详细探讨如何利用LabVIEW实现这一目标&#xff0c;包括硬件选择、软件架构设…

Baklib揭示内容中台与人工智能技术的创新协同效应

内容概要 在当今信息爆炸的时代&#xff0c;内容的高效生产与分发已成为各行业竞争的关键。内容中台与人工智能技术的结合&#xff0c;为企业提供了一种新颖的解决方案&#xff0c;使得内容创造的流程更加智能化和高效化。 内容中台作为信息流动的核心&#xff0c;能够集中管…

18.Word:数据库培训课程❗【34】

目录 题目 NO1.2.3.4 NO5设置文档内容的格式与样式 NO6 NO7 NO8.9 NO10.11标签邮件合并 题目 NO1.2.3.4 FnF12&#xff1a;打开"Word素材.docx”文件,将其另存为"Word.docx”在考生文件夹下之后到任务9的所有操作均基于此文件&#xff1a;"Word.docx”…

git多人协作

目录 一、项目克隆 二、 1、进入克隆仓库设置 2、协作处理 3、冲突处理 4、多人协作分支的推送拉取删除 1、分支推送&#xff08;2种&#xff09; 2、远程分支拉取&#xff08;2种&#xff09; 3、远程分支删除 一、项目克隆 git clone 画船听雨眠/test1 (自定义的名…

什么是线性化PDF?

线性化PDF是一种特殊的PDF文件组织方式。 总体而言&#xff0c;PDF是一种极为优雅且设计精良的格式。PDF由大量PDF对象构成&#xff0c;这些对象用于创建页面。相关信息存储在一棵二叉树中&#xff0c;该二叉树同时记录文件中每个对象的位置。因此&#xff0c;打开文件时只需加…

SpringMVC的参数处理

一、参数接收 1.使用servlet API接收参数 在方法参数中添加HttpServletRequest类型的参数&#xff0c;然后就可以像servlet的方法一样来接收参数 2.在方法中定义同名参数 如果url地址中的参数名与方法的参数名不一致时&#xff0c;可以使用RequestParam注解进行重新关联 url地…