C++案例

2023-11-17

目录

一、while循环猜数组

二、 水仙花数

三、for循环敲桌子游戏 

四、9×9乘法表

五、一维数组--元素逆置 

六、冒泡排序

七、封装一个函数--利用冒泡排序,实现对整型数组的升序排序

八、结构体嵌套结构体

九、结构体排序 


一、while循环猜数组

说明:随机一个100以内的数字,共10次机会,每次猜测都反馈偏大还是偏小,猜对后显示所用次数,10次机会用完后结束。

#include<stdio.h>
#include<iostream>
#include <bits/stdc++.h>  // 万能
#include<string.h>
#include<ctype.h>         // 字符串字母大小写函数
#include<iomanip>         //  保留小数位数
#include<math.h>          // 数学
#include <time.h>         // 时间函数库
//clock_t clock(void)
using namespace std;
int main ()
{
	srand((unsigned int)time(NULL));
    int num = rand()%100+1;
    cout<<"哈哈,提前告诉你是:"<<num<<endl;
    int value;
    int count=0;
	cout<<"请输入你猜的数字:"<<endl;
    while(true)
    {
    	cin>>value;
    	if(value>num&&count<9)
    	{
    		count++;
    		cout<<"猜的大了,你还有"<<10-count<<"次机会"<<endl;
    	}
    	else if(value<num&&count<9)
    	{
    		count++;
    		cout<<"猜的小了,你还有"<<10-count<<"次机会"<<endl;
    	}
    	else if(value==num&&count<9)
    	{
    		count++;
    		cout<<"猜对了,用了"<<count<<"次机会"<<endl;
    		break;
    	}
    	else if(count==9||9-count==0)
		{
			cout<<"10次机会都用完了,你都没猜出来!!!!!!!"<<endl;
			break;
		}
    }
	return 0;
}

运行结果:

二、 水仙花数

 说明:

        水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

         输出100~1000内的水仙花数。

#include<iostream>
using namespace std;
int main()
{
	int a,b,c;
	for(int i=100;i<1000;i++){
		a=i/100;
		b=i/10%10;
		c=i%10;
		if(a*a*a+b*b*b+c*c*c==i){
			cout<<i<<endl;
		}
	}
	return 0;
}

运行结果:

 do-while循环

#include<iostream>
using namespace std;
int main()
{
	int a,b,c;
	int num=100;
	do{
		a=num/100;
		b=num/10%10;
 	     c=num%10;
		if(a*a*a+b*b*b+c*c*c==num){
			cout<<num<<endl;
		}
		num++;
	}while(num<1000);
	return 0;
}

运行结果

三、for循环敲桌子游戏 

说明:0~100内的数字,逢到7的倍数(7,14,21...)或者含有7的数字(17,27,37...)必须用敲桌子代替。

#include<stdio.h>
#include<iostream>
#include <bits/stdc++.h>  // 万能
#include<string.h>
#include<ctype.h>         // 字符串字母大小写函数
#include<iomanip>         //  保留小数位数
#include<math.h>          // 数学
#include <time.h>         // 时间函数库
//clock_t clock(void)
using namespace std;
int main ()
{
	for(int i=0;i<100;i++)
	{
		if(i>10)
		{
			if(i%7==0 || i/10==7 || i%10==7)
			{
				cout<<"敲桌子"<<endl;
			}
			else
			{
				cout<<i<<endl;
			}
		}
		else
		{
			if(i%7==0)
			{
				cout<<"敲桌子"<<endl;
			}
			else
			{
				cout<<i<<endl;
			}
		}
	}
	return 0;
}

运行结果:

四、9×9乘法表

说明:就是我们从小背的9×9乘法表

#include<stdio.h>
#include<iostream>
#include <bits/stdc++.h>  // 万能
#include<string.h>
#include<ctype.h>         // 字符串字母大小写函数
#include<iomanip>         //  保留小数位数
#include<math.h>          // 数学
#include <time.h>         // 时间函数库
//clock_t clock(void)
using namespace std;
int main ()
{
	for(int i=1;i<10;i++)
	{
		for( int j=1;j<i+1;j++)
		{
			cout<<j<<"*"<<i<<"="<<j*i<<"\t";
		}
		cout<<endl;
	}
	return 0;
}

