阶段性整理

来源:互联网 发布:安卓系统windows模拟器 编辑:程序博客网 时间:2024/06/05 07:15
1.基本格式化输入输出函数:
%d —---- 整型                    %s————字符串
%f -----浮点型                  %lu———— 无符号长整型
%c ——----字符型                  %p ——— 指针
%ld —----长整型                   %o——— 八进制
%0x ——— 十六进制   
printf("%%\n");//输出%需要输入两个%
printf("\\\n");//同上
printf("\"");//得到"
(float)c  强制类型转换.
2.++,--
如果++在变量前面先将变量+1,然后在参与计算,如果++在变量的后面,先参与运算,然后将变量+1.
3.rewind(stdin); //清除缓冲区内容,防止对后面变量取值产生影响.
4.BOOL类型
BOOL表示一种非真即假的数据类型,存储YES()NO()两个值. YES ---- 1, NO ---- 0
5.逻辑与;逻辑或
逻辑与的短路现象:如果左边的表达式为假,则不会再判断右边.
逻辑或的短路现象,如果左边的表达式为真,则不会判断右边.
6.判断是否为闰年
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
        printf("%d是闰年\n", year);
} else {
        printf("%d不是闰年\n", year);
}
7.条件运算符 ? :    //求三个数的最大值最小值
max = a > b ? a > c ? a : c : b > c ? b : c;
min = a < b ? a < c ? a : c : b < c ? b : c;
8.输出九九乘法表.
 for (int i = 0; i < 9; i ++) {
     for (int j = 1; j <= i + 1; j ++) {
         printf("%d*%d= %-4d", i + 1, j, (i + 1) * j);
     }
        printf("\n");
}
9.for循环可以转化为whiledo... while循环,但是不能反过来.
10.随机函数: arc4random().
11.数组定义:数据类型 数组名[数组元素的个数] = {1,2,3,......};
12.数组所占存储空间大小= 数组元素个数 * 每个元素所占存储空间大小.
13.sizeof() 用来计算一个变量,类型,以及数组所占存储空间的大小
14.求数组中的第二大值
for (int i = 0; i < 10; i++) {
    if (a[i] > max) {
        //先将手中的第二大值给secondMax,然后保存当前最大值
        secendMax = max;
        max = a[i];
     } else if (a[i] > secendMax && a[i] != max) {
          secendMax = a[i];//如果当前值比当前值大比max,则是第二大值.
     }
}
15.冒泡排序掌握
16.字符串隐藏字符\0作为字符串结束标准, 如果不指定元素个数,则系统开辟空间时,会自动识别初值的元素个数开辟空间
17.数组名:能够代表数组的首地址.是一个常量.不能被改变和赋值.
18.printf("%s\n", &str[4]);//取地址符,取想得到的字符串一部分,给一个首地址,从这个地址往后取,直到遇到’\0’结束.(%s的作用)
19.字符串处理函数:
strlen(str);strcpy(str, str1);
strcat(str, str1);
strcmp(“bba”,”bb”): 比较字符对应的ASCII数,如果第一个不相等不在比较,相等就继续比较下一个.
20.通过双下标访问二维数组中的元素,先访问到行,再访问到列.
21.输出二维数组中的元素,用到双层for循环,外层控制行数,内层控制列数
22. 三维数组由层行列组成,输出时第一层控制层数,第二层控制行数,第三层控制列数.
23.字符串数组,存放多个字符串,每一个字符串都是用一个一维的字符数组存储,本质上是由多个一维字符数组组成.
24.访问字符串.只访问到行索引即可.
25.二维数组行列必须固定,可以不给定行数,但是必须要给定列数;当定义字符串数组时,列数一定要大于等于最长字符串长度加1
26.定义结构体时,分号是其结束标志,必不可少.
27.typedefstructstudentStudent;//重新命名的名字第二个单词首字母大写;两种形式:第一种直接在结构体后定义;第二种先定义结构体再重新起名.
28.结构体是一种自定义数据类型,可以用来定义变量;结构体和数组一样都是大容器,可以存储多个变量,但是结构体比数组灵活,可以存储不同类型的数据.
29.结构体嵌套:某一个结构体的结构体成员又是另一个结构体的变量.
30. 结构体所占空间以结构体成员中所规定存储空间最大的数据类型为基本单位分配.
31.结构体类型是struct + 结构体名字     如果要访问结构体成员: 采用结构体变量.下标方式即可.
32.strcpy(stu.name, "jianren");//给字符数组赋值一定要使用strcpy.
33.函数  函数定义:返回值类型 函数名(形参列表) {函数体(函数实现内容)}    返回值和参数组成了函数的四种形式.
  1. 返回值为空定义为void,如果没有参数,小括号也必不可少.
  2. 函数名命名规范:由多个英文单词组成,除了第一个单词的首字母小写,其余单词首字母大写
  3. 千万不要把代码放到return后面,会执行不到.
  4. 函数与函数可以嵌套调用(也就是在一个函数内部可以调用另外一个函数).但是不能嵌套定义(不能在一个函数内部定义另外一个函数)
  5. 函数相当于公司部门,每一个部门完成特定功能.部门与部门之间的并列关系决定了函数与函数之间也是并列关系.
  6. 函数的功能:实现代码的模块化管理.把复杂的逻辑进行拆分,而主函数则起到宏观调控即可.
  7. 形参:形式上参数.在函数定义时给定的参数叫做形参.一个一个的变量存储的数据在函数调用之前未知.
  8. 实参:函数调用时给定的参数叫做实参.是一个唯一确定的数据.//实参向形参传递的过程是一个拷贝的过程.
