C++易错编程练习题(1)

news2024/11/16 13:28:31

0 编程练习

基础不牢靠,回头来补课。小白这个系列主要是为了重新打基础,为一些常见的易错编程练习题提供记录。其间若有错误,欢迎指出,轻喷勿骂。毕竟小白确实是基础不牢靠。

1 题目

自定义函数之整数处理。

题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数;①输入10个数;②进行处理;③输出10个数。

输入格式
10个整数

输出格式
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)

样例输入
2 1 3 4 5 6 7 8 10 9

样例输出
1 2 3 4 5 6 7 8 9 10

2 易错点

看到这个题,感觉很容易,无非就是

-> 读数
-> 找到数组中最小值的编号
-> 找到数组中最大值的编号
-> 交换最小值与首位数
-> 交换最大值与末位数
-> 打印

那么代码如下:

#include<iostream>
using namespace std;
void swap(long * a, long* b)
{
    long temp;
    temp = *a;
    *a = *b;
    *b = temp;
    return;
}

void readArray(long *num)
{
    for (int i = 0; i < 10; ++i)
    {
        cin >> num[i];
    }
}

void processArray(long *num)
{
    int indMin = 0, indMax = 0;
    for (int i = 1; i < 10; ++i)
    {
        if(num[i] < num[indMin])
            indMin = i;
        if(num[i] > num[indMax])
	        indMax = i;
    }
    swap(&num[0], &num[indMin]);
    swap(&num[9], &num[indMax]);
}

void printArray(long *num)
{
    for (int i = 0; i < 10; ++i)
    {
        cout << num[i] << " ";
    }
}

int main()
{
    long num[10];
    readArray(&num[0]);
    processArray(&num[0]);
    printArray(&num[0]);
    return 0;
}

轻松加愉快?
测试一下。

测试1
2 1 3 4 5 6 7 8 10 9
1 2 3 4 5 6 7 8 9 10

测试2
10 2 3 4 5 6 7 8 1 9
9 2 3 4 5 6 7 8 10 1

出错了!原因在哪儿?

我们仔细看下,对于测试2,找到的最小位置是8,最大位置是0,先交换了最小值和首位数,变成:

1 2 3 4 5 6 7 8 10 9

再交换了位置8和末位,变成

9 2 3 4 5 6 7 8 10 1

这里出错的原因是,早早地确定了最大和最小值的位置,但是交换是分成两步在走的。第一次交换,有可能会破坏确定的最大值的位置。
那么如何修改也呼之欲出了:
需要在首次交换之后再重新确定最大值的位置,即

-> 读数
-> 找到数组中最小值的编号
-> 交换最小值与首位数
-> 找到数组中最大值的编号
-> 交换最大值与末位数
-> 打印

3 正解

#include<iostream>
using namespace std;
void swap(long * a, long* b)
{
    long temp;
    temp = *a;
    *a = *b;
    *b = temp;
    return;
}

void readArray(long *num)
{
    for (int i = 0; i < 10; ++i)
    {
        cin >> num[i];
    }
}

void processArray(long *num)
{
    int indMin = 0, indMax = 0;
    for (int i = 1; i < 10; ++i)
    {
        if(num[i] < num[indMin])
            indMin = i;
    }
    swap(&num[0], &num[indMin]);
    
    for (int i = 1; i < 10; ++i)
    {
        if(num[i] > num[indMax])
            indMax = i;
    }
    swap(&num[9], &num[indMax]);
}

void printArray(long *num)
{
    for (int i = 0; i < 10; ++i)
    {
        cout << num[i] << " ";
    }
}

int main()
{
    long num[10];
    readArray(&num[0]);
    processArray(&num[0]);
    printArray(&num[0]);
    return 0;
}

在这里插入图片描述

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

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

相关文章

多视图局部共现和全局一致性学习提高乳腺图像分类的综合性

文章目录 Multi-view Local Co-occurrence and Global Consistency Learning Improve Mammogram Classification Generalisation摘要本文方法global consistency modulelocal co-occurrence module (LCM) 实验结果 Multi-view Local Co-occurrence and Global Consistency Lear…

okio篇3-超时机制

关于System.nanoTime System.currentTimeMills与System.nanoTime实际都是时间间隔&#xff0c;只不过两个时间的起始时间衡量不一致。 我们比较常用的&#xff0c;实际是System.currentTimeMills()&#xff0c;这个时间是以1970-01-01起始&#xff0c;到系统显示时间的间隔。…

聚浪成潮,网易数帆CodeWave智能开发平台开启低代码新时代

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着全球范围内新一代人工智能技术发展突飞猛进&#xff0c;社会各领域从数字化、网络化向智能化转变&#xff0c;如何进一步释放数据生产力、加速智能化转型已成为企业发展的必修课。 2023年4月25日&#xff0c;“网易数帆…

K8S管理系统项目实战[API开发]-2

后端: gogin 后端代码地址GitHub - yunixiangfeng/k8s-platform: K8s管理系统后端: gogin 5、存储与配置 5.1 ConfigMap 5.2 Secret 5.3 PersistentVolumeClaims 6、工作流 6.1 流程设计 6.2 数据库操作&#xff08;GORM&#xff09; &#xff08;1&#xff09;初始化…

Mysql Sharding-JDBC读写分离 原理

0 课程视频 深入Sharding-JDBC分库分表从入门到精通【黑马程序员】_哔哩哔哩_bilibili 1 基本概念 1.1应用逻辑 1.1.1 msyql 多库 多表 多服务器 1.1.2 通过Sharding-JDBC jar包->增强JDBC 访问多数据源 -> 自动处理成一个数据源 1.1.3 使用数据的人 -> 使用Sh…

Java面试题总结 | Java面试题总结12- 测试模块

