[计划]郝斌C语言笔记
郝斌C语言笔记
ASCII码不是一个值,而是一种规定 规定了不同字符用那个整数值去
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示
‘A’--65
‘B’--66
‘a’--97
‘b’--98
‘0’--48
15 printf 字符的存储
1 字符串的输出 printf("字符串")
2 printf("输出控制符",输出参数)
3 printf("输出控制符1 输出控制符2",输出参数1,输出参数2)
4 printf("输出控制符 非输出控制符",输出参数)
输出控制符包含如下
%d
%ld
%c
%f
%lf
%x(或者%X或者%#X)最后一个显示为0X2F表示为16进制
scanf() 【通过键盘讲数据输入到变量中】 &是一个取地址符 &i表示i的地址
两种用法
方法一:scanf("输入控制符",输入参数);
功能 :将从键盘输入的字符转化为输入控制符所规定
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
,然后存入已输入参数的值为地址的变量中
方法二:scanf("非输入控制符 输入控制符",输入参数)
功能 :非输入控制符必须原样输入,特别注意逗号,也要输入
如何用scanf写出高质量代码
1. 最好先用printf提示用户以什么样的方式来输出
2. scanf中尽量不要使用非输入控制符,尤其是\n
清除垃圾数据
char ch;
while ((ch=getchar()) !='\n')
continue
运算符
算数运算符
+ - * /(除) %(余)
关系运算符
> >= < <= != ==
逻辑运算符
~(非) &&(并) ||(或)
赋值运算符
= += *= /= -=
优先级别
算数>关系>逻辑>赋值
除法 / 的运算结果和运算对象的数据类型有关,两个数都是
int则商就是int,若商有小数,则截去小数部分;被除数和除数只
要有一个或两个都是浮点型数据,则商也是浮点型,不截去小数部分
取余 % 运算对象必须为整数,结果是余数,余数符号和被除
数相同
C语言对于真假的处理 只要数值不是0,就认为是真。但最终
有把真假当作0 1 来处理
&& 注意: 左边为假的时候右边不在执行
|| 注意: 和上边的恰恰相反,左边为真,右边就不再执行
int a = 10; int a = 10;
int b = 5; int b = 5;
int c; int c;
c == (4>3)&&(a = 7); //判定 c == (2>3)&&(a = 7); //判定 因为&&符号先计算左后计算右,左边不成
立后,右边便不再计算。所以 a 并未赋值
printf("%d %d\n",c,a) //结果为 1 7
printf("%d %d\n",c,a) //结果为 0 10
流程控制
1.什么是流程控制
程序代码执行的顺序
2.流程控制的分类
顺序执行
选择执行
定义
某些代码可能执行也可能不执行,有选择的执行某些代码
分类
if
1. if最简单的用法
格式:
if(表达式)
语句
功能:
如果表达式为真,执行语句
如果表达式为假,语句不执行
2. if的范围问题
1.
if(表达式)
语句A:
语句B:
解释:if默认只能控制语句A的执行或不执行
if无法控制语句B的执行或者不执行
if(表达式)
{
语句A;
语句B;
}
if如果想控制多个语句的执行或者不执行要用{}括起来
3. if...else...的用法
4. if...else if...else...用法
格式:
if(1)
A;
else if(2)
B;
else if(3)
C;
else
B;
//这是一个语句,不是三个,因为有几个执行才有几个语句,只能执行一个,所以为一个语句。中间不能单独插入语句
5. C语言带真假的处理
非零是真
零就是假
真用1表示
假用零表示
6. if举例--求分数的等级
7. if的常见问题解析
循环执行
小算法程序
判断一个数字是否为素数
判断一个数字是否是回文数
编程实现求一个十进制数的二进制形式
求一个数字的每位是奇数的数字取出来组合形成的新数字
求一个数字倒过来的数字
程序要反复敲
if语句
if常见问题
1. 空语句的问题
if(3>2);
等价于
if(3>2)
; //这是一个空语句
2.if默认只能控制一个语句
else不能独自引领语句
if(表达式) if(表达式)
A; A;
else else
B; B;
是正确的 是错误的
如何看懂一个程序
1 流程
2 每个语句的功能
3 试数
for 循环
分类
for
1.格式
for(1;2;3)
语句A;
2.执行的流程顺序
1——2——A——3
——2——A——3——2——A。。。
强制类型转换
格式:
(数据类型)(表达式)
功能:
把表达式的值转化为前边所执行的数据类型
例子:
(int)(4.5+2.2) 最终值是 6
(float)(5) 最终值是 5.000000
sum = sum + 1 / (float)(i); //表示分数的和
//sun = sum + (float)(1 / i); 这样写不对,因为(1/i)
结果就是整数,无需再定义float
浮点数的存储所带来的问题
float和double都不能保证可以精确的存储一个小数
举例:
有一个浮点型变量X,如何判断X的值是否为0
if (|X-0.000001| < 0.000001) //x和一个非常小的值相减所得的数字的绝对值
是
else
不是
循环中更新的变量不能定义成浮点型 常量以什么样的二进制代码存储在计算机中
整数以补码形式转化为二进制代码存储在计算机中
实数是以IEEE754
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
转化为二进制代码存储在计算机中的
除法最好在前边加一个1.0不然可能取余数 avg = 1.0sum / cnt;
进制
1.什么叫n进制
逢n进一
2.把二进制转化为十进制
3.十进制转化为r进制
4.不同进制所代表的数值之间的关系
学习自增要明白的几个问题
1. 编程时要尽量屏蔽掉前自增和后自增之间的差别
2. 自增表达式最好不要作为一个更大的表达式的一部分来使用
或者说
i++ 和 ++i 单独成一个语句,不要把它作为一个完整复合
语句的一部分来使用
如:
int m = i++ + ++i + i +i++ //这样写很不好,而且因
为各个编译器顺序的问题可能结果不一样
顺序的(书上有)只有三个 , () ;
printf("%d %d\n",i++,i) //不好
2. 三目运算符 (不常用)
A ? B : C
等价于
if(A)
B;
else
C;
3. 逗号表达式
格式:
(A,B,C,D)
功能:
从左到右执行
最终表达式的值是最后一项的值
例子:
i = (2,4,23); //i最终等于23
i = (i++,++i,i+2)从左到右依次执行
while循环
1. 执行的顺序
2. 与for的相互转换
for的逻辑性更强,不易出错,推荐for
3. 举例
回文数(正着写和倒着写都一样 eg:121 12321)
4. 什么时候使用while,什么时候使用for
n = 10
for(;3 < 10;4)
f3=1+2=3
f1=f2=2
f2=f3=3
4<10;5
f3=f1+f2=2+3=5
f1=f2=3
f2=f3=5
5<10;6
f3=f1+f2=3+5=8
do while循环 主要用于人机交互
do while while(表达式) for(1;2;3)
do {
{ ......
...... }
} while(表达式)
switch 语句
switch(表达式)
{
case常量表达式1: 语句1;
case常量表达式2: 语句2;
...
case常量表达式n: 语句n;
default : 语句n+1;
}
1.case后的常量表达式称之为标签,标签只能是(1)枚举常量(2)数值常量
(3)字符常量(4)常变量(5)宏名的一种。//普通常量,枚举变量
不能作为标签使用
2.switch后的表达式允许任何类型
3.执行完一个case语句后,流程控制转移到下一个case语句继续执行
“case”常量表达式只起到语句标号作用,并不是在该处进行条件判断
执行switch语句时,根据switch()中表达式的值找到与之匹配的case
语句,就从此case语句执行下去,不再进行判断
switch(i)
{
case 1: 语句1;
case 2: 语句2;
default : 语句3;
case 3: 语句4;
}
当i==1时,从case1即语句1开始执行
当i==3时只执行语句4
当i==4时从语句3开始执行
4 switch是选择而不是循环,如果出现break语句。该语句功能只能是
退出switch语句转去执行它下面的语句。在switch中出现continue
是错误的,除非switch本身就属于for或while循环的一部分
break的用法
break如果用于循环