c语言基础

 

一、变量与常量

(1)常量:值不能被改变的量,数字、字母等

整型常量

c语言中有十进制、八进制、十六进制整数,例如10、056、0x8A等。

实型常量

十进制小数以及指数形式小数,例如1.23、.23、12.34e3等

字符常量

普通字符以及转义字符,例如’A’、’a’、’\n’(换行)等

字符串常量

若干字符,例如’abc123’等

(2)变量:值能够被改变的量,需要用关键字定义与基本数据类型配合使用

定义格式

数据类型 变量名; int num;

使用格式

变量名 num

初始化格式

数据类型变量名=数值; int num=10;

#include <iostream>
using namespace std;
int main() {
    int num1=10;
    int num2=20;
    cout << num1+num2<<endl;
    return 0;
}

二、基本数据类型

什么是基本数据类型:对数据分配存储单元的安排

(1)整型

int(整型4字节)、short(短整型2字节)、long(长整型8字节)

(2)字符型

char(字符型1字节)

(3)浮点型

float(单精度浮点型4字节)、double(双浮点型8字节)

1字节=8位([0000 0000])

#include <iostream>
using namespace std;

int main() {
    int num1=10;
    int num2=20;
    cout<< num1 << '\t' << num2 <<endl;
    char char1='a';
    char char2='z';
    cout<< char1 << '\t' << char2 <<endl;
    float float1=1.23;
    float float2=2.34;
    cout<< float1 << '\t' << float2 <<endl;
    double double1=3.45;
    double double2=4.56;
    cout<< double1 << '\t' << double2 <<endl;
    return 0;
}

三、ASCII码表

image

四、格式化输入与输出

什么是输出

计算机箱输出设备输出数据:printf(格式控制,输出列表);  printf(“%d”,num);

什么是输入

从输出设备向计算机输入数据:scanf(格式控制,地址列表);  scanf(“%d”,&num);

#include<iostream>
using namespace std;

int main() {
    int num;
    printf("请输入num值\n");
    scanf("%d",&num);
    printf("输出num值");
    printf("%d\n",num);

    //清除缓冲区中的换行符
    while(getchar() != '\n');
    char ch1;
    printf("请输入ch1值\n");
    scanf("%c",&ch1);
    printf("输出ch1值%c\n",ch1);

    //清除缓冲区中的换行符
    while(getchar() != '\n');
    float float1;
    printf("请输入float1值\n");
    scanf("%f",&float1);
    printf("输出float值\n");
    printf("%.2f",float1);
    return 0;
}

五、运算符

运算符:用于进行相关运算的特殊符号

运算符的优先级以及结合性:优先级表示运算的先后顺序,结合性表示同级运算符的运算方向

分类:算术运算符、关系运算符、逻辑运算符、条件运算符、位运算符、赋值运算符

算术运算符

用于进行算术运算,结果为确切的值

+(正号)、-(负号)

单目运算符,结合性自右向左,表示正负关系(+a,-a)

*(乘号)、/(除号)、%(取余)、+(加)、-(减)

双目运算符,结合性自左向右,简单算术运算

++(自增)、--(自减)

单目运算符,结合性自右向左,自增自减运算,分为前置自增和后置自增(++a,a++,--a,a--)

#include<iostream>
using namespace std;

int main(){
    int num1=5;
    int num2=2;
    int num3=num1/num2;
    int num4=num1%num2;
    printf("%d\n",num3);
    printf("%d\n",num4);
    printf("%d\n",++num4);
    printf("%d\n",num4++);
    printf("%d\n",num4);
    return 0;
}

关系运算符

用于进行算术运算,结果为1或0

<(小于),<=(小于等于),>(大于),>=(大于等于),==(等于),!=(不等于)

双目运算符,表示运算符两边的关系,关系成立结果为1,不成立结果为0(a<b)

逻辑运算符

用于进行逻辑运算,结果为1或0

&&(逻辑与)

双目运算符,同真为真,有假为假(a&&b)

||(逻辑或)

双目运算符,同假为假,有真为真(a||b)

!(逻辑非)

单目运算符,真为假,假为真(!a)

计算机判断真假:0为假非0为真

条件运算符

进行条件运算,结果根据条件判断

