欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

class01 lhy 基础概念,数据类型,基本语句,基本

时间:2024-07-12 12:02 作者:admin 点击:
第一阶段: 刷题 基础学过:灌输,笔记(纸质) 考级:前四章都刷完了,做考级的题(90分以上) 第二阶段:数据结构部分(概念、题型、答题架构) 挑题做题 第三阶段:算法部分

第一阶段:

刷题

基础学过:灌输,笔记(纸质)

考级:前四章都刷完了,做考级的题(90分以上)


第二阶段:数据结构部分(概念、题型、答题架构)

挑题做题


第三阶段:算法部分(背)


9月初赛过了,10月份复赛【9-10专门练算法】


--------

程序的基本概念:

标识符(变量名):定义规则。通常会考cin、cout、scanf、printf能否做标识符,可以。

关键字:https://noicode.online/a/jichuyufa/20240504/112.html

常量:

   const 代表不能改变

   const int a=5;

   #define a 5;  预处理a,值为5,不能改变

变量:

字符串:

   char c[10]      string  末尾有'\0' 不占位

   字符数组函数      字符串函数

   char c[5]="hello"; //报错,'\0'占位

表达式:操作数和运算符组合的公式,可以计算出一个值(不限类型)

编辑:在编辑器中写代码的过程

编译:将源代码转化成机器语言或字节码(让计算机能够执行)

解释:python、javascript这些事解释型语言,自带翻译,自己解释之后,电脑就能执行了

调试:观察程序执行的过程,内存和变量的状态。

--------

基本数据类型:整数、小数、字符、布尔

字节数:

   int 4Byte=32bit

   long long 8Byte=64bit

   float 4B

   double 8B

   char 1B   [ascii码表:背0~9,A~Z,a~z]:https://noicode.online/a/jichuyufa/20240511/233.html

   bool 1B   值只有true和false

类型转换:

隐式:

int a=5;

double b=a;//自动转

bool c=a;

int d=c;

cout<<d;//1

显式:强制类型转换

double d=10.5;

int i=(int)(d);//正统

int i=(int)d;

int i=int(d);

int i=static_cast<int>(d);


如果大区间转小区间,可能会数据丢失

long long d;

int a=d;//内存空间不足,可能会丢失

double d;

long long b=d;//double存在整数区和小数区,long long没有小数区,所以小数部分会丢失。


字符型在使用进行数学运算时,以ascii值进行计算

char c='a';//97

cout<<c*2;//194

-------

cin>>a;

cin>>a>>b;//空格隔开

string s;

cin>>s;//输入的第一个单词存放,空格后面的会忽略

getline(cin,s);//整行获取,包括空格


输入一个十六进制的数据,将它转换成十进制再输出

int num;

cin>>hex>>num;//直接接收16进制数据进行转换。

cout<<num;

hex代表基数是16进制

dec代表10进制

oct代表8进制

-------

cout 输出的内容一定是c++本身认识的

struct node{

   int age;

};

node a;

a.age=10;

cout<<a;//报错,node类型cout不认识

cout<<a.age;


endl//换行

fixed//显示小数

setprecision(n)//保留精度

setw(n)//设置最小宽度

int a=10;

cout<<setw(5)<<a;//   10

int b=123456789;

cout<<setw(5)<<b;//123456789


如何让cout认识结构体类型

struct node{

   int age;

   //重载运算符<<

   friend ostream& operator<<(ostream& os,const node& p){

       return os<<p.age;

   }

};  

node a;

cout<<a;//不报错

--------

scanf

int a;

//语法:scanf("输入的格式",赋值的位置);

scanf("%d",&a);//已知需要输入的是整数,然后将输入的内容存入a的地址中

//%d 代表整数 &a 代表a的地址

double a,b;

scanf("%lf %lf",&a,&b);

//%lf 代表double

//%ld 代表long long,%f 代表float,%c 代表char,%s代表char[]

scanf使用时,前面的类型要与后面输入的一致


输入两个整数(用,隔开),输出他们的和

int a,b;

scanf("%d,%d",&a,&b);

