C语言基础知识点上篇(超详细,适合小白!!!)

目录

1.1 认识C语言

1.C语言的构成

2.C语言的过程概要

标识符、常量、变量和数据类型

1.标识符

2.常量

3.变量

4.数据类型

 2.1算术表达式

1.C语言中常用的运算符

●算术运算符

●关系运算符

 ●逻辑运算符

●位运算符

●赋值运算符

●自增、自减运算符

●逗号运算符 

●其他运算符 

2.运算符的结合性和优先级

①结合性

②优先级

3.1基本语句

1.输入/输出函数

①输入函数

②输出函数

 2.输入/输出的格式字符

①printf 函数中的格式字符

②scanf 函数中的格式字符

4.1选择结构

1.关系运算符/关系表达式

①关系运算符

②关系表达式

2.逻辑运算符/逻辑表达式

①逻辑运算符

②逻辑表达式

3.if语句

①if语句的基本结构

 ②if语句的经典示例

4.条件运算符

 ①条件运算符形式

  ②条件运算符的经典示例

5.switch语句

 ①switch 语句的基本结构

 ②switch语句的经典示例

5.1循环结构 

①for 循环

②while循环

③do-while循环

6.1break/continue的介绍

①break

②continue 

7.1上篇结束介绍


1.1 认识C语言

1.C语言的构成

(1)源程序由函数构成,每个函数完成相对独立的功能。

(2)"#"号开始的命令行

预处理命令以#开头的语句,常用#include,后面使用双引号或者尖括号括住文件名,表示包含此文件,结尾无分号,例如#include<stdio.h>或者#include "stdio.h",表示包含标准输入/输出的头文件。

(3)main()主函数

main表示主函数名,C语言中每个源程序必须有且只能有一个主函数,不论main函数放在程序中的任何位置,C语言的程序总是从主函数开始执行。(void表示函数无返回值)

(4)分号

每个语句都必须用分号结束,分号是语句的一部分,不是分隔符,注意预处理命令、函数头之后不能加分号。

(5)注释

c语言程序中的注释部分是不被编译的,作用是方便读者理解程序。注释有两种表达方式:

单行注释:需要单行注释的代码前加“//”;

多行注释:需要多行注释的代码用“/*”开始,“*/”结束;

(注释成功颜色会变化的哦!)

(6)函数体

函数体是在函数后边用一对大括号"{ }"括住的部分,大括号经常用于复合语句、循环语句以及选择语句中。

(7)区分大小写

C语言区分大小写,小写字母多用于变量、函数和数组,大写字母,大写字母常用于宏定义上。

这种区分大小写的特性在编写C程序时需要被严格遵守,否则可能导致编译错误或程序行为不符合预期。(例如,main 和 Main 被认为是两个不同的标识符。)

2.C语言的过程概要

(1)c语言的运行过程:首先源程序文件通过编译汇编成目标文件,再通过连接生成可执行文件

(2)C语言源代码文件,通常以 .c 为扩展名,目标程序以.obj为扩展名,可执行程序以.exe为扩展名。

//认识C语言代码
#include <stdio.h>
int main(){

printf("Hello world\n");
	
}

//你好呀
/*你好呀*/

标识符、常量、变量和数据类型

1.标识符

命名规则

●以字母或者下划线开头,由字母数字下划线组成。(注意:一定不能以数字开头)

●要避开C语言程序中的关键字,不能与关键字同名,他们有着固定的含义,不能更改。

正确的标识符:a、area、_1234_、Main、int_1

错误的标识符:2_int、3amax、long

2.常量

概念:指程序执行期间它的值不能被修改的数据。

常量类型:整型常量、实型常量、字符常量、字符串常量以及符号常量。

①整型常量(Integer Constants):

表示整数值,可以是十进制、八进制或十六进制的数字。例如:123, 017, 0x1A。

十进制:基本数字范围为0~9;

八进制:以0开头。基本数字范围0~7;

十六进制:以0x开头,基本数字范围0~15,其中9后边10~15用A~F或者a~f代替。

②实型常量(Floating-point Constants):

表示实数值,包括小数部分。例如:3.14, 2.0e-5。

注意:指数形式的话e前边必须有数字,e后边必须为整数。

③字符常量(Character Constants):

 表示单个字符。用单引号括起来的字符,例如:'A', '9', '%'。

转移字符以“\”开头,后边跟不同的字符表示不同的意思。例如:

●\n  :表示换行

●\ddd :表示1~3位八进制数所表示的一个Ascll字符。

