1级
第一课
/*
陈袁鑫
2023.9.23
9.23做
*/
//调用头文件
#include <iostream>
using namespace std;
//代码主题
int main()
{
//数字
cout<<25<<endl;
//算式
cout<<10+130<<endl;
//程序运行时,会自动计算得数并将得数输出,所以运行结果是94
//输出字符或字符串
cout<<"A"<<endl;
cout<<"abcd"<<endl;
//当输出项为一串用双引号引起的字符(称为字符串)时,则原样输出双引号中的内容。
//两种结合
//cout可以有一个输出项,也可以有多个输出项
cout<<"A"<<" "<<"abcd"<<endl;
//每一句话都以分号结尾
return 0;
}
第二课
/*
陈袁鑫
2023.9.23
9.23做
*/
#include <iostream>
using namespace std;
int main()
{
//数组的定义
int n;//声明一个变量
//赋值
n=10;
//可以在定义的时候赋值int n=10;
//间接复制
int m;
m=n;
//自己赋值
n=n*1;
n=n-1
....
//加与减
int x=2,y=2;
x++;//x+1
y--;//y-1
//输入
int n1;
cin>>n1;
cout<<n<<endl<<m<<endl<<<x;
return 0;
}
第三课
/*
陈袁鑫-C01L03
2023.9.24做
*/
#include <iostream>
using namespace std;
//运算符
int main()
{
//运算符有:+,-,*,/,%
int n;
n=10;
n*=2;
//相当于10x2=20
int m=5;
m/=2;//int类型的只保留整数,除非用float(单精度) 或double(双精度)
//注意:每一个运算符之后都要加一个=,不然会报错
int k=10;
k+=10;
//与正常加法一样
int n1=6;
n1-=1;
//与正常减法一样
int a=10;
a%=10;
//代表a除10的余数
cout<<"n*2的值是:"<<" "<<n<<endl;
cout<<"m/2的值是:"<<" "<<m<<endl;
cout<<"k+10的值是:"<<" "<<k<<endl;
cout<<"n1-1的值是:"<<" "<<n1<<endl;
cout<<"a%2的值是:"<<" "<<a<<endl;
return 0;
}
第四课
/*
陈袁鑫-C01L04
2023.9.24做
*/
#include <iostream>
using namespace std;
//关系表达式
int main()
{
if(2==3){
//==相当于等于
//2不等于3
cout<<"true";
//true表示✔
}
else{
cout<<"false";
//false表示❌
}
//上列代码表示判断2等不等于3
//if是如果,else是否则
/*
if(变量1==或>或<或>=或变量2){
是的条件
}
else{
否则的条件
}
*/
bool f;
//bool 布尔类型变量
//布尔型的数据用来表示某个事情有且只有两种可能的结果: true 和 false 。
//一般用 true 表示肯定意义的结果,也就是真的、成立的;
//用 false 表示某种否定意义上的结果,也就是假的、不成立的。
//&&表示并且
//||表示或者
return 0;
}
第五课
/*
陈袁鑫
2024.9.25
第五课嵌套if
*/
#include <iostream>
using namespace std;
int main()
{
int n;
n=10;
//if语句格式:
/*
if(变量1>或==或<或>=或<=){
如果是的条件
}
else{
如果不是的条件
}
*/
//比如
if(n>2){
cout<<"是";
}
else{
cout<<"不是";
}
//还可以嵌套
if(n>=10){
if(n>2){
cout<<"是";
}
else{
cout<<"不是";
}
}
//切记,只有if才有else,否则会报错
return 0;
}
第六课
/*
陈袁鑫
2024.9.25
第六课复合语句
*/
#include <iostream>
using namespace std;
int main()
{
//我们来看下面的代码
int n=10,a=0,b=0,c=0;
if(n>0)
a+=2;
b+=2
c+=2;
cout<<a<<" "<<b<<" "<<c<<endl;
//运行上列代码,就会发现,当if语句后面有多个语句的时候
//if语句识别不到后面的语句
//这时,就要用一个大括号{},将代码包在里面,就可以运行多个语句了
int m=10,d=0,e=0,f=0;
if(m>0){
d+=2;
e+=2;
f+=2;
}
cout<<d<<" "<<e<<" "<<f;
return 0;
}
第七课
/*
陈袁鑫
2024.9.25
第七课for语句
*/
#include <iostream>
using namespace std;
int main()
{
//如果要一下子输出多个代码的话,普通人只会用cout输出
//但有些人却会用for循环来写
//如下
for(int i=1;i<=1000;i++){
cout<<"YES";
}
cout<<"________________________";
//for循环可以将括号里的代码执行上面小括号里填的数的次数
/*
for(变量类型,变量名=开始值;变量名<=结束值;变量名+=累加的次数){
代码
}
*/
//还可以
for(float i=0.5;i<=8.5;i+=0.5){
cout<<"YES";
}
return 0;
}
第八课
/*
陈袁鑫
2024.9.25
第八课累加器
*/
#include <iostream>
using namespace std;
int main()
{
//如果你要求出1+到1000是多少
//那就不得不用累加器了
//代码如下
int s=0;
for(int i=1;i<=1000;i++){
s+=i;
}
cout<<"s的值是:"<<s<<"_____________";
//正如你所见,累加器只是拿一个变量来加,+号在前面讲过
//相当于一个数来加一个,累加器必须要搭配for来用,要么就加100甚至上千次
//s的类型是什么,它加的数就是什么,比如s的类型是double,它就要+小数
return 0;
}
第九课
/*
陈袁鑫
2024.9.25
第九课 查找最值
*/
#include <iostream>
using namespace std;
int main()
{
//如果题目要你找出最值的话,你会怎么办呢
//有些人可能会用排序来写,但是,要求位置的话呢
//这就不得不使用最值方法
//最值只是一个变量而已,但是,他为什么可以做到查找最值呢
//我们来看代码
int ma=0;//最初赋值,可以用INT_MIN,因为你一开始不用最小,之后该怎么求最值呢
int a[9]={0,1,4,2,3,5,7,6,8};//准备求最大值的数组
for(int i=1;i<=n;i++){
if(ma<a[i]){//最大值判断
ma=a[i];
}
}
cout<<"在a数组中的最大值是:"<<ma<<endl;
int mi=INT_MAX;//同上
for(int i=1;i<=9;i++){
if(mi>a[i]){//最小值判断
mi=a[i];
}
}
cout<<"在a数组中的最小值是:"<<mi<<endl;
return 0;
}
第十课
/*
陈袁鑫
2024.9.26
嵌套循环
*/
#include <iostream>
using namespace std;
int main()
{
//嵌套循环一般用于输出图形而被使用,下面的是它的格式
//双重循环格式:
/*
for(循环条件1){
语句1;
for(循环条件2){
语句2;
}
}
*/
//这样可以输出一个二维图形
//因为i负责行,j负责列
//请看下列代码
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++){
cout<<"*";
}
cout<<endl;
}
/*
这样可以输出一个方阵
就是当i与j的循环次数相等
之后还可以改一下里面的数据
*/
//有双重循环就有多重循环
/*
for(循环条件1){
语句1;
for(循环条件2){
语句2;
for(循环条件3){
语句3;
}
}
}
*/
//这样子就可以输出更复杂的图形了
return 0;
}
第十一课
/*
陈袁鑫
2024.9.26
while循环
*/
#include <iostream>
using namespace std;
int main()
{
//听说过可以统计数字的循环,但你见过
//专门应对数位分离的循环吗❓
//这个循环就是while循环
/*
while(怎样才运行){
代码;
}
*/
/*
for循环一般应用于循环次数已知的情况;
while循环一般应用于循环次数未知的情况;
在一般情况下,这两者是可以相互转化的。
举一个简单较适合用for循环的例子:
求1-100的和。
*/
/*
#include<bits/stdc++.h>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<=100;i++)
sum += i;
cout<<sum;
return 0;
}
*/
/*
接下来再举一个适用于while循环的例子:
求输入的一个整数各位数字之和。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,sum=0;
cin>>n;
while(n!=0)
{
sum += n%10;
n /= 10;
}
cout<<sum;
return 0;
}
*/
return 0;
}
2级
第一课
/*
陈袁鑫
2024.9.25
二级第一课 一维数组的定义
*/
#include <iostream>
using namespace std;
int main()
{
//数组名代表的不是一个变量,而是一批变量
//因此不能直接读入整个数组,而是要逐个读入数组元素,通常用循环语句来完成这一功能。
int a[110];
//变量类型 变量名[数据范围];
for(int i=1;i<=10;i++){
cin>>a[i];
}
//也可以单独输入
cin>>a[11];
//数组元素的输出通常用循环语句来实现。
for(int i=1;i<=10;i++){
cout<<a[i]<<" ";
}
//当然,也可以单独输出
cout<<a[11];
//一维数组的赋值通常是利用循环语句来实现。
int b[11];
b[1]=0;
//也可以用循环赋值
for(int i=1;i<=10;i++){
b[i]=i;
cout<<b[i]<<endl;
}
//数组下标用于标明某一元素在数组中的位置,它与数组元素一一对应。
//在某个数组中查找满足某个特定条件的数据,可以从数组的第一个至最后一个逐个进行比较。
return 0;
}
第二课
/*
陈袁鑫
2024.9.26
最大最小值
*/
#include <iostream>
using namespace std;
int main()
{
/*
假设一个最大值 maxx=0 ;
maxx 依次跟数组中的元素进行比较;
如果该数组元素大于 maxx ,则将该数组元素值赋值给 maxx ;
maxx 即为该数组中的最大值。
参考代码
#include<bits/stdc++.h>
using namespace std;
int n,x[101];
int maxx=0;//maxx初始值要比任一数组元素的值小
int main()
{
cin>>n; //读入数组元素个数
for(int i=1;i<=n;i++) //数组赋值
cin>>x[i];
for(int i=1;i<=n;i++) //数组元素依序跟maxx比较
if(x[i]>maxx) maxx=x[i];
cout<<maxx; //将最大值输出
return 0;
}
*/
/*
假设一个最大值 maxx=0,并定义一个变量 pos 记录最大值下标;
maxx依次跟数组中的元素进行比较;
如果该数组元素大于 maxx,则将该数组元素值赋值给 maxx ,同时将该元素的下标值赋值给 pos ;
pos 即为该数组中的最大值的下标。
#include<bits/stdc++.h>
using namespace std;
int n,a[105];
int maxx=0,pos;//maxx初始值要比任一数组元素的值小
int main()
{
cin>>n; //读入数组元素个数
for(int i=1;i<=n;i++) //数组赋值
cin>>a[i];
for(int i=1;i<=n;i++) //数组元素依序跟maxx比较
if(a[i]>maxx) maxx=a[i],pos=i; //记录最大值跟最大值的下标
cout<<pos; //将最大值下标输出
return 0;
}
*/
return 0;
}
第三课
/*
陈袁鑫
2024.9.26
数组元素的移动、插入、删除
*/
#include <iostream>
using namespace std;
int main()
{
/*
明明帮助老师按学号顺序把 402 班的数学成绩输入到电脑,完成输完后发现 18 号同学的成绩忘记输入。
使得后面所有同学的成绩都错位了。能不能设计一个程序把这个同学的成绩插入到正确的位置,使得成绩和学号一一对应?
解题思路
从插入位置起所有后面的同学都要向后退一步,先把那个位置空出来,然后就可以插入一个新成员。
元素的移动:数组元素位置发生变化。
例如,将数组中位置2的元素移动到位置1,可以写成:
a[1]=a[2]; //注意此时原位置1的被覆盖。
又如,将a数组中第一个元素移动到数组末尾,其余数据依次往前平移一个位置,可以按如下步骤实现:
把第一个元素的值取出放在一个临时单元temp中。
通过 a[1]=a[2];a[2]=a[3];a[3]=a[4]; ... a[n-1]=a[n] ,实现其余元素前移。
将 temp 值赋给 a[n]。
可以用以下语句实现:
temp=a[1]; //用temp暂存a[1]
for (int i=1;i<=n-1;i++) //2到n位数据前移
a[i]=a[i+1];
a[n]=temp; //把temp存到数据末尾
*/
/*
元素的删除:删除数组中某个特定位置的元素。a[5] 的数据虽然仍然存在,但是删除元素之前 n = 5。
删除后 n = 4,所以 a[5] 的值已经不在被关注,这个值留在数组内并不影响后续的计算了。
可以用以下语句实现:
for (int i=3;i<=4;i++)
a[i]=a[i+1];
因此,可以用以下程序解决明明的问题:
#include<iostream>
using namespace std;
int a[1001];
int main()
{
int n,m;
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
for (int i=n;i>=18;i--)
a[i+1]=a[i]
cin>>m;
a[18]=m;
for (int i=1;i<=n+1;i++)
cout<<a[i]<<" ";
return 0;
}
*/
return 0;
}
第四课
/*
陈袁鑫
2024.9.26
选择排序
*/
#include <iostream>
using namespace std;
int main()
{
/*
今天,数学老师找到了明明,让他把 1000 个学生的数学成绩按从高分到低分输入电脑。
就像我们排队是从高到矮一样,将同一类型的数据按一定顺序(从大到小或从小到大)排列称为排序。排序的算法有很多,其中选择排序是一种较简单的方法。
例如:输入 5 个正整数,把这 5 个数按由大到小的顺序排列。
分析:要把5个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,...... 。因此,我们第一步可将第一个位置的数与其后的各个数依次比较。
若发现有数比它大的,则互相交换位置,这样结束后,第一个位置的数就是最大的数。
用1号数据和后面2到5号的数据依次比较,确定 “第一大” 的数据。
-----
| |
20 10 50 40 10
第一次是 1 号和 2 号比较,20 > 10,所以数据不变。
-------
| |
50 10 20 40 10
第二次是 1 号和 3 号比较,20 < 50,所以交换数据。
-----------
| |
50 10 20 40 10
第三次是 1 号和 4 号比较,50 > 40,所以数据不变。
.....
经过多轮比较,最后确定的顺序是:
10 10 20 40 50
这种排序方法叫选择排序:(从大到小)
for (int i=1;i<=n-1;i++) //确定第i个位置的数据
for(int j=i+1;j<=n;j++) //将第i个数与其后所有数比较
if (a[i]<a[j]) //若a[j]比a[i]大,则交换数据
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
*/
return 0;
}
第五课
/*
陈袁鑫
2024.9.26
sort函数
*/
#include <iostream>
using namespace std;
int main()
{
/*
sort函数包含在头文件为 algorithm 的c++标准库中
这里建议用万能头文件:
#include<bits/stdc++.h>
sort函数有三个参数:
第一个是要排序的数组的起始。
第二个是结束的
第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
sort函数使用模板:
sort(start,end,排序方法);
排序方法可以不填,这时候用的是该数组数据类型的默认排序方法。
下面就具体使用 sort( ) 函数结合对数组里的十个数进行排序做一个说明:
例一:输入10个整数,从小到大输出。
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
sort(a,a+10);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
下面是运行结果
输入
9 6 3 8 5 2 7 4 1 0
0 1 2 3 4 5 6 7 8 9
*/
return 0;
}
第六课
/*
陈袁鑫
输出输入函数
*/
#include<bits/stdc++.h>
using namespace std;
//unsigned long long ;
int main(){
//我们学习过的 cin、cout,一般情况下,用来输入、输出数据已经足够了。
//但这种方法电脑的运行效率比较低,尤其是数据量达到 10 万个以上时会超时。
//为了能够更快输入、输出较多的数据,需要使用格式化输入(scanf)和输出函数(printf)。
//格式是
// scanf(格式控制符,变量名);
// printf(格式控制符,变量名);
//例如:scanf("%d",&a);printf("%d",a);它们也有着和cin与cout一样的好处
//同时也可以输出文字
//scanf("%d",a+1); // a+1 是数组元素的第二个元素的地址,所以写 a+1 相当于写 &a[1];
// 漏了写&,会出现 runtime 错误
//long long a;
//scanf("%d",&a);
//变量是 long long 类型,但是 scanf 的第一个参数格式说明说的是 int 类型。
return 0;
}