C语言笔记.docx
- 文档编号:30659785
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:41
- 大小:76.17KB
C语言笔记.docx
《C语言笔记.docx》由会员分享,可在线阅读,更多相关《C语言笔记.docx(41页珍藏版)》请在冰豆网上搜索。
C语言笔记
第一章
1
2
3.C语言的基本结构
#includ
包含,包括
voidmain()字母()表示一个函数
{
printf(“hello,world!
\n”);
}
说明:
1>#include
2>voidmain()
void是空类型,无返回值
main主要的
main():
主函数,C程序至少有且仅有一个main函数构成,程序的执行总是从main函数开始,并且结束于main函数,而不论main函数的位置如何。
3>函数是C语言的基本单位。
函数由(函数首部,函数体)构成
(声明,执行)
声明部分必须放在执行的前面。
4>printf(“hello,world!
”);
\n是转义字符,表示换行。
;表示C语句的结束。
5>C语言区分大小写。
6>C语言本身没有输入输出语句,其输入输出操作完全由函数来完成。
7>程序书写格式自由。
#include
voidmain()
{
inta=3,b=4,sum;
sum=a+b;
printf(“sum=%d”,sum);
}
说明:
int:
是一种数据类型,表示整型数据,占两个字节空间
inta=3,b=4,sum;要在内存空间中分配存储空间,赋值。
printf格式:
printf(“格式控制串”,输出项);
格式控制串包含两种信息:
1)普通字符或转义字符,会原样输出。
2)格式字符(用%开头),不会原样输出。
注:
除了%开头的,其他的原样输出。
格式串与输出项数目要一致。
%d:
是整数
%c:
是字符
%f:
是小数
4.上机:
1>编辑源程序(*.c)
2>编译,生成目标程序(.obj)
3>目标程序经连接生成可执行程序(.exe)
F9:
编译查错
F3:
加载程序
F2:
保存
F10:
选择菜单
Ctrl+F9:
运行
Alt+F5:
跳转到用户界面
getch();跳转到用户界面
clrscr();清屏,要放在声明之后,输出之前。
第二章
1.算法的特点:
1>有穷性2>确定性3>有效性
4>有零个或多个输入5>有一个或多个输出
2.算法的描述
1>文字2>图形(流程图,N-S图)N-S图无流程线
菱形--------判断
矩形--------处理
3.结构化程序设计的三大结构
1>顺序结构
2>选择结构
3>循环结构
1)“当”型循环:
先判断后执行
2)“直到”型循环:
先执行后判断
第三章
1.数据类型
1>基本类型:
1)整型:
关键字占用空间
短整型short2个字节
整型int2个字节
长整型long4个字节
2)字符型:
char1个字节
3)浮点型:
(实型)单精度浮点float4个字节
双精度浮点double8个字节
数据类型决定三个方面:
a.决定所占空间大小,可以使用sizeof进行测试:
#include
voidmain()
{
printf(“%d”,sizeof(long));
}
b.决定所表示的数据范围。
整型类型的有关数据
类型
比特(位)数
取值范围
[signed]int
16
-32768~32767即-215~(215-1)
Unsignedint
16
0~65535即0~(216-1)
[signed]short[int]
16
-32768~32767即-215~(215-1)
Unsignedshort[int]
16
0~65535即0~(216-1)
long[int]
32
-2147483648~2147483648即-231~(231-1)
unsignedlong[int]
32
0~4294967295即0~(232-1)
浮点型数据
类型
比特(位)数
有效数字
数值范围
Float
32
6~7
-3.4*10-38~3.4*10-38
double
64
15~16
-1.7*10-308~1.7*10-308
longdouble
128
18~19
-1.2*10-4932~1.2*10-4932
c.决定所能进行的操作
低位
高位
符号位
2个字节中分高低位,高位第一个位为0时表示正数,为1时表示负数
[signed]int=int分正负signed:
符号
Unsigned代表数值的一部分
2.常量与变量
1>标识符:
用来标识常量,变量,数组,函数等名字的。
规则:
由字母,数字,下划线构成,且第一个字符必须为字母或下划线。
关键字不能作为标识符
2>常量
1)符号常量:
定义格式:
#define符号值
#definePRICE30define:
定义
voidmain()function:
函数
{intnum=10,tatal;
tatal=num*PRICE;
printf(“tatal=%d”,total);
}
2)直接常量:
整型常量:
十进制八进制(用0开头)十六进制(以0X开头)
(0~7)(0~9,a~f)
浮点型常量:
小数点指数形式(e的前面必须有数字,后面必须为整数)
字符型常量:
用单引号引下来的一个字符
所有字符都有是以ASCII码的形式存储的。
‘A’-------65‘a’---------97
转义字符:
用\表示
字符形式
含义
ASCII代码
\n
换行,将光标移到下一行开头
10
\t
水平制表(跳到下一个输出区,8个光标为一个输出区)
9
\b
退格,将光标移到前一列
8
\r
回车,将光标移到本行开头
13
\f
换页,将光标移到下页开头
12
\\
代表一个反斜杠字符“\”
92
\’
代表一个单引号字符
39
\”
代表一个双引号字符
34
\ddd
1~3位八进制代表的字符(要转化为十进制再找ASCII码对应的字符)
\xhh
1~2位十六进制代表的字符(同八进制方法)
字符串:
用双引号引起来的多个字符
\0
\0
a
a
“abded”“”表示空串
‘a’--------“a”--------“”----
字符串自动添加字符串结束标志\0
字符串用字符数组来存储。
符号(#define)
十进制
整型八进制
常量十六进制
直接小数点
浮点
指数
字符(’a’)
字符串(”a”)
3>变量(三个方面)
(1)定义:
格式:
数据类型变量1,变量名2,……
inta,b,c
doublex,y
(2)初始化(变量定义时直接赋初值)
格式:
数据类型变量名=值
inta=1,b=2,c=3;
(3)使用:
变量先定义后使用。
(4)分类:
根据数据类型分(整型,浮点,字符没有字符串变量)
a‘a’“a”
标识符字符字符串
3.不同数据类型之间的转换
高doublefloat
水平方向为必定转换,
纵向表示当运算对象为不同
long
类型时转换的方向。
隐式转换
unsigned
低intshort,char
i+c+f-d
inti;
intint
floatf;
intdoubledouble
charc;
doublec;
double
double
%f默认小数点后面有六位数0.000000
%.2f小数点后面保留两位数0.00会进行四舍五入
显示转换(强制类型转换),不会进行四舍五入。
格式:
(类型)表达式同类型相除得到结果也是
(int)3.6----------3此类型,不同类型以高级
(double)(3/2)--------1.0别为结果。
(double)3/2------------1.5
4.运算符与表达式
1>算术运算符
+- * / %(求余)
说明:
%:
求余运算要求两个运算量必须是整型。
5%2――――1
2%5―――――2(当除数小于被除数时取除数为值)
2>自增运算符
++ ――
功能:
使变量本身加1或减1
格式:
前置:
inti=3;
++i;i的值增加1变为4,表达式的值是变量变化以后的值4
后置:
inti=3;
i++;i的值增加1变为4,表达式的值是变量变化前的值3
3>赋值运算符
1)简单的赋值运算
赋值符号(=)的左边必须为变量
intnum;
num=10;
赋值表达式的值与变量的值相等
2)复合赋值运算
+=-= *= /= %=
a+=3 相当于a=a+3
x*=x+y 相当于 x=x*(x+y)
赋值运算的嵌套
x=y=z=1――――――x=(y=(z=1))
4>逗号运算符
表达式1,表达式2,表达式3…………表达式n
逗号表达式的值是最后一个表达式的值。
a=3*5,a*4 60
a=3*4,a*4,a+5 20 a*4没有赋值给a
a=a*5,a*=4,a+5 65 a*=4赋值给a
第四章 顺序结构的程序设计
1字符输入输出函数
#include
1>字符输出函数(putchar)
格式:
putchar(c);参数c可以是字符常量,字符变量或表达式。
功能:
向显示器输出一个字符。
例:
charc1=’a’;
putchar(c1);putchar(‘b’);putchar(‘b’-32);
2>字符输入函数(getchar)
格式:
getchar();
该函数无参数
功能:
从输入终端输入一个字符。
例:
charc1;
c1=getchar();
2格式化输入输出函数
1>格式化输出函数(printf)
格式:
printf(“格式控制串”,输出项);输出项若有多个,用逗号想隔开
格式控制串包含两种信息:
a.普通字符或转义字符(原样输出)
b.格式字符(用%开头)
%d:
有符号的十进制整数----------int
%o:
无符号八进制整数
%x:
无符号十六进制整数
%u:
符号十进制整数-------------unsignedint
补充:
负数的存储----------补码的形式
以-4为例:
原码:
除了最高位符号位以外,其余表示这个数的绝对值
补码:
对原码取反加1,(除了符号位)
%c:
对应一个字符输出
%s:
对应一个字符串输出
%f:
以小数点的形式输出,保留6位小数
%e:
以指数形式输出
%g:
选用%f或%e格中输出宽度较短的一个,不输出无意义的0。
printf的修饰符:
(1)l(long):
%ld--------长整型
例:
longx=65536;
printf(“%ld”,x);
(2)m:
m是一个正整数,表示数据的域宽。
如果m>数据本身的宽度,则左补空格,靠右对齐。
如果m<数据本身的宽度,则原样输出。
(3)-:
左对齐
(4)n:
对于浮点型,表示保留小数的位数
对于字符串,表示要截取字符个数
floatx=1.2345;printf(“%s”,”Hello”);
printf(“%.2f”,x);printf(“%.2s”,”Hello”);
(5)#:
对于八进制,十六进制数输出前导0或0x.
2>格式化输入函数 scanf()
格式:
scanf(“格式控制”,地址)
地址使用取地址运算符:
&
inti,j;
scanf(“%d%d”,&i,&j);
如果格式控制串中只有格式字符,那么输入数据可使用空格,回车,TAB键隔开数据。
例:
inti,j,m;
scanf(“i=%d,j=%d”,&i,&j);
如果有其他字符,则原样输入。
i=19,j=23
例:
charc1,c2,c3;
scanf(“%c%c%c”,&c1,&c2,&c3);
ABC
如果使用%c格式时,空格,回车,TAB将作为有效字符读入。
scanf的修饰符:
m:
表示截取数据宽度。
例:
inty,m,d;
scanf(“%4d%2d%2d”,&y,&m,&d);
输入:
20100630
*:
表示数据被读入但不赋给任何变量,数据被跳过。
第五章选择结构
1运算符
1>关系运算符
<<=>>===!
=
关系表达式的值(两个);
0(假):
式子不成立
1(真):
式子成立
2>逻辑运算符(0,1)
!
(非)&&(与)||(或)
&&(与):
并且
0&&00
0&&10
1&&00
1&&11
||(或)
0||00
0||11
1||01
1||11
注:
(1)非零即为真
3‘a’-5………………1
!
3………………0
(2)‘短路’特性
A&&B如果A为0,则不必计算B的值
只有A为1时,才计算B
A||B只有A为1时,则不必计算B的值,
只有A为0时,才计算B
#include
voidmain()
{intx=1,y=2,z;
z=x++||y++;
printf(“%d,%d,%d”,x,y,z);
}
3>条件运算符(唯一的三目运算符)
格式:
表达式1?
表达式2:
表达式3
执行过程:
判断表达式1是否成立,成立则取表达式2的值为整个式子的值,
不成立则取表达式3的值为整个式子的值
例:
intx=3,y=5,z;intx=13,y=5,z=7,m;
z=x>y?
x:
y;m=(x>y?
x:
y)>z?
(x>y?
x:
y):
z;
条件运算的嵌套
4>总结
!
++-(类型)&sizeof()------------单目运算
算术运算*/%+ -
关系运算,逻辑运算,条件运算,赋值运算,逗号运算
2.C语言
分类:
1>表达式语句c=a+b;
2>空语句(空操作);
3>函数调用语句
4>控制语句break
5>复合语句:
用大括号括起来的两条或两条以上的语句
{
[声明]……………………可以省略
执行
}
3.if语句
三种形式
1>形式一:
if(条件)
语句(组)
执行:
条件成立,执行语句(组),
条件不成立,执行if结构后面其它语句(组)
if语句的管辖范围:
在缺少大括号的情况下,if只管到第一个分号,如果有大括号,则管大括号内的所有语句
2>形式二:
if(条件)例:
z=x>y?
x:
y;
语句(组)if(x>y)
elsez=x;
语句(组)else
z=y;
3>形式三:
if(条件)
语句
elseif(条件)语句
elseif(条件)语句
else语句
4>if语句的嵌套:
在缺少大括号的情况下,else总是与它上面最近的未配对的if配对
4.switch语句(多分支选择结构)
格式:
swith(表达式)
{
case常量1:
语句1;break;
case常量2:
语句2;break;
………………
case常量n:
语句n;break;
default:
语句n+1;
}
例:
学生分数分ABCDE等级,求对应的分数
#include
voidmain()
{
chargrade;
scanf(“%c”,&grade);
swith(grade)
{
case‘A’:
printf(“score>=90\n”);break;
case‘B’:
printf(“score>=80\n”);break;
case‘C’:
printf(“score>=70\n”);break;
case‘D’:
printf(“score>=60\n”);break;
case‘E’:
printf(“score<60\n”);break;
default:
printf(“error!
”);
}
}break:
终止
第六章循环结构
1.if-goto构成的循环
2.while循环
格式:
while(循环条件)
循环体语句
执行过程:
首先判断循环条件是否成立,成立执行循环体语句再判断循环条件。
不成立,循环体语句不运行,循环结束。
注:
(1)while循环是先判断后执行,循环体有可能一次也不运行。
(2)循环结束的条件:
a.循环条件不成立,循环正常结束
例:
intn=1;
while(n++<=2);
printf(“%d”,n);
b.循环体中有break,循环提前结束。
例:
如上n=4
c.while
(1)无限循环(死循环)
3.do-while
格式:
do例:
求1—100所有数的和;
循环体语句{inti=1,sum=0;
while(条件);do
{sum=sum+i;
do-while循环的特点:
i++;
先执行,后判断}
循环至少执行一次while(i<=100);
printf(“%d”,sum);
}
4.for循环
格式:
for(表达式1;表达式2;表达式3)
循环体语句
表达式1:
循环变量赋初值
表达式2:
循环条件
表达式3:
循环变量增(减)值
执行过程:
abd
for(表达式1;表达式2;表达式3)例:
1—100求和,
循环体语句for(i=1;i<=100;i++)
csum=sum+i;
for:
先判断,后执行
b
a
cd
注:
(1)表达式1可以省略,在for前面有所赋值(;不能省)
(2)表达式2可以省略,认为循环条件永远为“真”值
(3)表达式3可以省略,把表达式3放在循环体里
(4)表达式1可放与循环变量无关的参数
for(sum=0,i=1;i<=100;i++)
循环次数确定(5)for(i=1;i<=100;)
sum=sum+(i++);sum=sum+i;for(i=1;i<=100;sum=sum+(i++))
i++;;
表达式3可以放不是循环变量的表达式
循环次数不确定(6)for(;(ch=getchar())!
=’#’;)
‘当’型循环…………whilefor
‘直到’循环………………do-while
5.循环嵌套九九乘法表
{inti,j;
for(i=1;i<=9;i++)
{for(j=1;j<=9;j++)
printf(“%d*%d=%-3d”,j,i,i*j);
printf(“\n”);
}
}
6.循环控制语句
1>break语句
作用:
终止并跳出最内一层的结构
break可用于switch和循环中
例:
判断m是否为素数
main()
{
scanf(“%d”,&m);
for(i=2;i if(m%i==0) break;prime素数 if(i printf(“%disn’taprime“,m); else printf(“%disaprime”,m); } 2>continue语句 作用: 结束本次循环,跳过循环体中尚未执行的语句,进行下一次循环的判定。 第七章数组 1.一维数组(数值) 1>概述: 数组: 一组具有相同数据类型的数. 数组元素: 数组中每一个数 2>数组的定义: 格式: 数据类型数组名[元素个数] 例: inta[5]; 注: (1)数组名的含义: 数组名代表数组的起始地址,是地址常量。 a++错误a+1正确,代表着下一个元素的地址 aa+1a+2a+3a+4 a[0]a[1]a[2]a[3]a[4] (2)数组元素: 格式: 数组名[下标标号] 下标标号是从0开始的 数组元素实际上是变量,所有变量能参加的运算,数组元素都可以参加 a[0]=10 a[0]+ 3>数组的初始化: 数据类型数组名[元素个数]={值,值,…………值}; inta[5]={1,3,4,5,6}; 注: (1)部分元素赋初值,没有赋值的元素自动填充0 inta[5]={1,4,5}; (2)如果全部元素赋初值,可省略数组长度 inta[]={1,3,45,7,4,2}; 数组的长度由赋初值的元素个数来确定。 4>数组的使用: 输入: inta[5],i; for(i=0;i<=5;i++) scanf(“%d”,&a[i]); 输出: for(i=o;i<5;i++) printf(“%d”,a[i]); 2.二维数组: 1>定义格式: 数据类型数据名[行数][列数] intb[3][4]; 二维数组是以行优先的顺序来存储的。 bb[0]&b[0][0]值相同,但含义不同 b+1表示下一行的地址 b[0]+1表示b[0]这一行的下一个元素的地址 b[i]+j表示b[i][j]元素的地址 bb+1b+2 b[0]b[1]b[2] b[0]+1b[0]+3 b[0][0] 2>初始化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 笔记