④字符串常量(String Constants):

 表示一串字符。用双引号括起来的字符序列,例如:"Hello, World!"。

⑤符号常量(Symbolic Constants):

 符号常量是使用 #define 预处理指令定义的常量,它们在程序中具有固定的标识符。符号常量不会在程序执行期间改变其值。例如:

#define PI 3.14
#define MAX_SIZE 100

3.变量

概念:变量是用于存储和表示数据的标识符。每个变量都有一个特定的数据类型,这决定了变量可以存储的数据类型和占用的内存空间大小。


变量声明: 

在使用变量之前,需要进行变量声明,以告诉编译器有一个具有特定类型和名称的变量将被使用。例如:

int age; // 声明一个整型变量名为age

变量初始化: 

变量可以在声明的同时进行初始化,即为变量赋予一个初始值。

例如:

int count = 0; // 初始化一个整型变量count,并赋值为0

变量命名规则

 变量名必须遵循一定的规则,包括以字母或下划线开头,只能包含字母、数字和下划线等。

例如:

int my_variable; // 合法的变量名

4.数据类型

●整形(Integer):

int:表示整数类型。通常在32位系统上占4个字节,在64位系统上通常占8个字节。
short:短整数类型,通常占2个字节。
long:长整数类型,通常占4个字节,但在64位系统上可能占8个字节。
 

int num = 42;

●浮点型(Floating-point):

float:单精度浮点数,通常占4个字节。
double:双精度浮点数,通常占8个字节。
 

float  fnum = 3.14;


●字符型(Character):

char:表示单个字符,通常占1个字节。(通常用单引号引起来表示字符)
 

char ch = 'A'; 


 2.1算术表达式

1.C语言中常用的运算符

运算符的简介:

算术运算符

+(加法)、-(减法)、*(乘法)、/(除法)、%(取模、取余)。

//例子:
int a = 5, b = 3, result;
result = a + b;   // result = 8
result = a - b;   // result = 2
result = a * b;   // result = 15
result = a / b;   // result = 1
result = a % b;   // result = 2

关系运算符

==(等于)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)。

//关系运算符的例子:
int a = 5, b = 10;
if (a == b) {
    printf("你好,世界");
} else {
    printf("条件不成立,不执行上述语句");
}


if (a != b) {
    printf("你好,世界"); // 条件成立,执行语句
} else {
    printf("条件不成立,不执行上述语句");
}


if (a < b) {
    printf("你好,世界");// 条件成立,执行语句
} else {
    printf("条件不成立,不执行上述语句");
}
// 以此类推

 ●逻辑运算符

&&(逻辑与)、||(逻辑或)、!(逻辑非)

//逻辑运算符的例子:
int a = 1, b = 0;
if (a && b) {
    // 当a和b都为真时执行
}
if (a || b) {
    // 当a或b任一为真时执行
}
if (!a) {
    // 当a为假时执行
}

●位运算符

&(按位与)、|(按位或),^(按位异或)、~(按位取反),<<(左移)、>>(右移)。

//位运算符的例子
unsigned int a = 5; // 二进制表示为 0000 0101
unsigned int b = 3; // 二进制表示为 0000 0011
unsigned int result;

result = a & b; // 0000 0001 (1)
result = a | b; // 0000 0111 (7)
result = a ^ b; // 0000 0110 (6)
result = ~a;    // 1111 1010 (补码表示的负数,取反加1)
result = a << 1; // 0000 1010 (左移一位,相当于乘以2)
result = a >> 1; // 0000 0010 (右移一位,相当于除以2)

●赋值运算符

=(赋值)、+=(加法赋值)、-=(减法赋值)、*=(乘法赋值)、/=(除法赋值)、%=(取模赋值)、&=(按位与赋值)、|=(按位或赋值)、^=(按位异或赋值)、<<=(左移赋值)、>>=(右移赋值)。

//赋值运算符的例子
int a = 5, b = 3;
a += b; // 相当于 a = a + b;
a -= b; // 相当于 a = a - b;
// 以此类推

●自增、自减运算符

自增运算符(++):
前缀形式:++x,先增加变量的值,然后使用新值。
后缀形式:x++,先使用变量的值,然后再增加变量的值。

自减运算符(--):
前缀形式:--x,先减少变量的值,然后使用新值。
后缀形式:x--,先使用变量的值,然后再减少变量的值

//自增
int a = 5;
int b, c;

b = ++a; // 前缀形式,a先加1,然后赋值给b,此时a和b的值都是6
c = a++; // 后缀形式,a的值先赋给c,然后a再加1,此时c为6,a变为7


