C语言整理笔记.docx
- 文档编号:3060638
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:19
- 大小:24.46KB
C语言整理笔记.docx
《C语言整理笔记.docx》由会员分享,可在线阅读,更多相关《C语言整理笔记.docx(19页珍藏版)》请在冰豆网上搜索。
C语言整理笔记
页眉内容
1)变量为什么必须初始化
所谓初始化就是赋值的意思。
2)常量在C语言中是如何表示整数:
十进制:
传统写法例:
inta=123;
十六进制:
前面加0X(0是数字零,X可以大小写)
八进制:
前面加0(0是数字零)
浮点数:
传统写法例:
floata=3.2;
科学计数法例:
floata=3.2e3;或floata=3.2e-2;(e表示为10)浮点数的存储所带来的问题
Float和double都不能保证可以精确的存储一个小数。
字符:
单个字符用单引号括起来;字符串用双引号括起来
例:
‘A'表示字符A.(注意:
‘AB'是错误的,正确写法“AB”。
)“A”是正确的,因为“A”代表了‘A'‘\0'的组合(0是数字)
3)常量以什么样的二进制代码存储在计算机中整数是以补码的形式转化为二进制代码存储在计算机的实数是以IEEE754标准转化为二进制代码存储在计算机的字符的本质实质也是与整数的存储方式相同
4)什么是字节
字节就是存储数据的单位,并且是硬件所能访问的最小单位。
(一个字节=8个位)5)什么是ASCII
ASCII不是一个值,而是一种规定。
ASCII规定了不同的字符是使用哪个整数值去表示。
‘A'——65;‘B'——66;‘a'——97;‘b'——98;‘0'——48(0是数字)
6)运算符算术运算符
+—*/(除)%(取余)
除法/的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有
小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则则商也是浮点型,不截取截取小数部分。
例:
16/3==5;16/5.0==3.20000;16.0/5==3.20000
3/5==0;5/3==1
取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号和被除数相同。
例:
13%3==1;13%—3=1;—13%3==—1;—13%—3==—1
关系运算符
>>=<<=!
==
逻辑运算符
!
(不等于)&&(并且)||(或)
&&左边的表达式为假,右边的表达式肯定不执行
||左边的表达式为真,右边的表达式肯定不执行赋值运算符
=*=(a*=3等价于a=a*3)优先级别
算术>关系>逻辑>赋值三目运算符
A?
B:
C等价于if(A)B;elseC;逗号表达式
(A,B,C,D)功能:
从左到右执行,最终表达式的值是最后一项的值
7)如何使用scanf编写出高质量代码
1.使用scanf之前最好先使用printf提示用户以什么样的方式输入如:
printf("请输入两个值(中间用空格分隔):
\n");
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
2.Scanf中尽量不要使用非输入控制符,尤其不要\n
Scanf(“%c”,ch);//%c前面必须加一个空格
3.应该编写代码对用户的非法输入做适当的处理
如:
charch;
While((ch=getchar())!
=‘\n')Continue;
例:
#include
inta;
intb;
charch;
scanf("%d",&a);printf("a=%d\n",a);
while((ch=getchar())!
='\n')continue;
scanf("%d",&b);printf("b=%d\n",b);
return0;
}
8)if的范围问题
1.If(表达式)
语句A;
语句B;
If默认只控制语句A的执行或不执行,if无法控制语句B。
2.If(表达式)
{
语句A;
语句B;
{}括起来
}此时if可以控制语句A和语句B由上可知:
if默认只能控制一个语句,如果想控制多个语句,就必须把这些语句用
9)if的常见问题解释
1.空语句的问题
If(a>b);等价于
If(a>b
;//这是一个空语句
2.If(a>b);//这里不应该加分号
A;
else
B;这是错误的语句
3.If(表达式1)
A;
Elseif(表达式2)
B;
Elseif(表达式3)
C;
Else
D;即便表达式1和2都成立,也只会执行A语句
4.If(表达式1)
A;
Elseif(表达式2)
B;
Elseif(表达式3)
C;这样写法不会出错,但逻辑上有漏洞
5.If(表达式1)A;
Elseif(表达式2)
B;
Elseif(表达式3)
C;
Else(表达式4)//正确写法要么去掉表达式4,要么在else后面加ifD;
这样写是错误的
6.If(表达式1)A;
Elseif(表达式2)
B;
Elseif(表达式3)
C;
Else(表达式4);//无实际意义的语句D;
这样写法不会出错,但逻辑上有漏洞
Else(表达式4);//无实际意义的语句D;
等价于
Else(表达式4);
D;
10)前自增和后自增的异同相同
最终结果i的值加1
不同
前自增整体表达式的值是i加1之后的值后自增整体表达式的值是i加1之前的值
11)for和while可以相互转换
For(1;2;3)
A;
等价于
1;
While
(2)
{
A;
3;
}
12)do⋯⋯while格式:
do
}while(表达式);
do⋯⋯while不等价于for和while主要用于人机交流
例:
#include
{charch;do{intn;inti=0;intsum=0;
printf("请输入你要求和的数:
");scanf("%d",&n);
for(i;i printf("sum=%d\n",sum); \n"); printf("你想继续吗? 继续请输入Y或y,退出请输入任意键scanf("%c",&ch);//%c前面必须加一个空格 }while(ch=='Y'||ch=='y'); return0; } 13)switch语句例: #include intmain(void) { intnum; printf("请选择你的楼层数: ");scanf("%d",&num); switch(num) { case1: printf("第一层到! \n"); break; case2: printf("第二层到! \n"); break; case3: printf("第三层到! \n"); break; case4: printf("第四层到! \n"); break; default: printf("还没有盖到这一层! \n"); break; } return0; } Switch是选择不是循环,如果在switch中出现了break语句。 该语句的功能只是退出switch语句转去执行它下面的语句。 在switch中出现continue是错误的,除非switch本身属于for或while循环的一部分。 14)break和continue Break的用法 Break如果用于循环是用来终止循环 Break如果用于switch,则是用于终止switch Break不能直接用于if,除非if属于循环内部的一个字句例: for(i=0;i<3;++i) {if(3>2) break;//break虽然是if内部的语句,但break终止的是if外部的for循环 printf("哈哈! \n");//永远不会输出 } 在多层switch嵌套中,break只能终止距离它最近的那个switch 在多层循环中,break只能终止距离它最近的那个循环 例: for(i=0;i<3;++i) { for(j=1;j<4;++j)//被break终止了 break;//break只能终止距离它最近的那个循环 printf("哈哈! \n");} Continue的用法用于跳过本次循环余下的语句,转去判断是否需要执行下次循环例: For(1;2;3) { A; B; 3,C和D都会被 Continue;//如果执行该语句,则执行完该语句后,会执行语句 跳过去,C和D不会被执行。 C; D; } 15)数组一维数组 怎样定义一个一维数组 为n个变量连续分配存储空间所有的变量数据类型必须相同所有变量所占的字节大小必须相等不初始化,所有元素是垃圾值 inta[5]; 错误写法: inta[5]; a[5]={1,2,3,4,5};只有在定义数组的同时才可以整体赋值,否则,是错误的。 正确写法: inta[5]={1,2,3,4,5}; inta[5]={1,2,3,4,5}; inta[5]=100;//错误,因为没有inta[5]这个元素 inta[5]={1,2,3,4,5}; inta[b]; 如果要把a数组中的值全部赋值给b数组错误写法: b=a; 正确写法: For(i=0;i<5;++i)b[i]=a[i]; 二维数组 inta[3][4]; 总过有 12个元素, 可以看做3行4列。 这12个元素如下 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] 初始化 inta[3][4]={1, 2,3, 4,5,6,7,8,9,10,11,12}; inta[3][4]={ {1,2,3,4},{5,6,7,8,},{9,10,11,12} }; 输出数组元素: For(i=0;i<3;++i) For(j=0;j<4;++j) Printf(“%d”,a[i][j]);} 多维数组是否存在多维数组不存在,因为内存是线性一维的n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 整理 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)