0
点赞
收藏
分享

微信扫一扫

C语言--小甲鱼

分湖芝蘭 2022-03-30 阅读 88
c语言

绪论

  1. 机器语言
  2. 汇编语言
  3. 第三代编程语言:c语言

C语言的特点:

  1. 效率高
  2. 灵活度高
  3. 可移植性高

第一个程序:

# include <stdio.h>

int main(){
	printf("Hello World \n");
	return 0;
}

printf:格式化输出函数

转义字符
在这里插入图片描述

变量和常量

变量名:

  • 只能是英语字母和数字或者下划线组成
  • 第一个字母必须是字母或者下划线
  • 区分大小写
  • 不能用关键字命名

关键字:

在这里插入图片描述
数据类型:
在这里插入图片描述
常量:
在这里插入图片描述

定义符号常量:
在这里插入图片描述
标识符
在这里插入图片描述
字符串常量:
\0 :空字符,在c语言里表示字符串的结束位置
在这里插入图片描述

数据类型

在这里插入图片描述

基本类型

在这里插入图片描述

sizeof运算符:

sizeof运算符用于获得数据类型或表达式的长度

sizeof(object);//sizeof(对象);
sizeof(type_name);//sizeof(类型);
sizeof object;//sizeof对象;
#include <stdio.h>

int main() {
	printf("int = %d\n",sizeof(int));//4
	printf("short int = %d\n",sizeof(short));//2
	printf("long int = %d\n",sizeof(long));//4
	printf("long long int = %d\n",sizeof(long long));//8
	printf("char = %d\n",sizeof(char));//1
	printf("bool = %d\n",sizeof(_Bool));//1
	printf("float = %d\n",sizeof(float));//4
	printf("double = %d\n",sizeof(double));//8
	printf("long double = %d\n",sizeof(long double));//12

	
}

signed 和 unsigned

在这里插入图片描述

#include <stdio.h>
int main(){
	short i;
	unsigned short j;
	printf("%d\n",i);//-1
	printf("%d\n",j);//65535
	return 0;
}

取值范围

比特位

CPU能读懂的最小单位 ----- 比特位,bit,b

字节

内存机构的最小寻址单位-----字节,Byte,B
1B=8b

符号位

  • 存放singned类型的存储单元中,左边第一位表示符号位。如果该位为0,表示该整数是一个正数;如果该位为1,表示该整数是一个负数
  • 一个32位的整型变量,除去左边第一位符号位,剩下表示值的只有31个比特位
  • 事实上计算机是用补码的形式来存放整数的值

基本数据类型的取值范围

在这里插入图片描述
在这里插入图片描述

字符和字符串

字符串:

char 变量名[数量];

变量名[索引号] = 字符;
//声明字符串
char name[5];
//给字符串赋值:
name[0] = 'F';
name[1] = 'i';
name[2] = 's';
name[3] = 'h';
name[4] = 'c';

//定义字符串
char name[5] = {'F','i','s','h','c'};
printf("\s\n",name);
printf("Hello\n"); // 会出现乱码,因为name5个空间已经填满了,没有结束标志\0的位置了

//给\0留一个位置
char name[6] = {'F','i','s','h','c','\0'};
//上述太麻烦需要计算,可以如下定义
char a[] = {'F','i','s','h','c'};
char a[] = {"Fishc"};
char a[] = "Fishc";

运算符

算术运算符

在这里插入图片描述
目?
双目运算符:
在这里插入图片描述
单目运算符: 正负号

表达式

#include <stdio.h>
#include <math.h>
int main(){
	int i,j,k;
	i = 1+2; //3
	j = 1+2*3; //7
	k = i+j+-1+pow(2,3); // 17
	printf("i=%d\n",i);
	printf("j=%d\n",j);
	printf("k=%d\n",k);


	return 0;
}

类型转换


#include <stdio.h>
int main() {
// 1+2.0 == 1.0+2.0 ?  
printf("整型输出:%d\n",1+2.0);  //0
printf("浮点型输出:%f\n",1.0+2.0);  //3.000000

//强制转换
printf("整型输出:%d\n",1+(int)2.0);  //3
printf("整型输出:%d\n",1+(int)1.8);  //2
printf("整型输出:%d\n",1+(int)(1+0.8));  //2

}

分支结构

关系运算符

在这里插入图片描述
关系表达式

  • 用关系运算符将两边的变量、数据或表达式连接起来,称之为关系表达式:
    1<2 //1
    a>b //1
    a<=1+b //0
    ‘a’ +‘b’ <= ‘c’ //0
    (a=3) >(b=5) //0
    1 — true
    0 — false

逻辑运算符

在这里插入图片描述

  • 用逻辑运算符将两边的变量、数据或表达式连接起来,称之为逻辑表达式:
#include <stdio.h>

int main() {
int a = 3;
int b = 5; 
	printf("%d\n",3>1&&1<2);//1
	//任何非0的数为真!
	printf("%d\n",3+1||2==0);//1
	printf("%d\n",!(a+b));
	printf("%d\n",!0+1<1||!(3+4));//0
	printf("%d\n",'a'-'b'&&'c'); //1
}