//自减
int x = 10;
int y, z;

y = --x; // 前缀形式,x先减1,然后赋值给y,此时x和y的值都是9
z = x--; // 后缀形式,x的值先赋给z,然后x再减1,此时z为9,x变为8

●逗号运算符 

x=(a,b,c) ,则x的结果为c。

形式:表达式1,表达式2,........,表达式n.

结合方向:从左至右

运算规则:先计算表达式1的值,然后计算表达式2的值,再计算表达式3的值,......,最后计算表达式n的值,最后的表达式n的值就是整个逗号表达式的值。

#include <stdio.h>

int main() {
    int a = 5, b = 10, c = 15, result;

    // 使用逗号表达式
    result = (a += 2, b += 5, c *= 3, a + b + c);

    // 输出各变量的值
    printf("a: %d\n", a); // 输出:a: 7
    printf("b: %d\n", b); // 输出:b: 15
    printf("c: %d\n", c); // 输出:c: 45
    printf("Result: %d\n", result); // 输出:Result: 57

    return 0;
}

●其他运算符 

字节运算符:sizeof

条件运算符:?:

指针运算符:&,*

强制运算符:(类型名)(表达式)

初等运算符:圆括号()、下标运算符([ ])、结构体成员运算符(->)

<了解即可>


2.运算符的结合性和优先级

概述:在C语言中,运算符的结合性(associativity)和优先级(precedence)决定了表达式中运算符的计算顺序。结合性指的是当相邻的运算符具有相同的优先级时,是从左往右计算还是从右往左计算。优先级则决定了不同运算符之间的计算顺序,具有高优先级的运算符会在表达式中具有较早的计算顺序。

①结合性

所有的单目运算符、条件运算符、赋值运算符以及其扩展运算符结合方向是从右往左,

其他运算符的结合方向都是从左往右。

②优先级

初等运算符>单目运算符>算数运算符(先乘除后加减)>关系运算符>逻辑运算符(不包括“!”)>条件运算符>赋值运算符>逗号运算符


3.1基本语句

1.输入/输出函数

①输入函数

scanf()函数的一般调用形式:

scanf(格式控制,输入项表);

●格式控制:是以“%”开始的格式控制符。

●输入项表:是用逗号断开的各个变量的地址。(一般用&取地址符)

//例子:输入的两种写法

//第一种写法:
int a,b;   //定义两个整型变量
scanf("%d %d",&a,&b);   //输入两个整数赋值给a和b


//第二种写法
int x,y;
scanf("%d,%d",&x,&y);  //在输入格式控制中,如出现除格式控制符以外的字符,输入要原样输入

②输出函数

printf()函数的一般调用形式:

printf(格式控制,输出项表);

●格式控制的规则:

(1)一般字符原样输出

(2)以"%"开始的为格式转换说明符

(3)以"\"开始的为转义字符

拓展:为了使输出数据整齐,可以指定输出宽度。(例如:%nd用于指定输出所占的宽度,以下程序为x=%3d,则输出共占3个宽度,得x=  5;)

//输出的例子
#include <stdio.h>
int main(){

int x=5,y=20;
printf("x=%d,y=%d\n",x,y);
	
return 0;
}


 2.输入/输出的格式字符

①printf 函数中的格式字符

  %d:以十进制形式输出整数。
  %f:以浮点数形式输出数字。
  %c:输出一个字符。
  %s:输出字符串。
  %x、%X:以十六进制形式输出整数。
  %o:以八进制形式输出整数。
  %u:以无符号十进制形式输出整数。

   %%:输出百分号。

int num = 12;    //定义整型常量
float pi = 3.14;  //定义浮点型常量
char ch = 'A';   //定义字符型常量
char str[] = "Hello";

printf("Integer: %d\n", num);  //输出整型
printf("Float: %f\n", pi);    //输出浮点型
printf("Character: %c\n", ch);  //输出字符型
printf("String: %s\n", str);   //输出字符串型

②scanf 函数中的格式字符

%d:读取十进制整数。
%f:读取浮点数。
%c:读取一个字符。
%s:读取字符串,不会读取空白字符。
%x、%X:读取十六进制整数。
%o:读取八进制整数。
%u:读取无符号十进制整数。

int num;
float pi;
char ch;
char str[50];

scanf("%d", &num);
scanf("%f", &pi);
scanf(" %c", &ch);  // 注意:空格用于跳过空白字符
scanf("%s", str);

4.1选择结构

1.关系运算符/关系表达式

