c语言基础
- 程序:用程序命令编写的命令几何
- C语言是1972年美国的丹尼斯~里奇设计发明的
- C语言的优点:可移植性好,跨平台,更适合和硬件交互。
- C程序由一个主函数(main)和若干函数组成
- Main()方法是主函数,是程序执行的入口,一个c程序只能有一个main函数。
- #include <stdio.h> 编译预处理,输入输出函数
- 编程语言分为:低级语言和高级语言,低级语言又分为机器语言(0和1)和汇编语言,高级语言分为面向过程(c)和面向对象(java)。
- C语言执行过程:
编辑:编辑后的程序为源程序,扩展名.c
编译:对源程序进行语法检查,扩展名为.obj 生成目标程序
连接:生成可执行程序 ,扩展名.exe
运行
- 当全局变量和局部变量变量名相同时,优先使用局部变量。
-
格式控制符:
整型 %d
实型 %f
字符 %c
字符串 %s
printf(“阿玮的年龄为:%d岁",18 );
- 计算机的数据以二进制存储
十进制中在二进制中的10
- 二进制:由0和1组成,代码中以0b开头
- 十进制:由0~9组成,前面不加任何前缀
- 八进制:由0~7组成,代码中以0开头
- 十六进制:由0~9还有a~f组成,代码中以0x开头
【0】【1】【2】【3】【4】【5】【6】【7】【8】【9】
【a】【b】【c】【d】【e】[f]
10 11 12 13 14 15
- \n 换行符
- 1024字节等于1kb
-
数据类型:
- 分为整数,小数,字符串
整数:fhort ,int,long, long long
Int 整数默认类型
Long 赋值以l为后缀
long long 赋值以ll为后缀
printf("%zu\n", sizeof(int));
printf("%d\n", sizeof(int));
//sizeof 显示字节长度
可以和unsigned组合,定义无符号整数,打印时占位符用%u
unsigned int ss = 4566;
printf("%u\n", ss);
siged定义有符号
- 小数:float, double
Double精确度更大,小数的默认类型
float a = 3.1415926;
printf("%.2f\n", a);
double b = 3.54657567;
printf("%.21f", b); #这个2表示小数保留位数
小数的数据类型无法跟unsigned组合使用
- char 字符类型
字符类型无法使用汉字
- 标识符:代码中所有我们自己起的名字。比如变量名、函数名等。
命名规则:(1).由数字、字母、下划线()组成
(2). 不能以数字开头
(3) .不能是关键字
(4) .区分大小写
14. scanf键盘输入
#define _CRT_SECURE_NO_WARNINGS //输入函数
#include <stdio.h>
int main() {
int a;
printf("请输入一个整数:");
scanf("%d",&a);
printf("%d", a);
return 0;
}
- 内存占用大小的计算方式:
英文:1个字母,符号,数字占用一个字节
中文:在vs或者vc中,默认情况下,一个中文占用两个字节
结束标记:1个字节
char a[100] = "小学生"; #100占用字节
printf("%s", a);
- 算数运算符:+ - * / %
整数计算,结果是一定是一个整数
小数计算,结果一定是一个小数
整数和小数计算,结果一定是一个小数
小数直接参与计算,结果是有可能不精确的
/ 不能除0会报错
%前后两个数必须是整数
获取余数的正负,是跟第一个数字保持一致的
不能取0
拆分公式:个位:数值 % 10
十位:数值/10 % 10
百位:数值/100 % 10
千位:数值/1000 % 10;
-
隐式转换:规则1:取值范围小的,和取值范围大的计算,小的会自动提升为大的,再进行运算:
double
float
long long
long
int
short
char
如:int a =23
doule b =3.14
doule c= a+b
规则2:short char 类型的数据在运算的时候,先提升为int,再进行运算
-
强制类型转换:int c = (int)(a + b);
- 自增自减运算符:++ --
++a 先加后用 a++先用后加
赋值运算符:= += -= /= %=
关系运算符:== != > >= < <=
真为1,假为0
-
逻辑运算符:! && ||
&& 与(而且)同时满足
|| 或 满足一个
! 非 取反
短路效果:&& 只要有一边不满足就短路
|| 只要有一边满足就短路
- 三元运算符:a>b? a:b
判断a是否大于b,满足表达式输出a,否则输出b
- 运算符优先级:
-
if 语句:
if (money >= 1 && money <= 99) {
printf("vip1");
}
else if (money >= 100 && money <= 499) {
-
switch语句:
作用:把所有的选择-一列举出来,根据不同的条件任选其一
#include <stdio.h>
int main() {
int shu;
printf("键盘录入星期数:");
scanf("%d", &shu);
switch (shu)
{
case 1 :
printf("跑步");
break;
case 2 :
printf("游泳");
break;
case 3:
printf("慢走");
break;
case 4:
printf("单车");
break;
case 5:
printf("拳击");
break;
case 6:
printf("爬山");
break;
case 7:
printf("好好吃一顿");
break;
default:
printf("没有这个星期");
break;
}
}
-
for循环:
-
while()循环:
出使化语句
While(条件判断语句){
循环体语句
条件控制语句
}
- do…….while循环:
出使化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
先执行再判断。
- break结束整个循环,continue结束当前循环,下一轮继续执行。
- goto:结合标号,可以跳到代码中的任意地方。一般只用于跳出循环嵌套
-
数组:
- 数组是一种容器,可以用来存储同种数据类型的多个值。
- 数组的定义:数据类型 数组名[长度]
Int arr[10];
- 数组的出始化:
初始化:定义数组的时候,第一次给数组赋值
数据类型 数组名[长度]={数据值,数据值..}
长度省略:数据值的个数就是数组长度
double arr[ ]={2.3,3.4,56.2,23.1};
长度未省略:数据值的个数<=长度
Int arr2[7 ]={34,22,44,33};
- 数组元素的修改和访问:
Int num = 数组名[下标];
修改:数组名[下标]= 数据值;
-
数组遍历:
#include <stdio.h>
int main() {
int arr[5] = { 23,34,45,23,33 };
for (int i = 0; i <= 4; i++) {
printf("%d\n", arr[i]);
}
}
- 获取变量的内存地址:
#include <stdio.h>
int main() {
int a = 34;
printf("%p\n", &a);
}
-
函数:程序独立的功能
格式: 返回值类型 函数名(形参1,形参2…)
{
函数体;
return 返回值;
}
- 函数要定义在main()方法外。
对不需要使用返回值的函数,应定义为void类型。
Int和char类型的函数在定义时可以省略函数类型,系统默认这些函数返回值类型为Int类型。
-
有参函数:void 函数名(参数1,参数2...)
{
函数体;
}
调用:函数名(参数1,参数2...)
int sum(int num1,int num2)
{
int sum = num1 + num2;
return sum;
}
返回值是为了更好的接收函数值:
int xiaoli = sum(93, 10);
int xiaoming = sum(85, 22);
- 函数注意事项:
函数不调用就不执行
函数名不能重复
函数与函数之间是平级关系,不能嵌套定义
自定义函数写在main函数的下面,需要在上方申明
return下面,不能编写代码,永远执行不到,属于无效的代码
函数的返回值类型为void,表示没有返回值,return可以省略不写如果书写了return,后面不能跟具体的数据,仅表示结束函数
-
长用函数:
math.h:
pow()幂
sqrt()平方根
ceil()向上取整
floor()向下取整
abs()绝对值
pow 幂
double res1=pow(2,3);
printf("%lf\n",res1);
- time.h:
time()获取当前时间
long long res = time(NULL); null表示获取的当前时间是否需要在其他地方进行存储。
一般来讲,不需要在其他地方进行存储的,NULL(大写)
printf("%lld\n",res); //获取的为当前时间戳。
- C语言中获取 随机数: 随机数头文件<stdlib.h>
使用srand设置种子 //设置种子就是设置初始值
使用rand获取随机数
#include <stdlib.h>
int main() {
srand(2);
int num = rand();
printf("%d", num);
}
- 获取范围随机数:
srand(time(NULL));
int num = rand()% 39 + 1; //2-40
int num2 = rand()% 100 +1; //1-101
- 猜数字小游戏:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CRT_SECURE_NO_WARNINGS
int main() {
srand(time(NULL));
int number = rand() % 100 + 1;
int chai;
while (1) {
printf("请输入你想猜的数:\n");
scanf("%d", &chai);
if(chai>number){
printf("猜大了");
}
else if (chai < number) {
printf("猜小了");
}
else {
printf("恭喜你猜中了");
break;
}
}
}