C语言教案.docx
- 文档编号:30266966
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:75
- 大小:43.25KB
C语言教案.docx
《C语言教案.docx》由会员分享,可在线阅读,更多相关《C语言教案.docx(75页珍藏版)》请在冰豆网上搜索。
C语言教案
基础知识
字节8位(bit)byte
8个二进制位组成
1KB=1024字节=210
1MB=1024k兆
1GB=1024MB
一个微机字长是多少?
由不同机器决定的
32位微机字长是多少?
32
数制转换
二进制八进制十进制十六进制
/*thisisaexample*/
main()
{
inta,b,sum;
a=1;b=2;sum=a+b;/*thisisaexample*/
printf(“sum=%d”,sum);
}/*thisisaexample*/
源文件、目标文件、可执行文件
顺序选择循环结构
第一章数据与运算符
第一节标识符
一、关键字breakcasecharint
二、预定义标识符#define#include
三、用户标识符
规则:
必须由数字,字母,下划线组成
必须由字母或下划线开头(不允许由数字开头)
studentcounttime
courseTime
dca/55ax5_9smallI’right’key.boardx&yxyz_adsf
第二节常量
常量,不变的量。
在C语言中常量有整型常量、实型常量、字符常量、字符串常量等。
一、整型常量
1、十进制230-100
2、八进制以0开始的数0110274
3、十六进制以0x或者0X开始的数0xac0x15
123L长整型
只有十进制整数有负数。
八进制和十六进制没有小数。
二、实型常量
实型常量又称作实数或浮点数
1、十进制数
由整数和小数组成,必须有小数。
2.00.03.1415926.213
2、指数
1e5===1*105
1.5E-5
-2e3
三、自定义常量
#definePI3.14
main()
{
floata=PI;
.
.
.
}
四、字符常量
字符型常量表示一个字符。
1、单字符
‘d’’5’‘^’‘’==32‘0’==48‘A’==65‘a’==97
ASCII码
2、转义字符
转义字符又称控制字符,以‘\’开头。
‘\n’换行\\反斜杠字符\
\t水平制表\’单引号字符‘
\b退格\ddd1~3位8进制ASCII值字符
\r回到行首(回车不换行)
\xhh1~2位16进制ASCII值字符
\0空字符表示一个字符串的结束,字符串的结束符
‘\n’
main()
{
printf(“\t123\t456\b7\r89\n”);
printf(“\\\’\141\x62\n”);
}
五、字符串常量
字符串常量是用一对双引号括起来的字符序列,其中字符的个数可以是零个或多个。
“”“x”“I’mastudent.”‘x’‘xx’‘\n’“\n”‘’
\0x\0x错\n\0错
main()
{
charc[]=”\t\r\\\0will\n”;
printf(“%d\n”,strlen(c));
printf(“%d\n”,strlen(“s\n\016\0end”));
}
数据的存储
正整数
0000000001111111
负整数
1、在c语言中,对于负整数,在内存中是以整数的“补码”形式存放的。
反码加1-18000100101110110111101110
-5
500000101
-511111011
-90000100111110111
2、把内存中以补码形式存放的二进制码转换成十进制的负整数。
反码-换十进制-取负-减一
11110111000010008-8-9
101101100100100164+9=73-73-74
11111111000000000-0-1
1-32768
反码加1(减一取反)
第三节变量
变量是一个容器,用于存放常量。
一、变量类型
1、整型变量,用于存放整型常量。
int整型unsignedint无符号整型
shortint短整型unsignedshort无符号短整型
longint长整型unsignedlong无符号长整型
用来定义变量
intx,y;
unsigneda;
longb;
shorte,d;
unsignedlongg;
unsignedshorts;
整型变量是用得最多的变量类型,任何一台计算机,能表示的数值大小是有限的。
类型占内存位数值域
int32
short16-32768~32767
long32
unsigned32
unsignedshort160~65535
unsignedlong32
longx;unsigneda;intb;
2、实型变量
实型变量可分为单精度和双精度。
float单精度占4个字节
double双精度占8个字节
floati;
doublea;
3、字符型变量
charch;字符型变量占一个字节
字符型变量中存放的是对应字符的ASCII值
变量赋初值:
类型名变量名=常量;
inta=11;charch=’a’;charc=’\n’;
charch=97;
第四节强制类型转换
1.低类型自动向高类型进行转换
2.运算结果以高类型为准
3.赋值时,把结果自动转换成赋值号左边变量的类型
main()
{
intx;
floatz;
doubley;
x=1;y=2.0;
printf(“%d\n”,x);
printf(“%e\n”,y);
z=x+y;
printf(“%f\n”,z);
}
强制类型转换一般形式:
(类型)表达式
注意:
强制类型转换将得到一个临时变量参加表达式的运算,而原来说明的变量并不改变其类型。
main()
{
intx,y;
doublez;
x=5;y=3;
z=(double)x/y;
printf(“z=%f\n”,z);
}
z=1.666667
第五节运算符和表达式
一、各类运算符和相应的表达式
1.单目运算符
*a取内容
&a取地址
.及->取结构成员
sizeof()求字节运算符
-a取负
!
a逻辑非
~a取a的反码,例如a的二进制为1001,则~a为0110
++变量增一,例如intx=0;++x,等效于x=x+1incx
--变量减一,例如--x,等效于x=x-1decx
变量++
变量—
变量的值表达式的值
intx=0,a;
1
1sumI++i
sum=sum+I++;101
12
intx=0,a;
a=++x;(x=x+1;a=x;)
a=x++;(a=x;x=x+1;)
a=x--
(类型)强制类型转换
2.双目运算符
算术运算符
+-*/%
其中%只能作用于整型数或整型变量
例如:
6/2*39
7/23
1.0/2.00.5
5%325%3.0错
关系运算符
>>=<<===!
=
例如:
设a=2,b=3则
a>b0
2+a
‘x’<=’y’真
‘x’!
=’x’假
(c=a)!
=(d=b)真
a>2==b>2
0==1假
位运算符
&与11得1,有0则0(位相乘)
|或有1则1,00为0
^异或相同为0,不同为1(按位加,不进位)
>>右移
<<左移
例如:
设整型a=11,b=10
a00001011
b00001010
a&b00001010
a|b00001011
a^b00000001
a<<200101100
a>>200000010
逻辑运算符
&&逻辑与
||逻辑或
!
逻辑非
例如:
设a=2,b=0则:
!
a0
a&&b2&&00
a||b1
main()
{
inta,b,c;
a=b=c=5;
(a=77)&&(b=22)||(c=333);
printf(“%d,%d,%d\n”,a,b,c);
}
结果:
a=77,b=22,c=5
赋值运算符
变量赋值运算符表达式
=+=-=*=/=%=&=|=^=<<=>>=
a+=5;a=a+5;
例如:
a+=ba=a+b
a/=b+ca=a/(b+c)
a&=ba=a&b
a>>=ba=a>>b
**已有变量a,其值为9,计算表达式a+=a-=a+a的值
逗号运算符
逗号运算符是c语言中优先级最低的运算符,由逗号运算符构成的表达式称为逗号表达式。
一般形式:
表达式1,表达式2,…表达式n
(3+9,7+8)15
(a=2*5,a*5)50
3.三目运算符
一般形式:
表达式1?
表达式2:
表达式3
例如:
max=a>b?
a:
b;
二、赋值语句
a=5a=5;
三、运算符的优先级和结合律
优先级
运算符
功能
适用类型
结合律
15
()
[]
.->
优先运算
下标
存取结构
所有类型
数组
结构
14
!
~
++变量
--变量
-
&
*
(类型名)
sizeof()
逻辑非
按位取反
加1
减1
取负
取地址
取内容
强制类型
求字节
所有类型
整型
整型
整型
整型
所有类型
指针
所有类型
所有类型
右-左
13
*/
%
乘除
整数取余
所有类型
整型
12
+-
加减
所有类型
11
<<>>
左右移
整型
10
<<=
>>=
关系运算
所有类型
9
==!
=
关系运算
所有类型
8
&
按位与
整型
7
|
按位或
整型
6
^
按位异或
整型
5
&&
逻辑与
All
4
||
逻辑或
All
3
?
:
条件表达式
All
2
=
+=-=
赋值
复合赋值
All
右-左
1
顺序求值
表达式
10>4&&!
(100<99)||3<=5
intx=1,y=0;
printf(“%d”,x-->(x+y)?
5:
25>y++?
’1’:
’2’);
第二章基本输入输出函数
第一节输出函数
一、单字符输出
调用格式:
putchar(c);
在屏幕上输出一个有形字符,c可以是字符型变量或整型变量
#include
main()
{
charch;
ch=’A’;
putchar(ch);
}
putchar(‘\”’);putchar(ch);putchar(‘\”’);putchar(‘\n’);
二、格式化输出
调用格式:
printf(“控制方式”,参数表);
在屏幕上输出数据,字符或字符串,还可以输出文字。
其中控制方式制约着要输出的个数及每个数的数据类型,参数表列出要输出的变量。
控制方式为:
%标志+字宽及精度+类型说明
1.标志
如果标志不写任何字符,则输出的数按字宽右对齐;且如果输出的是正数,数前不冠以+号,只在负数时冠以-号。
如果标志为+,则输出的数仍按字宽右对齐;如果输出的是正数,数前冠以+号,负数则冠以-号。
如果标志为空格,则输出的数仍按字宽右对齐;如果输出的是正数,数前有一空格而不是+号,负数则在空格处打出-号。
如果标志为0。
如果标志为-号,则输出的数按字宽左对齐;如果输出的是正数,数前不冠以+号,只在负数前冠以-号。
2.字宽及精度
字宽及精度由数字组成,如6.3表示总字宽为6(包括小数点),其中小数点后保留三位。
如果小数点后的位数小于给定精度,则由0补足;如果超出精度要求,则进行四舍五入。
3.类型
类型由一个或两个字母组成,说明输出变量的类型,见下表:
控制格式
输出类型与格式
%d或i*%hd%I64d
十进制整数(正数前无正号)
%o
八进制整数(无前导0)
%x
十六进制整型(无0x)
%X
..
%u
无符号十进制整型
%c*
单字符
%s*
字符串
%f*
%lf*
以小数形式输出单、双精度数,隐含输出6
位小数
%e
以指数形式输出单、双精度数,小数部分为
5位
%p
输出指针地址值(偏移地址)
%%*
%本身
%ld*
十进制长整型
%lo
八进制长整型
%lx
十六进制长整型
%lu
无符号十进制长整型
*printf(“%*d”,4,5);
表示输出长度为4,___5
printf(“%*d”,m,i);以m指定的宽度输出i的值。
printf(“%*.*f”,m,n,f);将按照m和和n的宽度输出浮点型变量f。
取输出的长度
#printf(“%o,%#o,%x,%#x”,
10,10,10,10);结果:
12,012,
a,0xa
八进制输出前导0,十六进
制输出前导0x
输出时类型与数据一定要匹配。
*不要在输出语句中改变输出变量的值,例如:
intk=8;
printf(“%d,%d”,k,++k);
调用printf函数时,其参数是从右至左进行处理的,将先进行++k运算。
输出数据时的宽度可以改变。
main()
{
chara,b,c;
a=’A’;
b=’b’;
c=’5’;
printf(“thisisastring.”);
printf(“%c%c%c\n”,a,b,c);
printf(“%d%d%d”,a,b,c);
}
#include
main()
{
floatch;
ch=65.123456;
printf("%.3s","adfadf");
getch();
}
三、字符串输出
调用格式:
puts(s);
其中s是一个字符串,puts(s)将字符串输出到屏幕上。
#include
main()
{
char*s=”Iamastudent.”;
puts(s);
}
第二节输入函数
一、单字符输入
调用格式:
getchar();
从键盘输入一个字符,屏幕上显示输入的字符,按回车结束。
必须在程序前面加上#include
#include
main()
{
charc;
c=getchar();
putchar(c);
}
二、格式化输入
调用格式:
scanf(“控制格式”,参数表);
按格式从键盘输入一个或多个各种数据类型的数,还可输入单个字符或字符串。
其中,控制格式控制要输入的参数的个数及每个数的数据类型,参数表列出要输入的变量的地址(即指针)。
在scanf控制格式中插入其他字符,输入时需一致。
注意:
当输入格式要求输入的是数字时(如%d,%f),则必须输入数字而不能输入字符,否则程序将运行错误。
Scanf函数以回车、空格及TAB为输入结束。
Scanf控制格式表
控制格式
输入类型
%i
输入整数可以是带0的八进制
数也可以是带0x的十六进制数
%d
十进制整型
%o
八进制整型
%x
十六进制整型
%c
单字符
%s
字符串
%f%e
浮点数(小数或指数型)
%ld%lo%lx
长整型
%hd%ho%hx
短整型
%lf%le
长浮点型(双精度型)
M(正整数)
输入数据所占宽度
*
赋值抑制,跳过输入数据项
例:
输入两个整数并求其积
Main()
{
inta,b,c;
scanf(“%d”,&a);
scanf(“%d”,&b);
c=a*b;
printf(“%d*%d=%d\n”,a,b,c);
}
三、字符串输入
调用格式:
gets(s);
其中s是一个字符串,gets(s)从键盘上接受一个字符串,将其存入s字符串中,并自动以’\0’作为结束符号。
#include
main()
{
charname[20];
gets(name);
puts(name);
}
**两数之间进行交换
方法1、通过第三变量
c=a,a=b,b=c;
方法2、通过位运算
a^=b,b^=a,a^=b;
a:
00001010
b:
00001011
a:
00000001
b:
00001010
a:
00001011
**四舍五入算法
main()
{
doublex;
printf(“Enterx:
”);
scanf(“%lf”,&x);
printf(“
(1)x=%f\n”,x);
x=x*100;
x=x+0.5;
x=(int)x;
x=x/100;
printf(“
(2)x=%f\n”,x);
}
复合语句
空语句
第三章流程控制
C语言的控制流程语句有:
条件语句
循环语句
开关语句
转移语句
第一节条件语句
一、if语句
格式:
if(条件表达式)语句
或if(条件表达式)语句1
else语句2
语句可以是单语句也可以是复合语句或空语句。
例如:
if(x
if(a>b)large=a;
elselarge=b;
二、嵌套的if语句
格式:
if(条件表达式1)
{
if(条件表达式2)语句1
else语句2
}
else语句3
语句4
或
if(条件表达式1)语句1
elseif(条件表达式2)语句2
else语句3
语句4
C语言规定,else总是同前面最近的if配对,而与书写形式无关。
例如:
if(n>0)
if(a>b)large=a;
elselarge=b;
这里的else虽然写成与第一个if对齐,但按规定它是与第二个if对应。
如果想让else与第一个if对应,加上花括号即可。
则写成:
if(n>0)
{
if(a>b)large=a;
}
elselarge=b;
需要注意的是,只有if后面带有条件表达式,而else后面没有,如果else后的语句带有条件,则应该使用带有嵌套的if语句,如:
if(条件表达式1)语句1
elseif(条件表达式2)语句2
表达式?
语句1:
语句2
第二节开关语句
switch语句,用来处理多路分支。
一般格式:
switch(表达式)
{
case常量表达式1:
语句1;break;
case常量表达式2:
语句2;break;
…
case常量表达式n:
语句n;break;
default:
语句n+1;
}
其中表达式一般为整型、字符型或枚举型。
1.表达式的值与各个case的常量比较,和哪个相等就进入相应的case。
2.执行完该case的语句后,由break跳出开关语句。
3.如果表达式的值和所有case的常量表达式都不相等,则执行default语句。
4.break通常是必要的,没有它,执行一个case语句后,并不跳出开关语句,而是进入下一个case。
5.如果不符合所有的case,什么都不干时,default可以省略。
6.每一个case后的表达式必须都是常量表达式,任何变量参与的表达式都是错误的。
7.表达式两边的一对括号不能省略。
8.在关键字case和常量表达式之间一定要有空格。
Case10不能写成case10。
例:
main()
{
intg;
printf(“Enteramark:
”);
scanf(“%d”,&g);
printf(“g=%d:
”,g);
switch(g/10)
{
case10:
case9:
printf(“A\n”);break;
case8:
printf(“B\n”);break;
case7:
printf(“C\n”);break;
case6:
printf(“D\n”);break;
default:
printf(“E\n”);
}
}
第三节转移语句
一、goto语句
一般格式:
goto标号;
goto的功能是使程序转移到本函数中任何可执行语句(空语句也是可执行语句),当程序到达goto语句时,控制就转到相应标号的语句。
注意:
goto语句不允许从循环体外跳到循环体内,也不能跳过变量定义。
Goto语句的作用:
1.无条件转移到程序的任何位置去执行。
2.通过goto语句与if语句可以构造一个循环体。
3.goto语句只在一个地方有使用价值,当要从多重循环深处直接跳转到循环之外时,如果用break语句,将要用多次,而且可读性不好,这时goto可以发挥作用。
例:
求s=1+2+3+…+100的值
main()
{
inti,s=0;
i=1;
loop:
if(i<=100)
{
s+=i;
i++;
gotoloop;
}
printf(“sum=%d\n”,s);
}
结果:
5050
goto语句不能跳过变量定义例:
voidmain()
{
intm=6;
if(6==m)gotoabc;
intn=0;
abc:
printf(“m=%dn=%d”,m,n);
getch();
}
程序中,并不是根据运行顺序来决定变量定义的顺序,而是所有的变量和对象都在函数开始执行时,统一定义。
二、break语句
一般格式:
break;
用在循环体内或switch语句当中。
例:
main()
{
inti;
for(i=0;i<1000;i++)
{
printf(“%4d”,i);
if(i>=10)break;
}
}
三、continue语句
一般形式:
continue;
只用在循环体中。
Continue的功能是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
例:
求输入为正数的平方根。
#include
main()
{
intI,x;
for(I=0;I<5;I++)
{
scanf(“%d”,&x);
if(x<0)continue;
printf(“%f\n”,sqrt(x));
}
}
第四节循环语句
一、while循环
格式:
while(表达式)语句1;
语句2;
1.先判断表达式,如果为真,执行后面的语句(循环体,通常是简单语句或者是复合语句);然后再判断表达式,直到表达式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)