- 分享
基础语法知识点1(基础数据类型~二维数组)
- 2023-11-15 11:48:26 @
基础输入输出
int(整数),char(字符),short(短整数[基本不用]),int(整数 -2147483647 ~ 2147483648),
long long(长整数 -9223372036854774808 ~9223372036854774807),
double(双精度浮点数,实数,小数),float(单精度浮点数[几乎不用]),bool(布尔[判断真假])
int x;// 声明一个整数变量x
cin>>x;
cout<<x;
cout<<fixed<<setprecision(k)<<x;//保留k位小数
四则运算
+(加),-(减),*(乘),/(除), %(余)
注意:
1.余数的正负由被除数决定
2.浮点数没有取余运算
3.如果a和b都是整数,则a/b会得到a除以b的商。
char ch='k'
int x=ch;//这样可以得到变量ch表示的字符的ascii码
1.上取整
(a+b-1)/b
2. 换水问题
int t=a;
a=b;
b=t;
3.拆数
求某一位就是除以多少,然后%10
例:x的百位 x/100%10;
4.四舍五入
int k=round(x)// k是 x 4舍5入的结果
常见的ascii
'0'~'9' 48~57
'A'~'Z' 65~90
'a'~'z' 97~122
' ' 32
条件语句
if判断
if(条件1)
{
//语句1
}
if(条件1)
{
//语句1
}
else
{
//其它语句
}
if(条件1)
{
//语句1
}
else if(条件2)
{
//语句2
}...
else
{
//剩余语句
}
逻辑连接符
a&&b 只有a和b同时为真的时候整个语句为真
a||b 只要a和b有一个为真的时候整个语句为真
!a 当a为假的时候,整个语句为真
运算符优先级 !>&&>||
1.绝对值
1.1
if(x<0)
{
x=x*-1;
}
1.2
x=abs(x)
2. 奇偶数判断
2.1 奇数判断
if(n%2!=0)
{
//当n为奇数的时候执行
}
2.2 偶数判断
if(n%2==0)
{
//当n为偶数的时候执行
}
3.字符类型判断
if(ch>='a'&&ch<='z')
{
//小写字符判定
}
if(ch>='A'&&ch<='Z')
{
//大写字符判定
}
if(ch>='0'&&ch<='9')
{
//数字字符判定
}
4.闰年判断
if(year%4==0&&year%100!=0||year%400==0)
{
//当year为闰年的时候执行
}
开关语句
switch(n)
{
case 1:
//语句
break;
case 2:
//语句2
break;
default:
//默认语句
}
循环语句
while循环
状态初始化
while() //状态判断
{
//语句块
//状态更新
}
遍历 m到n之间的所有数(包括m和n)
int t=m;
while(t<=n)
{
//t为m到n之间的每个数
t++;
}
先执行语句块再进行条件判断
do
{
//语句块
}while() //状态判断
拆数模板
while(t)
{
int ge=t%10;
//对当前个位进行操作
t/=10;
}
//拆数完成以后,t的值为0
翻转数模板
int res=0;
while(t)
{
int ge=t%10;
res=res*10+ge;
t/=10;
}
//res是t翻转以后的结果
for循环
for(初始化;判断;更新)
{
语句块;
}
1.输出a到b之间的数
for(int i=a;i<=b;i++)
{
cout<<i<<" ";
}
2.求和模板
int s=0;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
s+=x;
}
3.最大值模板
3.1 maxv初始化
int maxv=-1; //(初始化成最小值)
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(x>maxv)
{
maxv=x;
}
}
3.2 maxv不初始化
int maxv;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(i==1||x>maxv) //如果是第一个,或者当前元素比最大值大
{
maxv=x;
}
}
4.最小值模板
4.1 minv初始化
int minv=1000; //(初始化成较大值)
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(x>minv)
{
minv=x;
}
}
4.2 minv不初始化
int minv;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(i==1||x>minv)
{
minv=x;
}
}
5.统计类模板
int cnt=0;
int m;
cin>>m;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(x==m) //判断当前元素是否等于x
{
cnt++;
}
}
6.次方类题目(a^b)
int s=1;
for(int i=1;i<=b;i++)
{
s=s*a;
}
7.质数判断
bool st=true;
int n;
cin>>n;
if(n<2) //小于2不在质数的判定范围以内
{
st=false;
}
for(int i=2;i<=n/i;i++) //枚举小因子
{
if(n%i==0) //存在小因子
{
st=false;
}
}
if(st==true)
{
//满足质数需要执行的内容
}
else
{
//不满足质数需要执行的内容
}
8.枚举类题目(百钱百鸡)
for(int i=0;i<=20;i++) //公鸡的数目
{
for(int j=0;j<=33;j++) //母鸡的数目
{
for(int k=0;k<=100;k+=3) //小鸡的数目
{
if(i+j+k==100&&5*i+3*j+k/3==100) //百钱百鸡
{
cout<<i<<" "<<j<<" "<<k<<endl;
}
}
}
}
break 语句
循环
{
if(条件1)
{
break;
}
语句1
}
语句2 //当条件1条件为真时,直接跳到语句2执行
continue
循环
{
if(条件1)
{
continue;
}
语句1
}
语句2 //当条件1条件为真时,跳到循环的那句继续执行
数组
一维数组
数组: 数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的元素。用于区分数组的各个元素的数字编号称为下标。
一般为了方便会比题目多开10个空间
int a[100];//声明一个可以存放100个元素的整数数组
int a[100]={1,4,2};//将a[0]=1,a[1]=4,a[2]=2
一般我们会使用一个常量来声明数组的大小
const int N=110; //声明一个大小为110的常量N
int a[N]; //声明一个可以放110个元素名为a的数组
//输入n个元素的数组,数组变量名是i,下标从1开始
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
//顺序输出输出的每个元素
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" "; //元素和元素之间用空格隔开
}
//元素之间需要输出逗号的时候,我们一般会让逗号跟着前面一个元素或者是后面一个元素
//前一个元素
for(int i=1;i<n;i++)
{
cout<<a[i]<<",";
}
cout<<a[n];
//后一个元素
cout<<a[1];
for(int i=2;i<=n;i++)
{
cout<<","<<a[i];
}
//冒泡排序
for(int i=1;i<=n;i++) //每轮确定一个元素的位置
{
for(int j=1;j+1<=n-i+1;j++) //第i轮确定第n-i+1这个位置上的值
{
if(a[j]>a[j+1]) //比较相邻的两个元素
{
swap(a[j],a[j+1]);
}
}
}
//标记法
a[i]=1,a[j]=1,a[k]=1,表示位置i,j,k位置具有相同的属性
a[o]=2,a[p]=2,a[q]=2,表示位置o,p,q位置具有相同的属性
//最长平台
for(int i=1;i<=n;i++)
{
int j=i;
while(j<=n&&满足属性) j++;
j==;
//这个时候i是当前平台的第一个元素,j是当前平台的最后一个元素
i=j; //跳到平台的最后一个位置
}
二维数组
int a[N][M]={{1,2,3},{4,5}};
a[0][0]=1,a[0][1]=2,a[0][2]=3
a[1][0]=4,a[1][1]=5;
一般矩阵习惯从1,1开始到 n,m结束 ,n表示行 ,m表示列
矩阵的边缘判断 i==1||i==n||j==1||j==m
点(i,j)对应的上(x-1,j),下(x+1,j),左(x,j-1),右(x,j+1);
点(i,j)到上(i),下(n-i+1),左(j),右(m-j+1)
和(i,j)同左上到右下的对角线 (i-j==x-y)
和(i,j)同左下到右上的对角线 (i+j==x+y)
输入一个n行m列,以(1,1)开始的变量名为a的二维数组
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
输出一个n行m列,以(1,1)开始的变量名为a的二维数组
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;//每输出完一行,输出换行
}
矩阵加法 c[i][j]=a[i][j]+b[i][j];
矩阵乘法
for(int k=1;k<=t;k++) //t是第一个矩阵的列数,也是第二个矩阵的行数
{
c[i][j]+=a[i][k]*b[k][j];
}
5 条评论
-
lizi10 LV 7 @ 2024-1-27 14:51:47
sdafgreg
-
2024-1-25 11:32:56@
https://www.acgo.cn/ shang
-
2024-1-20 10:44:56@
-
****](https://)~~*
方法就是大家大师傅地方大师傅输入方法是大多数地方dijfjfsdifjsdjsdifjdfj#include<bits/stdc++.h>
-
-
2024-1-14 15:49:11@
YGYGER6TY9RFX7JGXCY79874XHYMR39XJ83HYRFYRHEW
-
2023-12-2 10:39:48@
frddd68
- 1