①关系运算符

上文已经有所了解,复习一下吧:

C语言提供了“<”、“<=”、“>”、“>=”、“==”、“!=”这6种关系运算符。

优先级:关系运算符的优先级低于算术运算符高于赋值运算符。

②关系表达式

●概念:关系表达式就是用关系运算符将常量、变量和各种表达式连接起来的运算式。

●关系运算符的结果是一个整数值——“0或者非0”(非0值表示0值表示

例子:

关系表达式:3>5                关系表达式的值:0     

关系表达式:3<=4              关系表达式的值:1

关系表达式:52-12<30       关系表达式的值:0

关系表达式:'a'>=97           关系表达式的值:1


2.逻辑运算符/逻辑表达式

①逻辑运算符

上文已经有所了解,复习一下吧:

C语言提供了“&&”、“||”、“!”这3种逻辑运算符。

逻辑与(&&)、逻辑或(||)是双目运算符,优先级低于关系运算符高于赋值运算符。

逻辑非(!)是单目运算符,而且要求必须出现在运算对象的左边,逻辑非(!)优先级高于算术运算符。

优先级

!>&&>|| 。         

!>算术运算符>关系运算符>&&>||>赋值运算符。

②逻辑表达式

●A&&B运算中,只有A、B同时为真才为真,A或B其中一个为假,结果都为假。

●A||B运算中,只有A、B同时为假才为假,A或B其中一个为真,结果都为真。

●关系运算符不能连用,数学表示的"0<x<10"在C语言表示为“x>0&&x<10”“0<10&&x<10”的形式。

(注意:C语言中绝不能写成“0<x<10”)

int a = 5;
int b = 10;
int c = 15;

if (a < b && b < c) {
// 条件成立:a小于b且b小于c
printf("a小于b且b小于c\n");
} else {
// 条件不成立
printf("条件不成立\n");
}

3.if语句

①if语句的基本结构

if (表达式) {
// 如果条件为真,执行这里的代码块
// 可以包含一个或多个语句
} else {
// 如果条件为假,执行这里的代码块
// 可选的,可以不包含
}

●if后的表达式必须用括号括起来。

●if是C语言的关键字

●else必须与if配对 ,共同组成if-else语句。

●if语句的嵌套:在if语句中又包含一个或者多个if语句结构,称为if语句的嵌套。

 ②if语句的经典示例

1.判断输入字符是否为字母

//判断字符是否为字母
#include <stdio.h>
int main(){
	char x;
	printf("请输入一个字符:");
	scanf("%c",&x);
	if(x>='a'&&x<='z'||x>='A'&&x<='Z')  //判断x是否为字母
{
		printf("\n字符是:%c,",x);
		printf("是字母\n");
}
else
{
	printf("\n字符是:%c,",x);
	printf("不是字母\n");
}
	return 0;
}

2.判断年份

#include <stdio.h>

int main() {
int year;

// 输入年份
printf("请输入一个年份: ");
scanf("%d", &year);

// 判断是否为闰年
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d年是闰年。\n", year);
} else {
printf("%d年不是闰年。\n", year);
}

return 0;
}


4.条件运算符

 ①条件运算符形式

●条件运算符:?:

优先级:条件运算符高于赋值运算符;但低于逻辑、关系、算术运算符。  

一般形式:表达式1?表达式2:表达式3 

当表达式1的值为非0(真)时,则以表达式2的值作为整个条件表达式的值。

当表达式1的值为0(假)时,则以表达式3的值作为整个条件表达式的值。

例如

 int a=5,b=3; 

 (a>b)?a:b    //先判断a>b是否为真,为真输出a的值5,为假则输出b的值3。

  ②条件运算符的经典示例

1.比数值大小

#include <stdio.h>

int main() {
int num1 = 10;
int num2 = 20;
int max = (num1 > num2) ? num1 : num2;

printf("最大值是: %d\n", max);

return 0;
}

5.switch语句

 ①switch 语句的基本结构

switch(表达式)
{
    
    case 常量表达式1:语句1
    case 常量表达式2:语句2
    ......
    case 常量表达式n:语句n
    default:代码块;
}

概述:switch 语句是C语言中一种用于多分支选择的流程控制语句。它允许根据表达式的值从一组可能的情况中选择一个分支来执行。

●case介绍

case与它后边的常量表达式合称case标号

case 后面的 常量表达式1是常量值,如果表达式的值等于某个 case 后面的常量值,那么与该 case 相关联的代码将被执行。

●default 的介绍:

default是C语言中的关键字