//函数的使用分为三部分:
//1.函数申明.类似于使用说明书,写在.h文件中
//2.函数定义(函数的实现).实现写在.m文件中
//3.函数调用.函数名 + 实参.
34.变量的作用域:变量可访问的范围.
局部变量:在函数内部定义的变量叫局部变量.只在函数内部可访问,函数执行时开辟空间,函数执行结束时自动回收.
全局变量:在函数外部定义的变量叫全局变量,全局都可访问,空间不会回收(warning:全局变量非常危险,使用需谨慎).
静态变量:凡是被static修饰的变量都叫静态变量.
   特点: 1.如果不赋初值,默认为0;
        2.只初始化一次(该变量只会定义一次).
        3.空间一旦开辟,不会回收.
35. 进制   十进制数 : 10               如何输出进制数?
           二进制 : 0b10                %d ------  十进制
           八进制: 010                %0x ------  十六进制
           十六进制: 0x10             %0x ------  十六进制
36.位运算符:按位与&  同为1则为1 ,否则为0,用于给某一位清零.
                        按位|    同为0则为0,否则为1,用来保留某一位.
            按位异或^   相同为0, 不同为1,
  1. 如果是一个有符号的数,最高位代表符号位,1代表负数,0代表整数
  2. 数据在内存中是以补码形式存储的,正数的补码是正数本身,负数的补码是绝对值取反加1
数据类型的取值范围:
无符号:                             有符号:
char  0 ~ 2^8 - 1                  
char  - 2^7 ~ 2^7 - 1
short  0 ~ 2^16 - 1                
short  - 2^15 ~ 2^15 - 1
int   0 ~ 2^32 - 1                 
int - 2^31 ~ 2^31 - 1
 //10010010奇偶位互换.
   
unsigned char num = 0b10010010;
   
unsigned char left = num << 1;
   
unsigned char right = num >> 1;
   
unsigned char qingl1 = left & 0b10101010;
   
unsigned char qingl2 = right & 0b01010101;
   
unsigned char huo = qingl1 | qingl2;
    printf("%d\n", huo);
//两个数交换不使用第三个变量.
   
int a1 = 10, b1 =5;
    a1 = a1 ^ b1;
    b1= a1 ^ b1;
    a1 = a1 ^ b1;
    printf("a1 = %d, b1 = %d\n", a1, b1);
//栈区内存的分配原则.
//从高到低分配,从低到高存取.
0 0
原创粉丝点击