?:(条件运算符)

三目运算符,a为真则输出b的值,a为假则输出c的值(a?b:c)

#include<iostream>
using namespace std;

int main() {
    int num1=5;
    int num2=3;
    printf("%d\n",num1++);
    int num3;
    // 输出num1和num2中较大的值
    num3=num1>num2?num1:num2;
    printf("%d\n",num3);
    return 0;
}

位运算符

&

位与:操作的两个位都是1,得到的结果就是1,其他情况结果都是0

|

位或:操作的两个位都是0,得到的结果就是0,其他情况结果都是1

~(单目):

位非:位的值为1,结果变为0。值为0,结果变为1

^

位异或:操作的两个位不相同,得到的结果就是1,其他情况结果都是0

<<

位左移:将左操作数据的数据位往左移动右操作数表示的位数,左边移出的数据位丢弃,右边补0

>>

位右移:将左操作数据的数据位往右移动右操作数表示的位数,右边移出的数据位丢弃,正数左边补0,负数左边补1

#include<iostream>
using namespace std;

int main() {
    int num1=2;
    int num2=3;
    printf("%d\n",num1 & num2);
    printf("%d\n",num1 | num2);
    printf("%d\n",~num1);
    printf("%d\n",num1^num2);
    printf("%d\n",num1>>2);
    printf("%d\n",num1<<2);
    //两数交换
    num1=num1^num2;
    num2=num2^num1;
    num1=num1^num2;
    printf("%d\n",num1);
    printf("%d\n",num2);
    return 0;
}

其他运算符

圆括号 () 强调优先级,强制转换类型

六、优先级与结合性

优先级:有多个运算符同时存在优先级高的先运算。优先级不同的运算符参与运算时决定先后顺序

image

结合性:如果运算符的优先级相同,那么先后由“结合性”决定。

C语言中大多数运算符的结合性都是从左往右,只有三个运算符是从右往左的:单目运算符、三目运算符、双目运算符中的赋值运算符

七、表达式

表达式:一种有值的语法结构,由运算符将变量、常量、函数调用返回值结合而成

变量常量表达式:a、sum、1、0.5、PI

算术表达式:a+b、a-b+c、a*b+’A’、a/b-c+10、i++ + i++ + ++i

赋值表达式:a=b、a*=b+=20、a=b=c=10、a=(b=4)

逗号表达式:1+2,3+4  (10,a*5), a+10

关系表达式:x==y、x<=y、 x!=y

逻辑表达式 10&&20、 0||1、(a>b)&&(!0)

复合表达式:x=(y=(a+b),z=10)

八、语句

当程序运行时执行某个动作的语法结构,它改变变量的值,产生输出,或处理输入

以分号结尾;(注意是一个英文输入法下的分号)

c语言包括4类语句

空语句:只有一个分号的语句,什么都不做

表达式语句:在表达式的末尾加分号就形成了一个表达式语句

语句块:用{}将一系列语句括起来就是语句块,一般来说,其大功能上相当于一条语句

控制语句:分为三类,循环语句、选择/条件语句、转移语句

九、控制语句

循环语句、选择语句

if语句

如果表达式为真,就执行后面紧跟着的第一个语句

如果表达式为假,就不执行后面紧跟的第一个语句

一个if语句,一定会有(表达式)

一个if,只管后面一个语句

一个else,只管后面一个语句

else必须和if匹配,不能单独使用

if(表达式)
{
语句:
}

if(表达式)
{
语句;
}
else if(表达式)
{
语句;
}
else
{
语句;
}

if(表达式)
{
这个语句可以是if语句
}
else
{
这个语句可以是if语句
}
  1. if:关键字,“如果 是否”

  2. ():1 跟在if后面 2 后面不要加;

  3. 表达式:能够判断真假

  4. ()后面跟{}

  5. {}里面写代码

#include<iostream>
using namespace std;

int main(void) {
    if (6<7) {
        printf("6<7\n");
    }
    else {
        printf("7<6\n");
    }
    return 0;
}

switch语句 

switch(表达式)
{
case 值:
     语句体;
     break;
default:
     语句体;
     break;
}

1、switch:关键字 “开关”

