B站C语言学习,输入输出+分支循环【自用笔记】


分支与循环语句

9.scanf和printf介绍

8. 条件判断语句
	 if .... else....
	 switch 语句
9. 循环语句
	 while语句
	 for语句
	 do ... while语句
10.转向语句
		break语句
		goto语句
		continue语句
		return语句 
函数:库函数/自定义函数
//自定义函数:Add函数
Add(int x,int y)
{
int z =  x+y;
return z;
}


int main()
{
	int a =100;
	int b=1;
	int num = 0;
	sum = Add(a,b);
	printf("sum= %d\n",sum);
	return 0;
}
数组:一组相同类型元素的集合
数组下标从0开始
//定义一个整形数组,最多放10个元素
int arr[10] = {1,2,3,4,5,6,7,8,9,10};


//创建数组
int arr[] = {0,1,2,3,4}
int arr[10]={0}

//打印单独的数组元素
printf("%d\n",arr[4]);//下标的方式访问元素
arr[下标];

//打印全部数组的元素
//打印 0-9的元素
int i=0;
while(i<10)
{
	printf("%d ",arr[il);
	i++;
}
操作符
算术操作符:+ - * /('除'得到的商) %('取模'得余数)

移(2进制)位操作符:>>(右移:乘2)  <<  (左移 :除2)

位操作符: &(按位与) ^(按位或) |(按位异或)

赋值操作符:=,  += , -= 

单目操作符:!(逻辑反操作),+,&(取地址),sizeof,~(二进制按位取反),
			--,++,&(间接访问操作符(解引用操作符)),()(强制进行类型转换)
						
逻辑操作符:&&(逻辑与),||(逻辑或)

关系操作符:>, >=, < , <=, !=, == 

条件/三目操作符:exp1 ? exp2 : exp3(exp1是真,运行exp2; exp1为假,运行exp2)

下标引用、函数调用和结构成员:[ ], (), . ,->
逻辑操作符:&& - 逻辑与(全真为真)
int main(){
	//真 - 非0
	//假 -	0
	//&& - 逻辑与
	int a =9;
	int b = 5;
	int c=a&& b;
	printf("c= %d\n",c); // c = 1
	return 0;
}
逻辑操作符:|| - 逻辑或(有真为真)
int main(){
	//真 - 非0
	//假 -	0
	//|| - 逻辑或
	int a =0;
	int b = 5;
	int c=a || b;
	printf("c= %d\n",c);//c = 1
	return 0;
}
条件操作符:exp1 ? exp2 : exp3
int main(){
	int a=10;
	int b = 20;
	int max = 0:

	if	(a>b)
		max =a;
	else
		max = b;

//max=(a>b ?a:b)  //a>b的话,输出a;否则输出b
	return 0}
常见关键字

在这里插入图片描述

关键字 static
static是用来修饰变量和函数的
		1.修饰局部变量-静态局部变量:局部变量的生命周期变长
		2.修饰全局变量-静态全局变量:改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了原函数就没办法再使用了。
		3.修饰函数-静态函数:改变了函数的链接属性----外部链接属性-->内部链接属性
void test(){
	int a = 1;
	a++;
	printf("a= %d\n" ,a);
}

int main(){
	int i=0;
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}

>>>>>输出结果:
a=2
a=2
a=2
a=2
a=2

加上static后:修饰局部变量-静态局部变量:局部变量的生命周期变长

void test(){
	static int a = 1;  //static 修饰局部变量//局部变量的生命周期变长
	a++;
	printf("a= %d\n" ,a);
}

int main(){
	int i=0;
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}

>>>>>输出结果:
a=2
a=3
a=4
a=5
a=6
#define定义常量和宏
//#define 定义标识符常量
#define MAX 100


//#define 可以定义宏-带参数
#define MAX(x,y)  (x>y?x:y)
指针
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

在这里插入图片描述

int main(){
	int a = 10;
	p = &a; 
	printf("%p\n",&a);//有一种变量是用来存放地址的-指针变量
	return 0;
	}
int main(){
	int a = 10;//创建变量啊,大小为4个字节
	int* p = &a; //取a的地址,存放到p里面
	printf("%p\n",&a);//有一种变量是用来存放地址的-指针变量
	printf("%p\n",p);

	*p=20; // 解引用操作符  //把20放到p里面去,此时p里面存放的a的数值是20
	return 0;
	}

在这里插入图片描述

##### 指针变量的大小

结构体

//输入函数: scanf(“%变量类型”,&变量名称)
//输出函数:printf(”%变量类型",变量名称)
// ‘\n’ 换行符
// ‘\0’ 字符串的结束标志
// sizeof() 查看字符类型
// strlen() 计算字符串的长度

//求两个数目中的较大值
int MAX(int x,int y){
	if(x>y)
		return x;
	else
		return y;
}
int main(){
	int num1=10;
	int num2=20;
	int max=0;
	max=MAX(num1,num2);
	printf("MAX= %d\n",max);
	return 0;



}

分支语句(选择结构)

if

①单分支
if(真)
	语句1;

②双分支
if(真)
	语句1else
	语句2;
③多分枝
if(真)
	语句1else if
	语句2else
	语句3

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

规则
	else与距离最近的未匹配的if是一对
	如果条件成立,要执行多条语句,使用代码块{   }

在这里插入图片描述

例题: 输出1-100内的所有奇数
#include <stdio.h>

int main() {
	
	int i=1;
	while (i<=100)
	{	
			if(i%2== 1)
			printf("%d  ",i);
		i++;
	}
	return 0;
}

在这里插入图片描述

switch

//switch语句结构
switch (整型表达式)
{
case 1: 
	(整形表达式)breakcase 2: 
	(执行语句)breakcase 3: 
	(执行语句)breakcase 4: 
	(执行语句)breakcase 5: 
	(执行语句)break}
		不是每一个语句后都要写break的。
			break语句的实际效果是把语句列表划分为不同的部分。
		最后一句的break最好要写(好的书写习惯)
		如果表达的值与所有的case标签的值都不匹配:可以补充default(位置不局限)

循环语句()

while

//if语句结构
if(条件)
	语句;
//while语法结构
while(表达式)
	循环语句;
总结:break在while循环中的作用

	遇到break就会停止后期所有的循环,直接终止循环。
	所以:在while中的break是用于永久中止循环的,


总结:continue在while循环中的作用

continue是用于中止本次循环的,也就是本次循环中continue后面的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一此循环的入口判断
#include <stdio.h>
int main(){
	
	int ch=0;
	while((ch = getchar() !=EOF))//接收一个字符,放到ch里
		putchar(ch);//输出ch 
	return 0;
} 

for

//for循环语句结构

for(表达式1;表达式2;表达式3)
	循环语句
	
表达式1:初始化循环变量
表达式2:条件判断语句,用于判断终止条件
表达式3:循环语句的调整进行
实际问题:使用for循环,打印1-10的数字
#include<stdio.h>

int main() 
{
	for(int a=0;a<=10;a++)
		printf("%d ",a);
		
	return 0;
}
对比for和while

在这里插入图片描述

dowhile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值