测试 测试需要具备的素质 基础的理论知识、编程语言的功底、自动化测试工具、计算机基础知识 业务分析能力&#xff1a;分析业务的流程&#xff0c;分析被测业务数据、分析被测系统的框架、分析业务模块、分析测试所需资源、分析测试完成目标 缺陷洞察能力&#xff1a;一般…

【ChatGPT】吴恩达教程笔记(预备篇)

本文概要 众所周知&#xff0c;吴恩达老师与OpenAI联合推出了一门面向开发者的Prompt课程&#xff08;https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers &#xff09;&#xff0c;时隔几天&#xff0c;吴恩达老师发推说已经有超过20万人…

Netty基础

2.1Netty是什么 是一个基于异步的&#xff08;多线程处理结果和接收&#xff09;、事件驱动的网络应用框架&#xff0c;用于基于快速开发可维护、高性能的网络服务器和客户端 异步是指调用时的异步&#xff0c;他的IO还是多路复用的IO 许多中间件都依赖与Netty zookperhado…

GUITAR PRO8吉他软件好不好用?值不值得下载

所谓“工欲善其事&#xff0c;必先利其器”&#xff0c;想成为一名专业甚至著名的音乐人&#xff0c;用到的工具软件非常多&#xff0c;在众多款软件工具中&#xff0c;Guitar Pro 8能满足乐谱创作者、学习者的所有需要。很多人在听到Guitar Pro这个名词时&#xff0c;本能反应…

spark的RDD算子计算

一、环境配置 import osfrom pyspark import SparkConf, SparkContextif __name__ __main__:os.environ[SPARK_HOME] /export/server/sparkos.environ["PYSPARK_PYTHON"] "/root/anaconda3/envs/pyspark_env/bin/python"os.environ["PYSPARK_DRIV…

JavaWeb07(MVC应用01[家居商城]连接数据库)

目录 一.什么是MVC设计模式&#xff1f; 1.2 MVC设计模式有什么优点&#xff1f; 二.MVC运用&#xff08;家居商城&#xff09; 2.1 实现登录 2.2 绑定轮播【随机三个商品】 2.2.1 效果预览 index.jsp 2.3 绑定最新上架&热门家居 2.3.1 效果预览 2.3.2 代码实现 数据…

linux进程基本知识

1.什么是程序&#xff0c;什么是进程&#xff1f; 程序是静态的概念&#xff0c;例如 gcc xx.c -o pro 磁盘中生成pro文件&#xff0c;叫做程序 进程是程序的一次运行活动&#xff0c;意思是程序跑起来了&#xff0c;系统中就多了一个进程 2.如何查看系统中有哪些进程&…

EMC VNX登录Unisphere错误 certificate has invalid date问题处理

经常有用户反应说&#xff0c;突然用浏览器登录EMC VNX或者Clarrion CX系统的时候出现“certificate has invalid date”的故障&#xff0c;然后无法正常登录图形界面。具体报错如下图所示&#xff1a; 导致这个问题的原因在于VNX系统中的certification认证过期&#xff0c;既然…

SpringBoot整合Echarts实现用户人数和性别展示

一、背景 在Web应用开发中&#xff0c;经常需要使用图表来展示数据&#xff0c;而Echarts是一个非常优秀的图表库。SpringBoot是一个非常流行的Java Web框架&#xff0c;它可以快速搭建Web应用。本文将介绍如何使用SpringBoot集成Echarts&#xff0c;实现展示用户人数和性别的…

百度百科如何创建?创建百度百科的秘诀你值得掌握(经验分享)

百度百科是中国最大的百科全书式的中文网站之一&#xff0c;是广大用户在互联网上获取知识的重要途径之一。任何人都可以在百度百科创建新的词条&#xff0c;为网站的发展作出贡献。 小媒同学将从如何创建百度百科词条和注意事项两个方面来详细介绍百度百科词条的创建流程和相关…

css3 flex弹性布局详解

css3 flex弹性布局详解 一、flexbox弹性盒子 2009年&#xff0c;W3C 提出了一种新的方案----Flex 布局&#xff0c;可以简便、完整、响应式地实现各种页面布局。目前&#xff0c;它已经得到了所有浏览器的支持&#xff0c;这意味着&#xff0c;现在就能很安全地使用这项功能。…

在选择数据库时需要考虑的因素

在文章的第一部分中&#xff0c;我们奠定了理解各种数据库类型及其用例的基础。随着我们继续探索数据库选择的艺术&#xff0c;我们现在将更深入地探讨影响这个决策过程的关键因素。通过更详细地检查每个因素&#xff0c;我们可以更好地装备自己做出符合项目要求的知情选择&…

ubuntu 卸载 软件包 libfdt-dev

编译环境 Win10 64位 ubuntu 20.04 虚拟机 VMware Workstation 16 Pro NUC980 bsp 自带的编译工具链&#xff1a; nuc980bsp.tar.gz&#xff0c;版本 gcc version 4.8.4 (GCC) NUC980 uboot : https://gitee.com/OpenNuvoton/NUC970_U-Boot_v2016.11 目标 手动编译 NUC9…

【Windows】Windows下载使用wget命令

文章目录 一、前言 & 介绍二、安装步骤2.1 下载 wget 压缩包2.2 解压到指定的位置2.3 检查是否安装成功2.4 是否可以正常下载 一、前言 & 介绍 wget 是 linux 一个下载文件的工具&#xff0c;可以下载一些软件或从远程服务器恢复备份到本地服务器。 wget 在 Linux 下…

PCA主成成分分析例题详解

主成分分析是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能反映出原始数据的大部分信息 需要了解具体细节可看此视频&#x1f449;&#xff1a;什么是主成成分分析PC…