default是可选的,用于处理表达式不等于任何 case 常量时的情况。如果没有匹配的 case,将执行 default 后的代码块。

●break的介绍:

break 语句用于终止 switch 语句,防止继续执行其他 case。如果省略 break,程序将会继续执行下一个 case,直到遇到 break 或 switch 结束。

 ②switch语句的经典示例

1.判断星期的代码示例

#include <stdio.h>

int main() {
int day = 3;

switch (day) {
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;
default:
printf("周末\n");
}

return 0;
}

 2.输入成绩判断成绩等级

#include <stdio.h>

int main() {
double score;
printf("请输入一个成绩:");
scanf("%lf",&score);    //注意这个是字母L,不是1
if(score>=0){
	switch((int)score/10){
	case 10:
	case 9:printf("A\n");
	break;
	case 8:printf("B\n");
	break;
	case 7:printf("C\n");
	break;
	case 6:printf("D\n");
	break;
	default:printf("E\n");
	}
}
else
{
	printf("错误!,成绩不能为负值!");
}

return 0;
}


5.1循环结构 

①for 循环

●一般形式:for(表达式1;表达式2;表达式3)

概述:for 循环是一种在已知循环次数的情况下使用的循环结构。

基本结构:

for (初始化表达式; 循环条件; 更新表达式) {
// 循环体
}

●初始化表达式:在循环开始前执行,用于初始化循环控制变量。
●循环条件:每次迭代前都会被评估,如果条件为真,则执行循环体;否则,退出循环。
●更新表达式:在每次迭代后执行,用于更新循环控制变量的值。

示例:

#include <stdio.h>

int main() {
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}

return 0;
}

②while循环

●while是C语言的关键字

概述:while 循环用于在条件为真时执行循环体,只有在循环体内的条件变为假时才会退出循环。

基本结构:

while (循环条件) {
// 循环体
}

示例

#include <stdio.h>

int main() {
int i = 1;
while (i <= 5) {
printf("%d ", i);
++i;
}

return 0;
}

③do-while循环

概述:do-while 循环是一种先执行循环体,然后检查条件的循环结构。这意味着循环体至少会被执行一次。

基本结构:

do {
// 循环体
} while (表达式);     //必须加分号

●do-while的执行过程:

先执行循环体,然后计算表达式的值,若表达式为真,则执行循环体中的语句,然后再计算表达式的值,为真执行循环体,以此反复。

示例:

#include <stdio.h>

int main() {
int i = 1;
do {
printf("%d ", i);
++i;
} while (i <= 5);

return 0;
}

6.1break/continue的介绍

①break

●break 语句用于立即终止当前所在的循环,跳出循环体,不再执行循环后面的语句。


●在 for、while 或 do-while 循环中使用 break 会导致程序执行流程跳出整个循环。


●通常与某个条件结合使用,一旦满足条件,就使用 break 来提前结束循环。

示例:

#include <stdio.h>

int main() {
for (int i = 1; i <= 10; ++i) {
if (i == 5) {
printf("Breaking out of the loop at i = %d\n", i);
break;
}
printf("%d ", i);
}

return 0;
}
//输出结果
1 2 3 4 Breaking out of the loop at i = 5  

②continue 

●continue 语句用于跳过循环体中剩余的语句,直接进行下一次循环迭代。

●当在循环体中的某个条件满足时,使用 continue 可以跳过该次迭代中剩余的代码,直接进入下一次循环。

#include <stdio.h>

int main() {
for (int i = 1; i <= 5; ++i) {
if (i == 3) {
printf("Skipping the iteration at i = %d\n", i);
continue;
}
printf("%d ", i);
}

return 0;
}
//输出结果
1 2 Skipping the iteration at i = 3 4 5


7.1上篇结束介绍

C语言是一门极其重要的编程语言,应用十分广泛,作者为了让更多C语言初学者简单易懂的学习和理解C语言,通过查阅大量书籍和网络文献保证文章准确率,然后通过作者自己的对于C语言的见解和认知编写了这一篇C语言知识点博客,对C语言入门初学者超级友好,可能制作水平远不及其他大佬,或者多少会有些许错误,还请各位读者谅解,给予指正!在此感谢各位读者阅读,制作不易,请多包涵!!!

此篇只是C语言的简单部分,供初学者认识和学习,下篇相对困难且重要,大家一起努力,共同进步吧,不畏艰险,迎难而上吧!!!

(在C语言中Ascll码也很重要哦,本文没有提及,可以去看其他的文章补一下知识点哈!)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈溪纯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值