短路求值

  • 短路求值又称最小化求值,是一种逻辑运算符
    的求值策略。只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值。
  • C语言对于逻辑与和逻辑或采用短路求值的方式
#include <stdio.h> 
int main() {
	int a = 3,b = 3;
	(a=0) && (b=5);
	printf("a=%d,b=%d\n",a,b); //a=0.b=3
	 (a=1) || (b=5);
	 printf("a=%d,b=%d\n",a,b); //a=1.b=3
	 return 0;
}

if语句

  • 样式1
    在这里插入图片描述
#include <stdio.h>
int main() {
	int i;
	printf("您老贵庚啊:");
	scanf("%d",&i);
	if(i>=18) {
	printf("进门左拐");
	}
	
}
  • 样式2
    在这里插入图片描述
#include <stdio.h>
int main() {
	int i;
	printf("您老贵庚啊:");
	scanf("%d",&i);
	if(i>=18) {
	printf("进门左拐");
	} else {
		printf("慢走,不送");
	}
	
}
  • 样式3
    在这里插入图片描述
#include <stdio.h>
int main() {
	int scores;
	printf("请输入你的分数:%c\n");
	scanf("%d",&scores);
	if(scores>=90) {
	 printf("A\n");
	} else if(scores<90 && scores>=80) {
	 printf("B\n");
	} else if(scores<80 && scores>=70) {
	printf("C\n");
	} else if(scores<70 && scores>=60) {
	printf("D\n");
	} else {
	printf("E\n");
	}
}

switch语句

在这里插入图片描述

#include <stdio.h>
int main() {
	char ch;
	printf("请输入成绩:");
	scanf("%c",&ch);
	switch(ch) {
		case 'A':printf("你的成绩在90分以上!\n");
			break;
		case 'B':printf("你的成绩在80-90分之间");
			break;
		case 'C':printf("你的成绩在70-80分之间");
			break;
		case 'D':printf("你的成绩在60-70分之间");
			break;
		case 'E':printf("你的成绩在60分以下");
			break;
		default:printf("请输入有效的成绩评级");
			break;
	

	}
}

分支语句的嵌套

在这里插入图片描述

#include <stdio.h>
int main(){
	int a,b;
	printf("请输入两个数:");
	scanf("%d %d",a,b);
	if(a!=b){
		if(a>b) {
		printf("%d > %d",a,b);
		} else {
		printf("%d < %d",a,b);
		}
	} else {
		printf("%d = %d",a,b);
	}
}
  • 悬挂else的问题
    if后面都带大括号,如果没有大括号,else会跟离他近的if相搭配
  • 等于号带来的问题
    == 判断是否相等
    = 赋值号

循环结构

while语句

#include <stdio.h>
int main() {
	int i=1,sum=0;
	while(i<=100) {
		sum+=i;
		i+=1;
	}
	printf("结果是:%d\n",sum);
	return 0;
}
  • getchar()
    在这里插入图片描述

do…while语句

在这里插入图片描述

for语句

循环的基本结构

  • 初始化计数器
  • 循环条件
  • 更新计数器

循环嵌套

应用:打印九九乘法表

#include <stdio.h>

int main() {
	for (int i=1;i<=9;i++) {
		for(int j=1;j<=i;j++) {
			printf("%d*%d=%2d  ",i,j,i*j);
		}
		putchar('\n');
	}
	
	return 0;
}

break 和 continue

1.当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执continue语句后的其它语句,但下一次循环还会继续执行。
2. 如果有多层循环时,break只会跳出本层循环,不会跳出其他层的循环.
3. break可用于switch语句,表示跳出整个switch语句块,而continue则不能单独的用于switch语句。但是continue可以用于循环内部的switch语句。
4. break和continue语句在循环内的switch语句中使用时,是有区别的。在这种情况下的break是指跳出switch语句块(switch语句块的代码仍然执行)。而这种情况下的continue是指结束本次循环(不在执行switch后面的代码),进行下一次循环。

运算符

赋值运算符

赋值运算符的左边必须是一个lvalue,变量名就是lvalue
eg:int a; a = 5;

复合的赋值运算符

a = a+1; ==> a++ ;

自增自减运算符

在这里插入图片描述

#include <stdio.h>

int main() {
 	int i=5,j;
 	j=++i;
 	printf("i=%d,j=%d\n",i,j); //i=6,j=6;
	i = 5;
	j = i++;
	printf("i=%d,j=%d\n",i,j);//i=6;j=5;

	return 0;
 }

逗号运算符

  • 语法:表达式1,表达式2,… ,表达式n
  • 逗号表达式的运算过程为从左往右逐个计算表达式
  • 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值

条件运算符

在这里插入图片描述

goto语句

  • 语法:goto 标签;
  • 开发过程中,尽量避免使用goto语句
#include <stdio.h>

int main() {
	int i = 5;
	while(i++) {
		if(i>10) {
			goto A
		}
	}

A:  printf("Here,i=%d\n",i); // i=11
return 0;

}

注释

  • // 单行注释
  • /*
    多行注释
    */
举报

相关推荐

0 条评论