标签:
注意点:
1、只有整形才可以用switch。
2、case后面的常量不可以重复
3、default语句可以放在任意位置,但是后面不可以省略break;
while:
1、用来处理一些重复执行的操作
2、确定循环终止的条件
(1)在循环开始之前,需要定义一个循环控制变量并将其初始
(2)确定循环的约束条件
(3)在每一次循环结束的时候,在循环中,要去改变循环控制变量的值,让它不间断接近约束条件
注意点:
1、在c语言总任何树枝都有真假性,只有0为 假,其它都为真
2、注意不把==和=混淆了,为了避免这种错误,把常量写在前面,变量写在后面
3、;号是一个空语句,空语句也是语句当while直接跟;那么就说明只有;和while是一体的,那么后面的大括号和和while无关
4、在while内部定义的变量在外部不可以访问
5、作用域紊乱:如果想再循环体中定义一个型的变量,必须带大括号
do{}while{}:
1、循环体中语句至少执行一次
for(初始化表达式:条件表达式:循环后操作表达式) {}
1、初始化表达式:在循环开始前仅仅执行一次
2、条件表达式,在没有循环开始跌时候都会执行循环条件表达式,如果条件满足那就执行循环体中的语句,如果条件不满足就结束循环
3、循环后操作表达式:当没有循环结束的时候都会执行循环后操作表达式
注意点:
1、for后面不能直接写分号
2、作用域紊乱,要在循环体中定义变量必须要有大括号
for循环中的作用域
1、for循环外部不可以访问for小括号中定义的变量
2、循环体重定义的变量在小括号中不可以使用
break:用在循环语句中,结束当前循环语句;
continue;只能用在循环内部,作用跳过当前循环的后面内容,继续下一次条件判断
if(!a){continue;} printf("a");
循环嵌套:
1、for不容易出错
2、代码更加整洁,可读性更好
3、当整个循环结束后还需要使用循环控制变量用while
4、如果条件表达式不写,系统默认为真
5、for循环变体
for(;;;)死循环
int i = 0;
for(;;i<2)
{
printf("%d", i);
i++;
}
总执行次数 = 外循环次数 * 内循环执行次数
但凡遇到行与列的问题就循环嵌套,外层循环控制行,内层循环控制列
总结:内层循环的条件表达式随着外层控制变量变化而变化
循环总结
当在while中使用continue时,务必保证循环控制变量的修改放在continue前面,否则会导致死循环
怎样判断if else
1、从上往下找else
2、从下往上找if,第一个找到的没有匹配的if就是这个else配对
函数:
函数:完成特定功能代码块,函数名不可以重复定义,给函数起一个有意义的名字
函数作用:管理代码块
函数优点:提高代码的可读性
提高代码的复用性、提高代码的可维护性。
函数特点:调用时才会执行
如何去定义一个函数:
1、根据函数功能给函数起一个有意义的名字
2、确定需不需要传入一些辅助的值
3、确定需要返回什么类型的数据给函数调用者
4、完成函数功能
当函数没有返回值的时候,就将函数的返回值声明为void
当函数的返回值为void的时候,return语句可以省略
什么时候需要形式参数,当我们完成莫个功能,有些数据我们不能确定,那么这个时候需要外界告诉我们。
返回值类型:就是函数执行完毕后返回什么类型的值给函数调用者
函数的参数:
行参:当带你故意函数的时候,函数名称后面小括号中的参数我们称为形式参数。
实参:当调用函数的时候,函数名称后面小括号总的参数我们称为实际参数
1、实参与行参一一对应的
2、行参试社么类型那么实参也必须输入什么类型的值
3、行参列表中不可以有同名的行参变量
4、在函数内部也不可以直接定义与行参同名的变量
5、基本数据类型作为参数传递的时候试值传递
返回值类型:
主调函数:调用其它函数的那个函数
被调函数:在其他函数中被调用的函数
1、函数定义i 中声明是什么返回值类型,那么在主调函数中就必须用通过类型的变量接收
2、什么样的返回值类型,,就必须返回什么样的类型的值,确保返回值的类型与函数定义中返回值一致
3、如果函数的返回值不为空,就必须有返回值,不能为空
return的作用:
1、返回数据给函数调用
2、结束函数
3、在返回值类型为void的函数中,可以使用retrun来提前结束函数
4、在同一个函数中可以有多个return语句,但仅仅有一个return会被执行,只有一个 return执行了则后面的代码就不会被执行,if(num=1) {printf(“a”) return} return num1 + num2;
注意点:在c语言中没有函数重载的概念,它区分函数仅仅是根据函数的名称,只要是名称相同就是重复定义,无论行参是否相同
函数的调用过程:
1、在c语言中,不允许函数嵌套的,也就是说函数内部不可以定义其它函数了
#include的作用:
预编译指令:在编译之前就要解析处理命令
1、在预编译的时候拷贝#include后面文件内容#include指令所在位置
#include “文件名称”
1、在当前文件所在目录查找
2、如果当前目录下没有找到就去编译器include的路径下查找
3、如果还没有找到就去系统的include路径下查找
4、如果还没有找到就报错了
#include <文件名称>
1、去编译器include的路径下查找
2、如果还没有找到就去系统的include的路径下找
3、如果还没有找到就报错了
总结:当你包含项目文件(程序员自己写的文件)就是#include ""
当你需要包含系统文件的时候使用#include<>
函数声明:
把函数的头拷贝到条用他的前面
作用:告诉编译器这个函数已经存在
一个完整的函数包含两个部分一个就是函数声明,一个就是函数定义
mac文件目录:
/路径前面:就代表着党旗那电脑的硬盘(跟目录)
绝对路径:以/开头的路径
相对路径:不是以/开头的路径就是相对路径,就是相对于当前路径
多文件开发:
将函数的声明和函数的实现分成一个.h和一个.c文件进行开发,别人用我实现的方法只需要将我定义的头文件导入即可
计算机中的进制问题
二进制:以0B开头的就表示二进制数
八进制:以0开头表示八进制数
十六进制:0x或0X开头的数就是一个十六进制数
进制转换:
八进制输出的格式符:%o %O
十六进制的输出格式符:%x输出a-f %X A-F
在c语言中没有提供二进制的输出格式符
十进制转换二进制:
规则:除2取余倒叙排
比如13 商 余数
13 / 2 6 1
6 / 2 3 0
3 / 2 1 1
1 / 2 0 1
二进制转换十进制
每一位乘以对应位上的幂数然后相加
二进制转换八进制:一个八进制数就对应3个二进制数,三个二进制数最大表示7,一个八进制数最大7
二进制转换为16进制:一个十六进制对应4个二进制,四个二进制的数最大表示15,一个16进制最大表示15
八进制-16进制:先转为二进制在转
十进制转16进制:16取余倒叙排
16进制砖10进制:每一位乘以对应位上的幂数然后相加
原码反码补码
正整数:原码反码补码相同,正整数0开头,第一位是符号位
1=31ge0 1
负数:
-1
符号为 1 = 1 30ge0 1
原码:1000 0000 0000 0000 0000 0000 0000 00001
反码:原码符号位不变,其他取反
补码:反码 +1
计算机中存储的就是数字的补码
位运算:针对二进制位运算
&按位与:对应的二进制位上, 一个为0就是0,全1才位1 一假则假
|按位或:对应的二进制位上, 一个为1就是1,全0才位0 一真则真
^按位异或:相同为0,不同为1
1、多个数相互异结果不变(交换律)
2、任何数异或0都是原来的数
3、相同的数相互抑或为0
~按位取反
右移 >> m >> n m向右移动n位,移出来的位直接删掉,移入位补符号位(整数补0,负数补1)
使用场景:快速计算一个数除以2的n次方,对于一个整数来说右移几位就是除以2的几次放
左移 <<: m << n: m向左移动n位,一出来的位直接删掉,一如位补0
左移可能会改变号位
使用场景:当比较小时,可以快数计算这个数乘以2的多少次放
快数计算2的3次方
练习:
1、交换两个变量的值,不借助变量
2、判断一个数的奇偶性
(1)第一种:算术运算
a = a - b;
b = a + b; // b = 原a - 原b + 原b = 原a
a = b - a; // a= 原a -(原a - 原b) = 原a - 原a + 原b = 原b
(2)第二种方式:亦或运算
a = a ^ b;
b = a ^ b; // 原a ^ 原b ^ 原b = 原a;
a = a ^ b; // 原a ^ 原b ^ 原a = 原a ^ 原a ^ 原b = 0 ^ 原b = 原b
2、(1)使用if
(2)不推荐使用
n % 2 ? == 0 ? printf(“偶数\n”):(“奇数\n”);
(3)&
101 & 001 = 1;只看最后一位,其它都为2的倍数
if(n&1)
{
printf("奇数\n");
} else {
printf("奇数\n");
}
整体今天和昨天最重要的就是循环的灵活使用,和函数的定义声明的掌握。
标签:
原文地址:http://www.cnblogs.com/lvjun70/p/4706277.html