2、case:关键字 “案例”,case后面的值,不能与其他case相同。找到对应的case后,所有case失效,开始顺序执行语句

3、break:关键字 “跳出”

4、default:关键字 “默认”,可以省略

5、表达式:能够得到整型的值,表达式必须能够得到一个整型的值

#include<iostream>
using namespace std;

int main(void) {
    int case1=1;
    switch (case1)
    {
        case 1:
            printf("周一\n");
            break;
        case 2:
            printf("周二\n");
            break;
        case 3:
            printf("周三\n");
            break;
        case 4:
            printf("周四\n");
            break;
        case 5:
            printf("周五\n");
            break;
        case 6:
            printf("周六\n");
            break;
        case 7:
            printf("周日\n");
            break;
        default:
            printf("输入错误,重新输入");
            break;
    }
}

for循环

直到型循环

for(初始值;条件;改变量)
{
循环体
}

1 (初始值;条件;改变量)都可以忽略

2 (; ;) ==> 无限循环

3 条件:条件为真继续循环

可以嵌套

for(初始值;条件;改变量)
{
for(初始值;条件;改变量)
{
循环体
}
}

 举例 

#include<iostream>
using namespace std;

int main(void) {
    for (int count=0;count<=10;count++) {
        cout<<"这是第"<<count+1<<"次循环"<<endl;
    }
    return 0;
}

多层循环

#include<iostream>
using namespace std;

int main(void) {
    for (int count1=0;count1<=2;count1++) {
        cout<<"这是第"<<count1+1<<"次外循环"<<endl;
        for (int count2=0;count2<=2;count2++) {
            cout<<"这是第"<<count2+1<<"次内循环"<<endl;
        }
    }
    return 0;
}

while循环

当型循环

while(表达式)
{
   循环体;
}

表达式:表达式为真,循环就继续进行

循环体;需要重复执行的逻辑

循环控制变量及其初始值,需要另外定义

可以嵌套

while(表达式)
{
   while(表达式)
{
   循环体;
}
} 

 举例

#include<iostream>
using namespace std;

int main(void) {
    int count = 0;
    while (count<10) {
        printf("这是第%d次循环\n",count);
        count++;
    }
    return 0;
}

多层循环

#include<iostream>
using namespace std;

int main(void) {
    int count1 = 0;
    int count2 = 0;
    while (count1<=10) {
        printf("*****这是第%d次外循环\n",count1);
        count2=0;
        while (count2<10) {
            printf("这是第%d次内循环\n",count2);
            count2++;
        }
        count1++;
    }
    return 0;
}

do while循环

do
{
循环体
}while(表达式);

do : “做” “执行”

While: “当...时”

==> do while “直到”

1、先执行一次循环体再判断循环条件(表达式)

2、如果表达式为真(循环条件成立)继续循环

3、否则结束循环

#include<iostream>
using namespace std;

int main(void) {
    int count=0;
    do {
        cout<<"这是第"<<count<<"次循环"<<endl;
        count++;
    }while (count<10);
}

4、可以嵌套

#include<iostream>
using namespace std;

int main(void) {
    int count1=0;
    int count2=0;
    do {
        cout<<"*****这是第"<<count2+1<<"次外循环"<<endl;
        count1=0;
        do {
            cout<<"这是第"<<count1+1<<"次内循环"<<endl;
            count1++;
        }while(count1<10);
        count2++;
    }while (count2<10);
}

break与continue

break语句

用法和作用

1、用在switch语句中,跳出一层switch

2、用在循环语句中,跳出一层循环

continue语句

用法和作用

只能用在循环语句中,提前结束一次循环,进行下一次循环

#include<iostream>
using namespace std;
int main(void) {
    int count1=0;
    int count2=9;
    for (count1=0;count1<20;count1++) {
        if (count1==count2) {
            break;
        }
        printf("break这是第%d打印\n",count1);
    }
    for (count1=0;count1<20;count1++) {
        if (count1==count2) {
            continue;
        }
        printf("continue这是第%d打印\n",count1);
    }
}

  

  

  

  

 

  

  

  

  

 

 

 

  

  

  

 

posted @ 2025-11-25 16:23  leagueandlegends  阅读(37)  评论(0)    收藏  举报