cout<<a+b;

输入人名a喜欢地名b,格式为"a like b",输出"a come from b"

lilei like china

lilei come from china

char c[1000],d[1000];

scanf("%s like %s",c,d);//因为数组名即地址,所以不需要&

printf("%s come from %s",c,d);


char c[1000];

scanf("%s",c);//i love china

cout<<c;//i


scanf("%999[^\n]",c);//i love china

cout<<c;//i love china

--------

printf 格式化输出

printf("格式化输出",变量);//不需要&

"格式" %[标记][长度][.精度]字母

标记:

   空格(默认)

   0 填充0

   + 显示正负符号

   - 左对齐

printf("%8d",99);//"      99"

printf("% 8d",99);//"      99"

printf("%08d",99);//"00000099"

printf("%+8d",99);//"     +99"

printf("%-8d",99);//"99      "

长度:代表的是最小宽度

.精度:代表保留多少位小数,需要跟%f或%lf搭配

printf("%.6lf",1.234);//1.234000


因为scanf和printf均是c语言功能,string是c++语言功能,所以正常情况下无法搭配使用

string s="hello world";

printf("%s",s);//不行,可能乱码

printf("%s",s.c_str());//正常输出 将字符串转换成字符数组


因为实际竞赛中,数据量较大,超过10万次的输入或输出,可能会导致程序超时。

默认情况下,scanf和printf的速度远高于cin和cout

-------

复合语句:指{}括起来的内容

涉及到可以使用的范围(作用域)

{

   int a=10;

   {

       cout<<a;//10

       int b=5;

   }

   cout<<b;//报错

}

for(int i=0;i<5;i++){

   cout<<i;//01234

}

cout<<i;//报错

如果只有一行语句(以;结尾),可以省略{}


int x=10,y=20,z=30;

if(x>50) y=z;z=x;

cout<<x<<y<<z;//10 20 10


因为if后面没有{},所以复合语句为{y=z;}

int x=10,y=20,z=30;

if(x>50){

   y=z;

}

z=x;

cout<<x<<y<<z;//10 20 10

------

赋值语句

名 = 值  从右往左读,将值赋值给名

赋值符号:= += -= *= /= %= &= |= ^= <<= >>=

a%=b;//a=a%b;

a&=b;//a=a&b;

a>>=b;//a=a>>b;

& | ^ << >> 二进制位运算【后面再详细学习】


赋值链

int b,c;

b=c=5;//将5赋值给c,将c的值赋值给b

------

条件语句

if(值){}

else if(值){}

else{}

条件不一定要bool类型

if(1){//正确

   cout<<"hahaha";

}

if(a=10){


}


switch(值){

   case 1:

   case 2:

   ...

   default:


}

switch通常会有case与break的搭配的使用方式,但是break并不是必须代码。


switch与if的区别

速度:switch(坐电梯) 远高于 if(走楼梯)

使用场景:if可以进行复杂的区间判断或逻辑判断,switch只能判断值

执行过程:if符合某一个条件执行完会退出条件结构,switch匹配值以后有穿透效果,直到遇到break或执行完。

-------

循环结构

for while 没有任何区别的,可以任意替换

循环次数0~无数次

for(1;2;3) 1 2 3均可以省略,其中如果2省略,代表死循环

while(条件) 条件不可以省略

通常循环会与continue(跳过)和break(跳出)搭配使用

int i=0;

do{

   cout<<i;

   i++;

}while(i<10);

do-while:循环次数1~无数次


在迭代数据或循环次数固定时,for更方便

循环次数受条件影响时,用while更方便

-------

有哪些运算符:

   赋值运算符

   自增自减

   算术运算符

   逻辑运算符

   比较运算符

   成员访问运算符 a.b a[b] *a &a a->b a->*b a.*b

   其他运算符 a?b:c   a,b   a()

运算符的优先级

--------

https://noicode.online 注册会员,把会员账号发给我



目前刷题数:24,每天30

54,84,114,144,174,204


(责任编辑:admin)
    顶一下
    (1)
    100%
    踩一下
    (0)
    0%