文章目录
分支与循环语句
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(真)
语句1;
else
语句2;
③多分枝
if(真)
语句1;
else if
语句2;
else
语句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:
(整形表达式);
break;
case 2:
(执行语句);
break;
case 3:
(执行语句);
break;
case 4:
(执行语句);
break;
case 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;
}