C++系列之一维数组内容与应用

简介: C++系列之一维数组内容与应用

一维数组部分

上课时间与安排

时间20231808 18:10-20:10 一维数组的应用 模拟法与开关门

上课内容

课程链接:

C++等级考试一点通 /C++中级 (20)一维布尔数组的应用 + 回顾(11)分解质因数 + 回顾(8)循环中的break语句

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。分解质因数的方法

360=2*2*2*3*3*5

一维数组

数据类型 数组名 [数组长度];
数据类型 数组名[数组长度]={值1,值2...};
数据类型 数组名[ ]={值1,值2...};
//数据类型 数组名 数组长度
  int arr[5];
  //给数组中的元素进行赋值
  arr[0] = 10;
  arr[1] = 20;
  arr[2] = 30;
  arr[3] = 40;
  arr[4] = 50;
  //访问数据元素
  cout << arr[0] << endl;
  cout << arr[1] << endl;
  cout << arr[2] << endl;
  cout << arr[3] << endl;
  cout << arr[4] << endl;
  int arr[5] = { 10,20,30,40,50 };
  //print all the elements in the array in a loop
  for (int i = 0; i < 5; i++)
  {
    cout << arr[i] << endl;
  }

代码部分

========================================

时间:20231208

代码名称:跳出无限循环:

知识点:循环的使用,if判断的使用,break的使用。

程序设计:

一个程序,可以接受你的输入,并且输出,无限循环。

当你输入9999,程序结束。

#include <iostream>
using namespace std;
int main() {
  for (int i = 0; i < 2;) {
    int num;
    cin >> num;
    if (num != 9999) {
      cout << num << endl;
      //TODO
    } else {
      break;
    }
  }
}

========================================

时间:20231208

代码名称:判断是否是质数:

知识点:循环的使用,if判断的使用,break的使用,质数的理解。

程序设计:

一个程序,接受你的输入,如果输入为质数,输出为是,如果输入不是质数,输出为否。

#include <iostream>
using namespace std;
int main() {
  int num;
  cin>>num;
  if(num==1){
    cout<<"否";
    return 0;
  }
  if(num==2){
    cout<<"是";
    return 0;
  }
  for(int i=3;i<=num;i++){
    if(num % i==0 && i<num){
      cout<<"否";
      return 0;
    }
    if(i==num){
      cout<<"是";
      return 0;
    }
  }
  return 0;
}

========================================

时间:20231208

代码名称:门的相反动作:

知识点:

程序设计:

一个程序,接受你的输入n,n表示n个人和n个房间,如果1号服务员把房间都打开,2号服务员把2的倍数的房间执行相反操作

3号服务员把3的倍数的房间执行相反动作,依次类推。

思路:

模拟法,在黑板上写出模拟的过程,然后用算法实现。

写:

#include <iostream>
using namespace std;
// 定义一个数组 存储房间的状态 初始值都是0
const int N=1000;
int arr[N+1];
int main() {
  // 定义变量num 接受人和房间数量
  int num;
  cin>>num;
  // 循环num个人 i为服务员号
  for(int i=1;i<=num;i++){
    // 循环num个房间 j为房间号
    for(int j=1;j<=num;j++){
      // j房间号是i服务员的倍数,服务员就把该房间执行相反操作
      if(j%i==0){
        if(arr[j]==0){
          arr[j]=1;
        }else{
          arr[j]=0;
        }
      }
    }
  }
  //输出
  for(int i=1;i<=num;i++){
    if(arr[i]==1){
      cout<<i<<" ";
    }
  } 
  return 0;
}

求素数问题

质数的定义:若一个正整数除了1和它自身之外不能被任何自然数整除,则该数称为质数,也叫素数。否则为合数。

由定义可知,所有小于等于1的数既不是质数,也不是合数。

质数的分布较为稀疏,对于一个足够大的数S,不超过S的质数大约有N I n N \frac{N}{InN}InNN个,也就是说每I n N InNInN个数约有一个质数,这点读者了解即可。

质数的判断(试除法)

对于质数的判断,最简单也最容易想到的方法就是一个一个的筛选,也叫试除法。

如果要判断一个数N,那么我们要对2~N-1的所有数都筛选一遍吗,显然不用。首先肯定的是N-1肯定不能整除N,那么是否能进一步缩小范围。我先给出答案:2~sqrt(N)

代码如下:

#include<cstdio>
bool isprime(int num){
  if(num==2)
      return true;
  if(num%2==0 || num<2)
      return false;
  else{
    for(int i=3;i*i<=num;i+=2){
      if(num%i==0){
        return false;
      }
    }
    return true;
  }
}
int main(){
  int x;
  scanf("%d",&x);
  if(isprime(x)){
    printf("Yes");
  }
  else{
      printf("No");
  }
  return 0;
}
相关文章
|
2月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
78 4
|
14天前
|
存储 并行计算 安全
C++多线程应用
【10月更文挑战第29天】C++ 中的多线程应用广泛,常见场景包括并行计算、网络编程中的并发服务器和图形用户界面(GUI)应用。通过多线程可以显著提升计算速度和响应能力。示例代码展示了如何使用 `pthread` 库创建和管理线程。注意事项包括数据同步与互斥、线程间通信和线程安全的类设计,以确保程序的正确性和稳定性。
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
51 2
|
2月前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
22 3
|
2月前
|
C++
C++(十一)对象数组
本文介绍了C++中对象数组的使用方法及其注意事项。通过示例展示了如何定义和初始化对象数组,并解释了栈对象数组与堆对象数组在初始化时的区别。重点强调了构造器设计时应考虑无参构造器的重要性,以及在需要进一步初始化的情况下采用二段式初始化策略的应用场景。
|
3月前
|
存储 算法 C++
C++ STL应用宝典:高效处理数据的艺术与实战技巧大揭秘!
【8月更文挑战第22天】C++ STL(标准模板库)是一组高效的数据结构与算法集合,极大提升编程效率与代码可读性。它包括容器、迭代器、算法等组件。例如,统计文本中单词频率可用`std::map`和`std::ifstream`实现;对数据排序及找极值则可通过`std::vector`结合`std::sort`、`std::min/max_element`完成;而快速查找字符串则适合使用`std::set`配合其内置的`find`方法。这些示例展示了STL的强大功能,有助于编写简洁高效的代码。
45 2
|
3月前
|
算法 C++
c++学习笔记04 数组
这篇文章是C++学习笔记4,主题是数组。
42 4
|
3月前
|
存储 搜索推荐 Serverless
【C++航海王:追寻罗杰的编程之路】哈希的应用——位图 | 布隆过滤器
【C++航海王:追寻罗杰的编程之路】哈希的应用——位图 | 布隆过滤器
36 1
|
3月前
|
C++ 索引
C++数组、vector求最大值最小值及其下标
C++数组、vector求最大值最小值及其下标
111 0
|
4月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
29 6