第一周学习汇总

发布时间:2026/10/25 1:59:07
第一周学习汇总

一、概述

1.C语言的发展过程

C语言在70年代初问世,一九七八年由美国电话电报公司贝尔实验室正式发表了C语言,后来美国国家标准协会制定了一个C语言标准,于1983年发表,称为ANSIC。早期的C语言主要是用于UNIX系统,由于C语言的强大功能和各方面的优点逐渐被人们认识,到八十年代,C语言被广泛使用,成为当代最优秀的程序设计语言之一。

2.C语言的特点

(1)C语言简洁,紧凑,使用方便,灵活;

(2)运算符丰富,运算类型更多;

(3)数据结构类型丰富;

(4)具有结构化的控制语句;

(5)程序自由度大,语法控制不是很严格;

(6)允许直接访问物理地址,能进行位操作,可直接对硬件进行操作,能实现汇编语言的大部分功能,且与汇编相比,用C语言写的程序可移植性好;

(7)生成目标代码质量高,程序执行效率高。

3.程序设计思想

(1)面向过程:以事件为中心,分析解决问题需要的步骤,用函数将这些步骤一步一步实现,使用时依次调用即可。

(2)面向对象: 以实物为中心,关注由哪些对象协作完成任务。

4.环境安装

Code::Blocks/Visual Studio

5.第一个代码

#include <stdio.h> int main() { printf("Hello World!"); return 0; }

二、数据类型

1.逻辑类型

true和false,分别表示逻辑真值和逻辑假值。

2.整数类型

(1)char

类型名称长度(字节)值域
char1-128-127或0-155
signed char1-128-127
unsigned cahr10-255

补充:计算机在内存中存储方式是补码:正数的原码、反码和补码一样。负数的反码是在其原码的基础上,符号位不变,其余位按位取反;负数的补码是在其反码的基础上+1。

(2)short

类型名称长度(字节)值域
short2-32768-32767
unsigned short20-65535

(3)int

类型名称长度(字节)值域
int4-2147483648-2147483647
unsigned int40-4294967295

(4)long

(5)浮点类型

包括float和double

数据类型从大到小:double > float > long long > long > int > short > char

(6)bool类型

值域:非零(true),零(false)

#include <stdio.h> #include <stdbool.h> //bool类型所在头文件 int main() { bool a; a = 1; if(a) { printf("TRUE"); //a只要不为0,打印TRUE } else { printf("FALSE"); } return 0; }

三、常量

1.整形常量

常量:在程序运行期间数值不发生变化的数据。

整数:可以是十进制、八进制和十六进制。

2.浮点常量

3.指数常量

组成:尾数部分、字母e或E和指数部分。通常用来表示特别大或者特别小的数。

4.字符常量

表示形式:由两个单引号包括一个字符。

在C语言中,字符常量具有数值,字符常量的就等于字符的ASCII值。

5.字符串常量

表示形式:用双引号括起来的一串字符。

6.标识常量

也叫符号常量,一般用大写英文字母的标识符。

表示形式:#define <标识常量名称> <常量>

#include <stdio.h> #define ONE 1 #define TWO ONE + ONE //ONE TWO都是标识常量 int main() { //1.整形常量 int num = 10; printf("%d\n", num); //输出十进制数 printf("%x\n", num); //输出十六进制数 printf("%o\n", num); //输出八进制数 printf("---------------\n"); //2.浮点常量 float a = 5.20; //单精度 占4字节 double b = 13.14; //双精度 占8字节 printf("float:%f\n", a); printf("double:%f\n", b); printf("---------------\n"); //3.指数常量 //4.字符常量 char c = 'A'; char d = c + 10; printf("c = %d, d = %d\n", c); printf("%c\n", d); printf("---------------\n"); //5.字符串常量 int x = ONE + TWO; printf("x = %d\n", x); return 0; }

四、变量

1.变量的基础

(1)变量由字母、数字、下划线组成,不能以数字开始,不能和C的关键字重名;

(2)程序运行时,变量占据存储空间的大小由其数据决定;

(3)变量在内存空间中的首地址成为变量的地址。

2.变量的说明

一般形式:<存储类型> <数据类型> <变量名>;

<存储类型>:是关键词auto、register、static和extern;

<数据类型>:可以是基本数据类型,也可以是自定义的数值。

注意事项:(1)一个变量只能存一个值,变量名不允许重复定义;

(2)一条语句可以定义多个变量;

(3)变量在使用之前一定要进行赋值。

3.变量的存储类型

(1)auto

说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的符合语句中,在程序中一般省略关键字auto,c语言会默认关键字是auto。

(2)register

寄存器型,将变量放入CPU的寄存器中;不能用“&”来获取register变量的地址。

(3)static

静态存储类型,既可以子啊函数体内,也可以在函数体外(默认为0);

该存储类型的变量不会重新说明,而且还保留上次调用存储

#include <stdio.h> int main() { int i = 1; while(i < 5) { int a = 1; a++; printf("a = %d\n", a); i++; } int c = 1; while (c < 5) { static int b = 1; b++; printf("b = %d\n", b); c++; } return 0; }

(4)extern

外部参照引用型,引用在其他文件中的函数体外说明的变量;

static修饰的全部变量,其他文件都无法使用。

五、运算符

1.算数运算符