运行结果:

五、一维数组--元素逆置 

说明:将一维数组中的元素排序反转输出

#include<stdio.h>
#include<iostream>
using namespace std;
int main ()
{
	// 元素逆置
	int arr[10]={1,19,23,45,56,87,5,4,8,9};
	int start=0;
	int end=sizeof(arr)/sizeof(arr[0]);
	for(int i=0;i<=end/2;i++){
		for(int j=0;j<end;j++){
			cout<<arr[j]<<" ";
		}
		cout<<endl;
		int temp=arr[start+i];
		arr[start+i]=arr[end-1-i];
		arr[end-1-i]=temp;
	}
	cout<<endl;
	for(int i=0;i<end;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	return 0;
}

运行结果:

 方法二:

#include<stdio.h>
#include<iostream>
using namespace std;
int main ()
{
	// 元素逆置
	int arr[10]={1,19,23,45,56,87,5,4,8,9};
	int start=0;
	int end=sizeof(arr)/sizeof(arr[0]);// 结束下标
	while(start<end-1){
		int temp=arr[start];
		arr[start]=arr[end-1];
		arr[end-1]=temp;
		
		start++;
		end--;
	}
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	return 0;
}

运行结果:

六、冒泡排序

作用:最常用的排序算法,对数组内元素进行排序

过程:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
  3. 重复以上的步骤,每次比较次数-1,直到不需要比较

图示:

示例:

#include<stdio.h>
#include<iostream>
using namespace std;
int main ()
{
	int arr[10]={2,4,0,5,8,7,1,3,9,6};
	for(int i=0;i<10;i++){
		for(int j=0;j<10-i-1;j++){
			
			if(arr[j]>arr[j+1]){
				int temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
		for(int k=0;k<10;k++){
				cout<<arr[k]<<" ";
			}
			cout<<endl;
	}
	cout<<endl;
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	return 0;
}

 运行结果:

七、封装一个函数--利用冒泡排序,实现对整型数组的升序排序

#include<iostream>
#include<cmath>
using namespace std;
void bubbleSort(int *arr,int len)
{
	for(int i=0;i<len-1;i++){
		for(int j=0;j<len-1-i;j++){
			if(arr[j]>arr[j+1]){
				int temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
}
void printArr(int *arr,int len)
{
	for(int i=0;i<len;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
}
int main()
{
	int arr[10]={4,3,6,9,1,2,10,8,7,5};
	// 数组长度
	int len=sizeof(arr)/sizeof(arr[0]);
	
	printArr(arr,len);
	bubbleSort(arr,len);
	printArr(arr,len);
	return 0;
}

运行结果:

八、结构体嵌套结构体

说明:三个老师的结构体数组,下面带五个学生结构体数组,给五个学生打随机分数

#include<iostream>
#include<stdio.h>
#include<iostream>
#include<string>
#include<ctype.h>
#include<math.h>
#include<time.h>
using namespace std;
struct students {
	string name;
	int score;
};
struct teachers {
	string name;
	struct students student[5];
};
// 给老师和学生赋值函数
void space(struct teachers teacher[], int len)
{
	string nameseed = "ABCDE";
	for (int i = 0; i < len; i++) {
		teacher[i].name = "Teacher_";
		teacher[i].name += nameseed[i];
		for (int j = 0; j < 5; j++) {
			teacher[i].student[j].name = "Student_";
			teacher[i].student[j].name += nameseed[j];

			int random = rand() % 61 + 40;
			teacher[i].student[j].score = random;
		}
	}
}
void printinfo(struct teachers teacher[], int len)
{
	for (int i = 0; i < len; i++) {
		cout << "老师的姓名: " << teacher[i].name << endl;
		for (int j = 0; j < 5; j++) {
			cout << "\t学生的姓名: " << teacher[i].student[j].name
				<< " 学生的考试分数:" << teacher[i].student[j].score << endl;
		}
	}
}
int main()
{
	// 随机种子
	srand((unsigned int)time(NULL));
	teachers teacher[3];

	int len = sizeof(teacher) / sizeof(teacher[0]);
	space(teacher, len);
	printinfo(teacher, len);
	return 0;
}

运行结果:

九、结构体排序 

说明:

设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。

通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排列,最终打印排序后的结果。

#include<iostream>
using namespace std;

// 英雄结构体
struct Hero
{
	string name;  // 姓名
	int age;	// 年龄
	string sex;  // 性别
};

// 通过冒泡排序进行排序,按照年龄进行升序排列
void bubbleSort(struct Hero heroArr[],int len)
{
	for(int i=0;i<len-1;i++){
		for(int j=0;j<len-i-1;j++){
			if(heroArr[j].age>heroArr[j+1].age){
				struct Hero temp =heroArr[j];
				heroArr[j]=heroArr[j+1];
				heroArr[j+1]=temp;
			}
		}
	}
}

// 输出函数
void printArr(struct Hero heroArr[],int len)
{
	for(int i=0;i<len;i++){
		cout<<"姓名:"<<heroArr[i].name<<"\t年龄:"<<heroArr[i].age<<"\t性别:"<<heroArr[i].sex<<endl;
	}
}
int main()
{
	struct Hero heroArr[5]={
		{"刘备",23,"男"},
		{"关羽",22,"男"},
		{"张飞",20,"男"},
		{"赵云",21,"男"},
		{"貂蝉",19,"女"},
	};
	int len=sizeof(heroArr)/sizeof(heroArr[0]);
	printArr(heroArr,len);
	
	// 排序
	bubbleSort(heroArr,len);
	
	cout<<endl<<"排序后的结果"<<endl;
	printArr(heroArr,len);
	return 0;
}

运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++案例 的相关文章

  • std::vector 的复制构造函数如何运行?

    一个如何std vector
  • #include 在 ubuntu 中“没有这样的文件”

    当使用 g std c 0x Wall test cc o hello 编译时 输出致命错误 cstdatomic 没有这样的文件或直接 哪里不见了 包含内容应该是 include
  • OpenGL纹理渲染与原始不匹配

    我正在尝试使用 OpenGL 渲染纹理 我用作测试的纹理是白色背景上的一堆黑色矩形 如下所示 然而 在渲染时 纹理似乎被复制并叠加在其自身之上多次 我使用以下方法设置场景 std string vertexSource ShaderLoad
  • 静态成员函数与C语言绑定?

    以下 C 代码可使用 Visual C 和 g 进行编译 struct S static void foo extern C void S foo struct T static void foo extern C void T foo a
  • 当“”可以分配给std::string时,为什么有“clear”方法?

    一个可以用string clear函数清空字符串 也可以使用空双引号 来执行此操作 有什么不同 当您分配一个空字符串时 编译器必须在数据部分存储一个空的 C 字符串 并创建代码以将指向它的指针传递给赋值运算符 然后 赋值运算符必须从数据部分
  • 使用 gcc 编译 C 时,预处理的 .i 文件中的数字意味着什么?

    我想了解编译过程 我们可以使用以下命令查看预处理器中间文件 gcc E hello c o hello i or cpp hello c gt hello i 我大致知道预处理器的作用 但我很难理解某些行中的数字 例如 1 usr incl
  • 对相当大的整数的大集合的操作的快速实现

    描述 我实现了以下类 LabSetInt64 参见下面的代码 这里的目标是尽可能快地操作大量大整数 最多 10M 的值 我的主要要求集中在 至关重要 尽快获取集合的大小 基数 重要 能够非常快速地迭代一组集合 所以 从下面的实现开始 我还有
  • C++17 中带有 noexcept 的 std::function

    在 C 17 中noexcept 已添加到类型系统中 http www open std org jtc1 sc22 wg21 docs papers 2015 p0012r1 html void r1 void f noexcept f
  • 函数原型和数组参数

    我正在学习 C 语法 并且已经开始研究数组了 我想问你一个问题 但首先让我回顾一下 这样我就知道我已经弄清楚了 我知道您可以使用以下语法将变量定义为数组 name
  • NUnit 测试运行顺序

    默认情况下 nunit 测试按字母顺序运行 有谁知道有什么方法可以设置执行顺序吗 是否存在这样的属性 我只是想指出 虽然大多数受访者认为这些是单元测试 但问题并没有具体说明它们是 nUnit 是一个很棒的工具 可用于各种测试情况 我可以看到
  • 使用 boost::iterator_facade<>

    我有一个链表结构 struct SomeLinkedList const char bar int lots of interesting stuff in here DWORD foo SomeLinkedList pNext 它是现有
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • C# Linq 可以做组合数学吗?

    我有这个数据结构 class Product public string Name get set public int Count get set var list new List
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • 如何在 C# 中通过 JavaScript 回调运行 QUnit 测试并获取测试结果?

    在我的几个项目中 我使用 MVC 模式将代码 关注点 分为 3 层 模型层和控制层都在 C 上运行 因此我使用 MSTest 或 NUnit 等测试框架来验证这些层的功能需求 对于视图层 我使用 QUnit 来测试 JavaScript 文
  • C语言:如何获取使用strtok()一次后剩余的字符串

    我的字符串是 A B C D E 分隔符是 如何获取执行 strtok 一次后剩余的字符串 即 B C D E char a A B C D E char separator char b strtok a separator printf
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • 将函数作为函数参数传递

    Unity C 似乎无法识别Func lt gt 作为函数委托的符号 那么 如何将函数作为函数参数传递呢 我有一个想法Invoke functionName 0 可能有帮助 但我不确定它是否实际上立即调用该函数 或者等待帧结束 还有别的办法
  • 没有运算符“<<”与这些操作数匹配[重复]

    这个问题在这里已经有答案了 不知道发生了什么事 我查看了与此问题类似的其他帖子 但到目前为止没有解决方案有帮助 这是带有错误部分注释的代码 在某一时刻 它说 不起作用 而在代码的其余部分中 它说 include
  • 如何使用字符串的值将字符串转换为 wstring?

    我是 C 新手 我有这个问题 我有一个名为 DATA DIR 的字符串 需要将其格式化为 wstring string str DATA DIR std wstring temp L s str Visual Studio 告诉我没有与参数

随机推荐

  • php命令行传递参数,PHP命令行传递参数

    在以非命令行模式运行PHP的时候 我们可以通过 GET POST REQUEST来接受get或是post参数 但是以命令行方式运行的话 怎么传递参数以接受参数呢 关于命令行的特点 可以直接看官方文档 http php net manual
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • python 读写pcd

    1 读点云的3种方式 第一种 pip3 install python pcl import pcl pcd ndarray pcl load args pcd path to array 3 不要intensity pcd ndarray
  • 浏览器打开就是360导航(浏览器被360劫持)

    浏览器打开就是360导航 这个问题之前只是看别人帖子见到过 不知道出了什么问题我的edge和Chrome浏览器突然打开也成了360的导航页面 这才感觉出这个问题的恶心之处 而且顺道说一下 我电脑中也没有装任何360系的应用 但突然就被改了
  • 黑客基础知识——SYN泛洪攻击原理及防御

    拒绝服务攻击时 攻击者想非法占用被攻击者的一些资源 比如如 带宽 CPU 内存等等 使得被攻击者无法响应正常用户的请求 讲泛洪攻击之前 我们先了解一下DoS攻击和DDoS攻击 这两个攻击大体相同 前者的意思是 拒绝服务攻击 后者的意思是 分
  • docker下mysql镜像初始化

    目录 1 介绍 2 部署及验证 2 1 场景复现 2 2 创建dockerfile 2 3 初始化脚本 2 4 构建镜像并查看 2 5 创建容器并验证 2 6 完成 1 介绍 原理 当Mysql容器首次启动时 会在 docker entry
  • QT 多线程中使用QCanBusDevice进行PCAN通讯时,无法正常发出数据

    QT 多线程中使用QCanBusDevice进行PCAN通讯时 无法正常发出数据 前言 我一开始的代码逻辑是 PCAN开启 关闭 发送 接收这些功能整合在一个工具类中 这个工具类的对象是在主线程创建的 然后我有一个要循环定时发送的功能是独立
  • ASP.NET Core错误:Unable to cast object of type ‘System.Data.ProviderBase.DbConnectionClosedConnecting‘

    项目场景 在使用 net core开发时 经常使用数据库出现的问题 问题描述 开发ASP NET Core时遇到在经常使用数据库连接时报错误提示 Unable to cast object of type System Data Provi
  • QCefView源码优化

    QCefView项目源码的构建部分这里就不赘述了 有问题的朋友可以回到 QCefView 1 CMAKE项目 库文件生成和项目测试 查看相关介绍 本次优化主要包括以下几个部分 1 设置部分 关闭代理服务器 关闭同源策略 使用系统flash等
  • 不断完善

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 最简单的网页下载代码 import urllib2 使用urllib2模块 from sys import argv script urlo argv def down
  • 【核磁共振成像】部分傅里叶重建

    目录 一 部分傅里叶重建 二 部分傅里叶重建算法 2 1 填零 2 2 零差处理 一 部分傅里叶重建 在部分傅里叶采集中 数据并不是绕K空间中心对称收集的 而是K空间的一半是完全填充的 另一半只收集了一小部分数据 部分傅里叶采集所依据的原理
  • 公钥私钥证书与https

    公钥私钥 非对称加密 在一个过程中使用两个密钥 公共密钥用于加密信息 私用密钥用于解译加密的信息 这种加密方法称为非对称加密 也称为公钥加密 因为其中一个密钥是公开的 另一个私钥则需要自己保密 私钥签名 如果我用私钥加密一段数据 当然只有我
  • Request 获取请求数据(方法)

    1 Request 继承体系 2 Request 获取请求数据 2 1 请求行 String getMethod 获取请求方式 GET String getContextPath 获取虚拟目录 项目访问路径 request demo Str
  • java占用cpu最高的线程堆栈信息

    jstack找出占用cpu最高的线程堆栈信息 package com example demo public class Math public static final int initData 666 public int comput
  • Swagger3的使用

    本篇涉及到的swagger注解 速记 EnableSwagger2 开启swagger EnableOpenApi 开启swagger的Api功能 EnableWebMvc 是为了解决swagger和springmvc整合之后总是出现空指针
  • 解决idea打不开的两种可能性

    一 如果 IDEA 下载完成后打不开 可能是因为 dea64 exe vmoptions 文件中保留了之前版本的破译配置 注释或者删除就可以了 1 打开 C Users Administrator AppData Roaming JetBr
  • python stm32-STM32 上面跑Python

    By Derrick Wang 之前我一直在找一种方案 可以把stm32打造成一个真正的创客平台 因为传统的开发环境安装编译 眼花缭乱的工具栏和按钮并不实用于非电子类专业的爱好者设计出自己的作品 这样的高门槛把很多有兴趣者拒之门外 一个没有
  • UDP协议介绍

    UDP 是一个简单地面向数据报的运输层协议 进程的每个输出操作都正好产生一个 UDP 数据报 并组装成一份待发送的 IP 数据报 UDP 不提供可靠性 它把应用程序传给 IP 层的数据发送出去 但是并不保证他们能到达目的地 UDP数据报封装
  • [蓝桥杯] 分数 (Python 实现)

    题目 代码 b 0 a 1 for i in range 0 20 b a a 2 print d d b a 2 结果 1048575 524288
  • C++案例

    目录 一 while循环猜数组 二 水仙花数 三 for循环敲桌子游戏 四 9 9乘法表 五 一维数组 元素逆置 六 冒泡排序 七 封装一个函数 利用冒泡排序 实现对整型数组的升序排序 八 结构体嵌套结构体 九 结构体排序 一 while循