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

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; // 程序结束
}

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

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

相关文章

2021 年 6 月大学英语四级考试真题(第 2 套)——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;目前中南大学MBA在读&#xff0c;也考取过HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &…

【Block总结】CPCA,通道优先卷积注意力|即插即用

论文信息 标题: Channel Prior Convolutional Attention for Medical Image Segmentation 论文链接: arxiv.org 代码链接: GitHub 创新点 本文提出了一种新的通道优先卷积注意力&#xff08;CPCA&#xff09;机制&#xff0c;旨在解决医学图像分割中存在的低对比度和显著…

grpc 和 http 的区别---二进制vsJSON编码

gRPC 和 HTTP 是两种广泛使用的通信协议&#xff0c;各自适用于不同的场景。以下是它们的详细对比与优势分析&#xff1a; 一、核心特性对比 特性gRPCHTTP协议基础基于 HTTP/2基于 HTTP/1.1 或 HTTP/2数据格式默认使用 Protobuf&#xff08;二进制&#xff09;通常使用 JSON/…

Qt常用控件 输入类控件

文章目录 1.QLineEdit1.1 常用属性1.2 常用信号1.3 例子1&#xff0c;录入用户信息1.4 例子2&#xff0c;正则验证手机号1.5 例子3&#xff0c;验证输入的密码1.6 例子4&#xff0c;显示密码 2. QTextEdit2.1 常用属性2.2 常用信号2.3 例子1&#xff0c;获取输入框的内容2.4 例…

[b01lers2020]Life on Mars1

打开题目页面如下 看了旁边的链接&#xff0c;也没有什么注入点&#xff0c;是正常的科普 利用burp suite抓包&#xff0c;发现传参 访问一下 http://5edaec92-dd87-4fec-b0e3-501ff24d3650.node5.buuoj.cn:81/query?searchtharsis_rise 接下来进行sql注入 方法一&#xf…

前端自动化测试(一):揭秘自动化测试秘诀

目录 [TOC](目录)前言自动化测试 VS 手动测试测试分类何为单元测试单元测试的优缺点优点缺点 测试案例测试代码 测试函数的封装实现 expect 方法实现 test 函数结语 正文开始 &#xff0c; 如果觉得文章对您有帮助&#xff0c;请帮我三连订阅&#xff0c;谢谢&#x1f496;&…

FFmpeg工具使用基础

一、FFmpeg工具介绍 FFmpeg命令行工具主要包括以下几个部分: ‌ffmpeg‌:编解码工具‌ffprobe‌:多媒体分析器‌ffplay‌:简单的音视频播放器这些工具共同构成了FFmpeg的核心功能,支持各种音视频格式的处理和转换‌ 二、在Ubuntu18.04上安装FFmpeg工具 1、sudo apt-upda…

upload labs靶场

upload labs靶场 注意:本人关卡后面似乎相比正常的关卡少了一关&#xff0c;所以每次关卡名字都是1才可以和正常关卡在同一关 一.个人信息 个人名称&#xff1a;张嘉玮 二.解题情况 三.解题过程 题目&#xff1a;up load labs靶场 pass 1前后端 思路及解题&#xff1a;…

解锁豆瓣高清海报(二) 使用 OpenCV 拼接和压缩

解锁豆瓣高清海报(二): 使用 OpenCV 拼接和压缩 脚本地址: 项目地址: Gazer PixelWeaver.py pixel_squeezer_cv2.py 前瞻 继上一篇“解锁豆瓣高清海报(一) 深度爬虫与requests进阶之路”成功爬取豆瓣电影海报之后&#xff0c;本文将介绍如何使用 OpenCV 对这些海报进行智…

C++:虚函数与多态性习题2

题目内容&#xff1a; 编写程序&#xff0c;声明抽象基类Shape&#xff0c;由它派生出3个派生类&#xff1a;Circle、Rectangle、Triangle&#xff0c;用虚函数分别计算图形面积&#xff0c;并求它们的和。要求用基类指针数组&#xff0c;使它每一个元素指向一个派生类对象。 …

JVM运行时数据区域-附面试题

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是 依赖用户线程的启动和结束而建立和销毁。 1. 程序计…

电脑优化大师-解决电脑卡顿问题

我们常常会遇到电脑运行缓慢、网速卡顿的情况&#xff0c;但又不知道是哪个程序在占用过多资源。这时候&#xff0c;一款能够实时监控网络和系统状态的工具就显得尤为重要了。今天&#xff0c;就来给大家介绍一款小巧实用的监控工具「TrafficMonitor」。 「TrafficMonitor 」是…

跨组织环境下 MQTT 桥接架构的评估

论文标题 中文标题&#xff1a; 跨组织环境下 MQTT 桥接架构的评估 英文标题&#xff1a; Evaluation of MQTT Bridge Architectures in a Cross-Organizational Context 作者信息 Keila Lima, Tosin Daniel Oyetoyan, Rogardt Heldal, Wilhelm Hasselbring Western Norway …

Baklib揭示内容中台实施最佳实践的策略与实战经验

内容概要 在当前数字化转型的浪潮中&#xff0c;内容中台的概念日益受到关注。它不再仅仅是一个内容管理系统&#xff0c;而是企业提升运营效率与灵活应对市场变化的重要支撑平台。内容中台的实施离不开最佳实践的指导&#xff0c;这些实践为企业在建设高效内容中台时提供了宝…

牛客周赛round78 B,C

B.一起做很甜的梦 题意&#xff1a;就是输出n个数&#xff08;1-n&#xff09;&#xff0c;使输出的序列中任意选连续的小序列&#xff08;小序列长度>2&&<n-1&#xff09;不符合排列&#xff08;例如如果所选长度为2&#xff0c;在所有长度为2 的小序列里不能出…

微机原理与接口技术期末大作业——4位抢答器仿真

在微机原理与接口技术的学习旅程中&#xff0c;期末大作业成为了检验知识掌握程度与实践能力的关键环节。本次我选择设计并仿真一个 4 位抢答器系统&#xff0c;通过这个项目&#xff0c;深入探索 8086CPU 及其接口技术的实际应用。附完整压缩包下载。 一、系统设计思路 &…

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频&#xff0c;从新建工程到打包Apk&#xff0c;从头做到尾&#xff0c;没有遗漏任何实现细节&#xff0c;欢迎学过Android基础的同学参加&#xff0c;如果你做过其他终端软件开发&#xff0c;也可以学习&#xff0c;快速上手Android基础开发。 Android记事本课…

设计模式Python版 组合模式

文章目录 前言一、组合模式二、组合模式实现方式三、组合模式示例四、组合模式在Django中的应用 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式…

4-图像梯度计算

文章目录 4.图像梯度计算(1)Sobel算子(2)梯度计算方法(3)Scharr与Laplacian算子4.图像梯度计算 (1)Sobel算子 图像梯度-Sobel算子 Sobel算子是一种经典的图像边缘检测算子,广泛应用于图像处理和计算机视觉领域。以下是关于Sobel算子的详细介绍: 基本原理 Sobel算子…

MATLAB实现多种群遗传算法

多种群遗传算法&#xff08;MPGA, Multi-Population Genetic Algorithm&#xff09;是一种改进的遗传算法&#xff0c;它通过将种群分成多个子种群并在不同的子种群之间进行交叉和交换&#xff0c;旨在提高全局搜索能力并避免早期收敛。下面是多种群遗传算法的主要步骤和流程&a…