c语言提供的算数运算符:+、-、*、/、%、++、--

注意事项:(1)两整数计算结果是整数;两小数计算结果是小数;

(2)除法不允许除以0;

(3)取余时:运算数必须是整型,结果的符号跟的第一个数字保持一致;

(4)自增自减运算时,要注意是前置还是后置。

#include <stdio.h> int main() { //数值拆分 //需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台 int num; printf("请输入一个三位数:"); scanf("%d", &num); int ge = num % 10; int shi = num / 10 % 10; int bai = num / 100 % 10; printf("个位是:%d\n", ge); printf("十位是:%d\n", shi); printf("百位是:%d\n", bai); /*公式总结: 个位:数值%10 十位:数值/10%10 百位:数值/100%10 千位:数值/1000%10 */ //赋值运算符:累加 int num = 0; int sum = 0; while(num++ < 100) //num++是后置自增,意思是:先使用变量原来的值进行比较,再将变量加1 { sum += num; } printf("sum = %d\n", sum); return 0; }

2.关系运算符

c语言的关系运算符有:>、>=、<、<=、==、!=

#include <stdio.h> int main() { int a = 5; int b = 6; printf("%d\n", a > (b - 1)); printf("%d\n", (a + 1) == b); printf("%d\n", a >= (b - 2)); printf("%d\n", a < 100); printf("%d\n", (a + 3) <= b); printf("%d\n", a != (b - 1)); return 0; }

3.逻辑运算符

运算符功能说明举例
!逻辑反!(x == 0)
&&逻辑与x > 0 && x < 10
||逻辑或y < 10 || x > 5

注意事项:(1)逻辑与"&&"运算符逢0截止;

(2)逻辑或"||"运算符逢1截止。

#include <stdio.h> int main() { int a = 1; int b = 0; int c = 0; //由于&&遇0截至,所以没有进行b++的动作 int d = !(a + 1 > 0) && b++ || ++c; printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); printf("d = %d\n", d); return 0; }

4.位运算

运算符功能说明举例
~位逻辑反~a
&位逻辑与a & b
|位逻辑或a | b
^位逻辑异或a ^ b
>>右移动a >> 1
<<左移动b << 1

注意事项:(1)异或运算规律:相同为假,不同为真;

(2)移动运算时,运算量和表达式必须为整形结果数值。

5.赋值运算

一般形式:<变量> <操作符> = <表达式>

C语言的赋值符合运算符:+=、 -=、 *=、 /=、 %=、 &=、 |=、 ^= 、>>=、 <<=

6.特殊运算符

(1)条件运算符

#include <stdio.h> int main() { int a = 10; int b = 20; printf("%d\n", a > b ? a : b); return 0; }

(2)逗号运算符

(3)sizeof运算符:只是针对数据类型,而不是针对变量

#include <stdio.h> int main() { int a = 5; printf("%zu\n", sizeof(int)); printf("%d\n", sizeof(a)); return 0; }

(4)C运算符的优先级:小括号永远是第一级

#include <stdio.h> int main() { int x = 1, y = 0, z = 0; printf("%d\n", x++ && y++ || ++z); printf("x = %d\n", x); printf("y = %d\n", y); printf("z = %d\n", z); return 0; }

六、输入输出

1.数据输出

C语言中无I/O语句,I/O操作由函数实现:#include <stdio.h>

字符输出函数:putchar(c)

#include <stdio.h> int main() { int c = 65; char a = 'B'; putchar(c); //输出为A putchar('\n'); putchar(a); return 0; }

2.格式输出函数

格式:printf("格式控制符", 输出表);

格式符作用格式符作用
i、d十进制整数x、X十六进制无符号整数
o八进制无符号整数u无符号十进制数
c单一字符s字符串
e、E指数形式浮点小数f小数形式浮点小数
ge和f中较短的一种%%百分号本身

附加格式说明:

修饰符功能
m输出数据域宽,长度<m,左补空格;’否则按实际输出
.n对实数,指定小数后位数(四舍五入)
.n

对字符串,指定实际输出位数

-输出数据在域内左对齐
+指定在有符号数的整数前显示正号
0输出数值时指定左面不适用的空位置自动填0

3.字符输入函数

字符输入函数:getchar;

正常返回值为读取的代码,出错或结束返回-1。

4.格式输入函数

格式:scanf("格式控制串", 地址表)

功能:按指定格式从键盘读入数据,存入地址表指定存储单元,按回车键结束;

返回值:撑场返回输入数据个数;

地址表:变量的地址,常用取地址运算符&。

5.输入函数垃圾清理

#include <stdio.h> int main() { int x; char ch; scanf("%d", &x); //用getchar清除或者用格式串中空格或%*c来吃掉 //getchar(); //scanf("%*c%c", &ch); //scanf(" %c", &ch); scanf("%c", &ch); printf("x = %d, ch = %c\n", x, ch); return 0; }

6.字符串输入输出函数

(1)字符串输入函数gets

格式:char* gets(char *s)

功能:从键盘输入,以回车结束的字符串放入字符数组中,并自动加'\0'

说明:输入串长度应小于字符数组维数;gets函数并不以空格作为字符串输入结束的标志

(2)字符串的输出函数put

格式:int puts(const char* s)

功能:像显示器输出字符串(输出完自动换行)

说明:字符数组必须以'\0'结束