最简单的C程序设计顺序程序设计.docx
- 文档编号:14899915
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:20
- 大小:80.46KB
最简单的C程序设计顺序程序设计.docx
《最简单的C程序设计顺序程序设计.docx》由会员分享,可在线阅读,更多相关《最简单的C程序设计顺序程序设计.docx(20页珍藏版)》请在冰点文库上搜索。
最简单的C程序设计顺序程序设计
第3章最简单的C程序设计-顺序程序设计
•教学要求:
要求学生掌握C语言的三种基本数据类型(整型、浮点型、字符型)的特点以及它们之间的相互联系;掌握各种数据类型间的混合运算及其转换规则;掌握算术表达式、赋值表达式和逗号表达式。
•教学重点、难点:
重点是C语言的三种基本数据类型(整型、浮点型、字符型)的特点以及它们之间的相互联系,算术表达式、赋值表达式和逗号表达式;难点是C语言的三种基本数据类型(整型、浮点型、字符型)的定义和用法。
教学内容:
C的三种基本数据类型(整型、浮点型、字符型)数据的特点,各类型数据的常量、变量的表示以及各类型数据间的混合运算规则;算术表达式、赋值表达式和逗号表达式。
§3.1顺序程序设计举例
例3.1有人用温度计测量出用华氏法表示的温度(如F,今要求把它转换为以摄氏法表示的温度(如C)。
解题思路:
找到二者间的转换公式f代表华氏温度,c代表摄氏温度
输入f的值
输出c的值
#include
intmain()
{
floatf,c;
f=64.0;c=(5.0/9)*(f-32);printf("f=%f\nc=%f\n",f,c);
return0;
}
算法:
例3.2计算存款利息。
有1000元,想存一年。
有三种方法可选:
(1)活期,年利率为r1
(2)一年期定期,年利率为r2
(3)存两次半年定期,年利率为r3
请分别计算出一年后按三种方法所得到的本息和。
解题思路:
确定计算本息和的公式。
从数学知识可知:
若存款额为p0,则:
活期存款一年后本息和为:
p1=p0+p0×r1=p0(1+r1)
一年期定期存款,一年后本息和为:
p2=p0(1+r2)
两次半年定期存款,一年后本息和为:
算法:
输入p0,r1,r2,r3的值
计算p1=p0(1+r1)
计算p2=p0(1+r2)
计算p3=p0(1+r3/2)(1+r3/2)
输出p1,p2,p3
§3.2数据的表现形式及其运算
3.2.1常量和变量
1.常量:
在程序运行过程中,其值不能被改变的量
整型常量:
如1000,12345,0,-345
实型常量
十进制小数形式:
如0.34-56.790.0
指数形式:
如12.34e3(代表12.34⨯103)
字符常量:
普通字符:
如’?
’,’k’
转义字符:
如’\n’
字符串常量:
如”boy”
符号常量:
#definePI3.1416
2.变量:
在程序运行期间,变量的值是可以改变的
变量必须先定义,后使用
定义变量时指定该变量的名字和类型
变量名和变量值是两个不同的概念
变量名实际上是以一个名字代表的一个存储地址
从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据
3.常变量:
constinta=3;
注意:
常变量与符号常量的区别
4.标识符:
一个对象的名字
C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线
合法的标识符:
如sum,average,_total,Class,day,BASIC,li_ling
不合法的标识符:
M.D.John,¥123,#33,3D64,a>b
3.2.2数据类型
Ø所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式
Ø不同的类型分配不同的长度和存储形式
C语言允许使用的数据类型:
Ø基本类型
◆整型类型
●基本整型
●短整型
●长整型
●双长整型
●字符型
●布尔型
◆浮点类型
●单精度浮点型
●双精度浮点型
●复数浮点型
Ø枚举类型
Ø空类型
Ø派生类型
◆指针类型
◆数组类型
◆结构体类型
◆共用体类型
◆函数类型
3.2.3整型数据
1.整型数据的分类
基本整型(int型):
占2个或4个字节
短整型(shortint):
占2个字节
长整型(longint):
占4个字节
双长整型(longlongint):
8BC99新增
2.整型变量的符号属性(P45)
整型变量的值的范围包括负数到正数
可以将变量定义为“无符号”类型
扩充的整形类型:
整型数据在内存中的存放形式
在内存中是以二进制形式存放的。
如:
inti;/*定义为整型变量*/
i=10;/*给i赋以整数10*/
实际上,数值是以补码(complement)存储的。
一个正数的补码和其原码的形式相同。
如上图就是用补码形式表示的。
(1)非负数X的补码和其原码的形式相同[X]补=X
(2)求一个负数X的补码:
方法一:
[X]补=M+X其中M称为“模”,等于28,216…
方法二:
按位取反再加1。
例:
求-10的补码
[-32768]补=216+(-215)=215=(1000000000000000)2
扩充的整型类型:
Ø有符号基本整型[signed]int;
Ø无符号基本整型unsignedint;
Ø有符号短整型[signed]short[int];
Ø无符号短整型unsignedshort[int];
Ø有符号长整型[signed]long[int];
Ø无符号长整型unsignedlong[int]
Ø有符号双长整型[signed]longlong[int];
Ø无符号双长整型unsignedlonglong[int]
3.2.4字符型数据
Ø字符是按其代码(整数)形式存储的;
ØC99把字符型数据作为整数类型的一种;
Ø字符型数据在使用上有自己的特点.
1.字符与字符代码
大多数系统采用ASCII字符集(P377)
◆字母:
A~Z,a~z
◆数字:
0~9
◆专门符号(29个):
!
”#&‘()*等
◆空格符:
空格、水平制表符、换行等
◆转义字符:
不能显示字符,以“\”开头的特殊字符。
例如,空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回车(以‘\r’表示)等。
转义字符的含义及作用
\n换行
\t横向跳格
\r回车
\b退格
\\反斜杠
\dddddd表示1到3位八进制数字
\xhhhh表示1到2位十六进制数字
Ø字符’1’和整数1是不同的概念:
◆字符’1’只是代表一个形状为’1’的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节
◆整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节
00000000
00000001
2.字符变量
Ø用类型符char定义字符变量
◆charc=’?
’;
系统把“?
”的ASCII代码63赋给变量c
◆printf(”%d%c\n”,c,c);
◆输出结果是:
63?
3.2.5浮点型数据
浮点型数据是用来表示具有小数点的实数
float型(单精度浮点型)6-7位有效数字
编译系统为float型变量分配4个字节
数值以规范化的二进制数指数形式存放
与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。
把一个浮点型数据分成小数部分和指数部分分别存放。
double型(双精度浮点型)
编译系统为double型变量分配8个字节15位有效数字
longdouble(长双精度)型(P50)
3.2.6怎样确定常量的类型
Ø字符常量:
由单撇号括起来的单个字符或转义字符
Ø整型常量:
不带小数点的数值
◆系统根据数值的大小确定int型还是long型等
Ø浮点型常量:
凡以小数形式或指数形式出现的实数
◆C编译系统把浮点型常量都按双精度处理
◆分配8个字节
3.2.7运算符和表达式
1.基本的算术运算符:
+:
正号运算符(单目运算符)
-:
负号运算符(单目运算符)
*:
乘法运算符
/:
除法运算符
%:
求余运算符
+:
加法运算符
-:
减法运算符
说明
Ø两个整数相除的结果为整数
◆如5/3的结果值为1,舍去小数部分
◆如果除数或被除数中有一个为负值,舍入方向不固定。
例如,-5/3,有的系统中得到的结果为-1,在有的系统中则得到结果为-2
◆VC++采取“向零取整”的方法如5/3=1,-5/3=-1,取整后向零靠拢
Ø%运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。
如8%3,结果为2
2.自增、自减运算符:
Ø作用是使变量的值1或减1
◆++i,i++:
使i的值加1
◆--i,i--:
使i的值减1
注意:
(1)自增运算符(++),自减运算符(--),只能用于变量,而不能用于常量或表达式。
5++、(a+b)++(×)
2)自增(减)运算符常用于循环语句中使循环变量自动加1。
也用于指针变量,使指针指向下一个地址.
(3)难以区分若干个+、-组成的运算符时,C语言规定从左→右尽可能多的组成运算符。
例:
a+++b(a++)+b
3.算术表达式和运算符的优先级与结合性:
Ø算术表达式:
用算术运算符和括号将常量、变量、函数连接起来的、符合C语法规则的式子,称为C算术表达式
ØC语言规定了运算符的优先级和结合性(378)
4.不同类型数据间的混合运算:
整型(包括int,short,long)、浮点型(包括float,double)可以混合运算。
在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.
(1)+、-、*、/运算的两个数中有一个数为float或double型,结果是double型。
系统将float型数据都先转换为double型,然后进行运算.
(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型.
(3)字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算.
例3.3给定一个大写字母,要求用小写字母输出。
#include
intmain()
{charc1,c2;
c1=’A’;
c2=c1+32;
printf("%c\n",c2);
printf(”%d\n”,c2);
return0;
}
5.强制类型转换运算符
将一个表达式的值转换成其他类型。
Ø强制类型转换运算符的一般形式为
(类型名)(表达式)
◆(double)a(将a转换成double类型)
◆(int)(x+y)(将x+y的值转换成int型)
◆(float)(5%3)(将5%3的值转换成float型)
Ø有两种类型转换
◆系统自动进行的类型转换
◆强制类型转换
6.C运算符
(1)算术运算符(+-*/%++--)
(2)关系运算符(><==>=<=!
=)
(3)逻辑运算符(!
&&||)
(4)位运算符(<<>>~|∧&)
(5)赋值运算符(=及其扩展赋值运算符)
(6)条件运算符(?
:
)
(7)逗号运算符(,)
(8)指针运算符(*和&)
(9)求字节数运算符(sizeof)
(10)强制类型转换运算符((类型))
(11)成员运算符(.->)
(12)下标运算符([])
(13)其他(如函数调用运算符())
3.3C语句
3.3.1C语句的作用和分类
C语句分为以下5类:
(1)控制语句:
if、switch、for、while、do…while、continue、break、return、goto等
(2)函数调用语句
(3)表达式语句
(4)空语句
(5)复合语句
3.3.2最基本的语句----赋值语句
Ø在C程序中,最常用的语句是:
◆赋值语句
◆输入输出语句
Ø其中最基本的是赋值语句
Ø例3.4给出三角形的三边长,求三角形面积
Ø解题思路:
假设给定的三个边符合构成三角形的条件
Ø关键是找到求三角形面积的公式
Ø
公式为:
其中s=(a+b+c)/2
#include
#include
intmain()
{doublea,b,c,s,area;
a=3.67;
b=5.43;
c=6.21;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return0;
}
Ø归纳总结:
1.赋值运算符
◆“=”是赋值运算符
◆作用是将一个数据赋给一个变量
◆也可以将一个表达式的值赋给一个变量
2.复合的赋值运算符
◆在赋值符“=”之前加上其他运算符,可以构成复合的运算符
◆a+=3等价于a=a+3
3.赋值表达式
◆一般形式为:
变量赋值运算符表达式
◆对赋值表达式求解的过程:
◆求赋值运算符右侧的“表达式”的值
◆赋给赋值运算符左侧的变量
◆赋值表达式的值等于运算符左端变量的值如:
表达式a=3*5的值为15
a=(b=5)和a=b=5等价
“a=b”和“b=a”含义不同
4.赋值过程中的类型转换
◆两侧类型一致时,直接赋值
◆两侧类型不一致,但都是算术类型时,自动将右侧的类型转换为左侧类型后赋值
◆定义变量时要防止数据溢出
5.赋值表达式和赋值语句
◆赋值表达式的末尾没有分号,而赋值语句有分号
◆一个表达式可以包含赋值表达式,但决不能包含赋值语句
6.变量赋初值
inta=3,b=3,c;
inta=3;相当于inta;a=3;
3.4数据的输入输出
3.4.1输入输出举例
例3.5求方程的根。
a、b、c由键盘输入,设>0。
Ø解题思路:
首先要知道求方程式的根的方法。
Ø
由数学知识已知:
如果≥0,则一元二次方程有两个实根:
#include
#include
intmain()
{doublea,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return0;
}
3.4.2有关数据输入输出的概念
(1)输入输出是以计算机主机为主体而言的
Ø输出:
从计算机向输出设备(如显示器、打印机等)输出数据。
Ø输入:
从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据。
(2)C语言本身不提供输入输出语句
Ø输入和输出操作是由C标准函数库中的函数来实现的
Øprintf和scanf不是C语言的关键字,而只是库函数的名字
Øputchar、getchar、puts、gets
(3)在使用输入输出函数时,要在程序文件的开头用预编译指令
#include
3.4.3用printf函数输出数据
Ø在C程序中用来实现输出和输入的,主要是printf函数和scanf函数
Ø这两个函数是格式输入输出函数
Ø用这两个函数时,必须指定格式
1.printf函数的一般格式
按指定格式在标准输出设备上输出若干个各种类型的数据。
printf(“格式控制字符串”,输出列表)
①格式字符%d、%c、%f
②普通字符
③转义字符
注意:
格式符数要与输出列表的项数一致。
2.常用格式字符
(1)d格式符——输出整数十进制形式
几种用法:
①%d:
按实际长度输出。
②%md:
按m位输出。
③%ld:
输出长整型数据。
④%mld:
按m位输出长整型数据。
(2)c格式符——输出一个字符printf("%3c%3d",’2’,’2’);
(3)s格式符——输出字符串printf(”%s”,”CHINA”);
(4)f格式符——输出实数(包括单双精度)
%f(单精度)
%lf(双精度)
%m.nf(%m.nlf)n:
指定小数位数m:
数据总宽度:
整数部分.小数部分
注意:
printf()中,单双精度都用%f
scanf()中,单精度用%f,双精度用%lf
例输出实数时的有效位数。
#include
voidmain()
{floatx,y;
x=111111.111;y=222222.222;
printf(″%f″,x+y);
}
(5)e格式符。
指定以指数形式输出实数%e
●VC++:
小数位数为6位
指数部分占5列
小数点前必须有而且只有1位非零数字
printf(”%e”,123.456);
输出:
1.234560e+002
●%m.ne
printf(”%11.2e”,123.456);
输出:
__1.23e+002(前面有2个空格)
●o格式符——以八进制整数形式输出(不带符号)
例:
intx=10,a=-1;
printf("%d,%o,%d,%o",x,x,a,a);
输出为:
10,12,-1,177777(或37777777777)
●x格式符——以十六进制数形式输出整数(不带符号)
例:
inta=-1;
printf("%x",a);
输出为:
ffff
●u格式符——输出无符号十进制整数(不带符号)
3.4.4用scanf函数输入数据
1.scanf函数的一般形式
scanf(格式控制,地址表列)
例:
scanf(“%d%d%d”,&a,&b,&c);
例:
scanf(“%d,%d,%d”,&a,&b,&c);1,2,3
例:
scanf(“a=%db=%dc=%d”,&a,&b,&c);a=1┖┘b=2┖┘c=3或a=1Tabb=2
c=3
2.使用scanf函数时应注意的问题
scanf(”%f%f%f”,a,b,c);错
scanf(”%5.3f”,&a);错
scanf(”%f%f%f”,&a,&b,&c);对
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
132↙错
a=1,b=3,c=2↙对
a=1b=3c=2↙错
对于scanf(”%c%c%c”,&c1,&c2,&c3);abc↙对abc↙错
对于scanf(”%d%c%f”,&a,&b,&c);若输入1234a123s.26
3.4.5字符数据的输入输出
1.用putchar函数输出一个字符
从计算机向显示器输出一个字符
putchar函数的一般形式为:
putchar(c)
例3.8先后输出BOY三个字符。
Ø解题思路:
定义3个字符变量,分别赋以初值B、O、Y
用putchar函数输出这3个字符变量的值
#include
intmain()
{
chara='B',b='O',c='Y';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return0;
}
2.用getchar函数输入一个字符
向计算机输入一个字符,形式为:
getchar()
例3.9从键盘输入BOY三个字符,然后把它们输出到屏幕。
Ø解题思路:
◆用3个getchar函数先后从键盘向计算机输入BOY三个字符
◆用putchar函数输出
#include
intmain()
{chara,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);putchar(b);putchar(c);
putchar('\n');
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 程序设计 顺序