版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
<<C语言程序设计>>课程第1章欢迎进入C语言世界主要内容一、程序宏观框架结构及构成程序框架结构程序的构成(重点)二、程序开发过程及环境程序开发过程(难点)程序开发环境(重点)三、C语言特点及知识脉络一、程序的宏观认识问题引入对,是软件,是程序,是用某种计算机语言编写的程序,是通过程序实现了上述功能。计算机编程语言有很多种,而C语言是世界上最流行的程序设计语言之一,也是最优秀的计算机编程语言之一。【引例1】程序编写如同写作文一样,有其规范的框架结构?【引例2】编写好的程序如何在计算机中运行?
(1)网络游戏(2)QQ网上聊天……你是否曾经想过,是什么使电脑或智能终端等硬件设备拥有如此丰富多彩的功能?(3)神州十号载人航天器在距地面343公里的近圆轨道与天宫一号对接?(4)石油地质勘探都要使用大型计算机进行模拟运算是什么样的“大脑”能实现如此精确的控制和复杂模拟?1.1程序宏观框架结构及构成1.1.1程序框架结构1.1.2程序的构成1.1.1程序框架结构1.1程序宏观框架结构及构成#include<stdio.h> //包含标准输入输出头文件voidmain()//主函数{
printf(“欢迎进入C语言的世界!\n”);//调用输出函数在屏幕
上显示提示信息}【例1-1】实现在计算机屏幕上显示“欢迎进入C语言的世界!”提示信息。编译预处理函数组“函数组”由多个函数构成,函数是构成C语言程序的基本单位,多个函数共同协作完成程序要实现的功能。在函数组中有且仅有一个主函数main(),整个程序的执行从主函数开始,以主函数为核心展开,函数组中除了主函数外还包括库函数和用户自定义的函数程序演示
运行结果:【例1-2】从键盘输入矩形的长和宽,计算并在屏幕上显示输出该矩形的周长。#include<stdio.h> //包含标准输入输出头文件voidmain() //主函数{inta,b,c;//定义整型变量,长a宽b周长cprintf("请输入矩形的长和宽:");//调用输出函数,显示提示语
scanf("%d%d",&a,&b);//数据输入,从键盘输入a、b值
c=2*(a+b); //数据计算,将计算的周长赋值给cprintf("该矩形周长为:%d.\n",c);//调用输出函数输出结果}1.1.1程序框架结构1.1程序宏观框架结构及构成程序演示
运行结果:C语言程序宏观框架有了大致的了解,下面总结如下:
(1)C语言程序基本框架包括编译预处理和函数组两部分。(2)编译预处理是程序编译之前的准备工作,以“#”开头。(3)函数组包括主函数、库函数和用户自定义函数,函数是构成C语言程序的基本单位。C语言标准函数库提供大量功能丰富的库函数;用户也可以根据需要编写具有特定功能的函数,称为用户自定义函数。程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行1.1.1程序框架结构1.1程序宏观框架结构及构成程序的结构特点(4)在C语言中的任何适当位置可添加注释,以增强程序的可读性。“//”作为程序单行注释的起始符号,“/*”和“*/”作为单行或多行注释的起始和终止符号。(5)程序语句C程序由语句组成用;作为语句终止符1.1.1程序框架结构1.1程序宏观框架结构及构成程序的格式和书写要求习惯用小写字母,大小写敏感可使用空行和空格常用锯齿形书写格式1.1.1程序框架结构1.1程序宏观框架结构及构成优秀程序员的素质之一:使用TAB缩进{
}对齐有足够的注释有合适的空行【随堂练习1-1】根据上述示例模仿编程,输入正方形的边长,计算其面积。
1.1.1程序框架结构1.1程序宏观框架结构及构成C语言程序由标识符、语句、函数等表述形式构成,最终形成完整的C语言程序代码。
1.1.2程序的构成1.1程序宏观框架结构及构成1.标识符(1)关键字(2)预定义标识符(3)用户自定义标识符2.函数和语句
1.标识符标识符是用来标识程序中的某个对象的名字的字符序列,这些对象可以是语句、数据类型、函数、变量、常量等。标识符有三类:关键字预定义标识符用户自定义标识符。1.1.2程序的构成1.1程序宏观框架结构及构成
1.标识符(1)关键字在C语言编程中,为了定义变量、表达语句功能、对一些信息进行预处理,必须用到一些具有特殊意义的标识符,如程序代码中的void、int,这些标识符就是关键字。C语言中关键字主要有以下两类:
1)类型说明符:用来说明变量、函数的类型,如int、float、char、void等。
2)语句定义符:用来表示一个语句的功能,如if、for、while、return等。1.1.2程序的构成1.1程序宏观框架结构及构成
1.标识符(2)预定义标识符
预定义标识符是指已经被C语言系统预先定义好了的具有特定含义的标识符如程序代码中的函数名printf、scanf,以及预处理命令define、include。1.1.2程序的构成1.1程序宏观框架结构及构成
1.标识符(3)用户自定义标识符在编写程序过程中,用户需要给自定义的符号常量、变量、函数、数组、类型等起名字,这就是用户自定义标识符。用户标识符必须先定义,然后再使用。用户自定义标识符的命名规则:用户标识符由字母(A~Z,a~z)、数字(0~9)、下划线“_”组成,并且首字符不能是数字。1.1.2程序的构成1.1程序宏观框架结构及构成如:sum,x,_price,ton8
合法标识符
x+y,2good,n*y
非法的标识符.
1.标识符(3)用户自定义标识符,使用时还应注意以下几点:C语言对大小写字符敏感,所以在编写程序时要注意大小写字符的区分。例如max和Max,C语言会认为这是两个完全不同的标识符。不能把C语言关键字作为用户自定义标识符。通常不使用预定义标识符作为用户标识符,因为这样会失去系统规定的原意,造成二义性。用户自定义标识符的命名应做到简洁明了,尽量做到“见名知意”,这样便于程序的阅读和维护。
如:length表示长度,sum表示求和。1.1.2程序的构成1.1程序宏观框架结构及构成2.函数和语句函数是构成C语言程序的基本单位,而语句则是函数的重要组成。
函数返回值类型函数名(形式参数)
{
说明语句;可执行语句;}函数的第一行称为函数首部,大括号“{}”括起来的部分称为函数体,函数体由若干语句组成,函数体使用一对大括号“{”和“}”作为定界符。1.1.2程序的构成1.1程序宏观框架结构及构成函数体函数首部voidmain(){
printf(“C语言世界!\n”);}【随堂练习1-2】(1)下面哪些标识符属于合法的用户自定义标识符:
Main、void、_num、my$、a*、N4、3m、a-2(2)结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。(3)分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。1.1.2程序的构成1.1程序宏观框架结构及构成1.2程序开发过程及环境1.2.1程序开发过程1.2.2程序开发环境用C语言编写的程序称为源程序,不能被计算机直接识别和执行,需要一种担任翻译工作的程序,即编译程序。通过编译程序把C语言程序代码转换为计算机能够处理的二进制目标代码。从编写C语言源程序到运行程序需要经过以下四个步骤:1.编辑源程序2.编译源程序,生成目标程序3.连接目标程序及其相关模块,生成可执行文件4.运行可执行文件1.2.1程序开发过程1.2程序开发过程及环境1.2.1程序开发过程1.1程序宏观框架结构及构成运行连接分析问题结束编辑编译出错出错运行调试过程中发现程序有错误运行调试过程中发现问题分析有错误图1-1C语言程序开发过程编辑编译连接运行.c.exe.obj有错编辑程序编译程序连接程序源程序目标程序可执行程序结果C程序的执行过程1.2.1程序开发过程1.1程序宏观框架结构及构成C语言程序开发工具有很多,本书以常用的VisualC++6.0(简称为VC++6.0)作为程序开发环境。VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的软件开发工具,提供了集编辑、编译、连接和运行于一身的集成开发环境。目前,VC++6.0已成为专业程序员使用C语言进行软件开发的首选工具。使用VC++6.0开发应用程序的步骤如图。1.2.2程序开发环境1.2程序开发过程及环境上机演示启动VC++6.0打开或新建工程打开或新建文件编辑、编译连接、运行完成图1-2VC++6.0开发程序的步骤【随堂练习1-3】1.在VC++6.0环境中完成【例1.2】程序开发过程。1.2.2程序开发环境1.2程序开发过程及环境C语言程序设计是面向过程的程序设计,其学习过程可以按照“宏观知识框架”->“微观知识细节”->“模块化综合性程序设计”的自然认知过程进行.C语言知识脉络结构图,对C语言的知识要点和学习过程有一个基本的了解1.2.2程序开发环境1.3C语言特点及知识脉络宏观知识框架模块化程序设计微观知识细节感知宏观程序架构程序架构各部分说明引出学习内容要点数据的基本类型及使用程序的基本结构及设计数组的使用函数的使用指针的使用结构体类型的使用文件的操作面向过程程序设计图1-12C语言知识脉络课程小结:我们学习了什么?程序框架结构
C程序的基本框架包括编译预处理和函数组两部分函数是构成C语言程序的基本单位,而语句则是函数的重要组成。程序框架构成标识符函数和语句程序的开发过程与环境程序开发环境认识程序开发四个步骤C语言特点及知识脉络
#include<stdio.h>voidmain(){printf(“C语言很精彩!\n”);}<<C语言程序设计>><<C语言程序设计>>课程第2章程序设计基础知识主要内容2.1数据表示2.1.1数据类型(难点)2.1.2常量(重点)2.1.3变量(重点)2.2数据操作2.2.1运算符与表达式(重点难点)2.2.2类型转换(难点)2.3算法与三种基本程序结构2.3.1算法及其描述2.3.2三种基本程序结构(重点难点)程序设计基础问题引入通过编程解决问题,其本质是对数据的操作,这些数据可能是数学问题中的数值(整数或小数),可能是信息处理中的文字(字符或字符串),也可能是更复杂的数据或文件那么在C语言中如何表示这些数据?如何对数据间的运算进行描述?【引例】根据三角形的三个边长,计算三角形的面积,其计算公式为:area=(其中a、b、c为三角形的三个边长,s=(a+b+c)/2)试分析:在这个问题中涉及哪些数据:
;其中已知量有:
;未知量有:
。abc2.1数据表示
2.1.1数据类型2.1.2常量
2.1.3变量
2.1.1数据类型2.1数据表示
计算机处理数据信息时,需要明确数据到底是什么类型,以便分配合适的存储空间,并按照相应的规则进行操作。所以在程序编写时要对数据进行明确的类型说明。
2.1.1数据类型2.1数据表示程序演示
运行结果:【例2-1】计算并输出半径为r的圆的面积。#include<stdio.h> //包含标准输入输出头文件voidmain() //主函数{
floatr,area;//数据准备,定义半径r和面积areaprintf("请输入半径:");//提示语scanf("%f",&r); //输入半径值rarea=3.14*r*r; //数据计算,将结果赋值给area
printf("该圆的面积为:%f.\n",area);//输出面积值}数据类型:r,area为float(实型)变量:r,area常量3.14(π)基本数据类型有三种:整型(int)字符型(char)实型单精度型(float)双精度型double)2.1.1数据类型2.1数据表示1.整型2.1.1数据类型2.1数据表示名称符号存储空间数的范围短整型short2字节(16位)-32768~+32767(-215~+215-1)基本整型int2字节(16位)-32768~+32767(-215~+215-1)4字节(32位)-2147483648~+2147483647(-231~+231-1)长整型long4字节(32位)-2147483648~+2147483647(-231~+231-1)无符号短整型unsignedshort2字节(16位)0~65535(0~216-1)无符号基本整型unsignedint2字节(16位)0~65535(0~216-1)4字节(32位)0~4294967295(0~232-1)无符号长整型unsignedlong4字节(32位)0~4294967295(0~232-1)2.浮点型
浮点型又分为单精度和双精度。其符号表示、所占存储空间大小、有效数字及数的范围如表。
2.1.1数据类型2.1数据表示名称符号存储空间有效数字数的绝对值范围单精度浮点型float4字节(32位)6~73.4×10-38~3.4×1038双精度浮点型double8字节(64位)15~161.7×10-308~1.7×10308程序的结构特点3.字符型
字符型数据涵盖了ASCII码字符集中每一个字符,包括可直接显示的字符和32个控制字符,见附录A。字符型用char表示,占存储空间1个字节(8位),实际上存放的是该字符所对应的ASCII码值(一个整数),所以字符型和整型的关系非常特殊,二者经常“混搭”,如’A’+1代表字母’B’。
2.1.1数据类型2.1数据表示2.1.2常量2.1数据表示常量按照数据类型来分有:整型常量浮点型常量字符常量字符串常量按照表现形式来分有:直接常量符号常量1.直接常量(1)整型常量整型常量有十进制、八进制和十六进制三种表示方式,如表2-3所示。
2.1.2常量2.1数据表示表示方式前置符号标志构成示例十进制无0~9、正负号65,-57八进制00~7、正负号032,027,-033十六进制0x或0X0~9,a~f(或A~F)、正负号0x101,0Xff整型常量默认为基本整型,可以在整型常量后加小写字母l或大写字母L得到相应的长整型常量。例30000为int型65536为longint型例(1)20023L(2)06708302(3)0x200xfff0xh31.直接常量(2)浮点型常量浮点型常量有十进制小数和指数形式两种表示方式。
2.1.2常量2.1数据表示表示方式符号标志构成示例规则十进制小数小数点.0~9、正负号和小数点1.23,.23,-1.必须有唯一的小数点指数字母e或E0~9、正负号、e或E1.23e3,1.23E3字母e或E前必有数,e或E后必为整数34.1335e-13413.35E-30.341335e2e3、2.1e3.5、e是不合法的指数形式1.直接常量(3)字符型常量用单撇引号括起来的单一字符称之为字符型常量。
转义字符表示时以反斜杠“\”作为标志符号。字符型常量在内存中占1个字节。2.1.2常量2.1数据表示例如:1.'a','B','9','*'是合法的直接字符常量。2.单引号、双引号和反斜杠等具有特殊用途的字符只能用转义字符表示,即'\''、'\"'、'\\'。3.'\n','\030','\x19'是合法的转义字符常量,分别代表回车换行、↑、和↓等控制字符。2.1.2常量2.1数据表示表示形式含义\n回车换行(将光标移到下一行开头)\t横向跳格(Tab)\b退格(将光标前移一列)\a警告(产生声音提示信号)\\输出反斜杠\\’输出单引号’\
"输出双引号”\dddddd为1至3为八进制数,如’\101’代表A,’\37’代表▼符号\xhhHh为1至2位十六进制数,如’\x1E’代表▲符号1.直接常量(3)字符型常量--常见的转义字符及其含义如表2-5所示
2.1.2常量2.1数据表示1.直接常量(4)字符串常量字符串常量就是用双撇引号括起来的一串字符序列,字符串中含有的字符个数是该字符串的长度。字符串存储时,每个字符占1个字符,并在字符串的结尾自动加上一个字符串结束标志’\0’,因此字符串的存储长度比字符串的字符个数多1。
a
a\0例
‘a’“a”例空串“”\02.符号常量符号常量标识符通常大写,以便和其他标识符相区别。另外,宏定义命令和头文件包含命令一样都属于编译预处理,需要写在程序开头位置。
2.1.2常量2.1数据表示#define符号常量标识符常量值
#include<stdio.h> #definePI3.14//定义符号常量PI代表3.14voidmain() {floatr,area; printf("请输入半径:");scanf("%f",&r); area=PI*r*r; printf("该圆的面积为:%f.\n",area);}2.1.2常量2.1数据表示【例2-4】使用符号常量实现【例2-1】——计算并输出半径为r的圆的面积。#define符号常量标识符常量值【随堂练习2-1】1.判断下列常量表示正确与否?整型常量:32768、037、081、0x4f、0xAH浮点型常量:.124、3.0、1e3、2.3E1.5字符型常量:'a'、'101'、65、'\x21'2.字符串常量“Howareyou?\n”的字符串长度为()个字节,它占用的存储空间为()个字节。3.“d:\windows\info.txt”在C语言程序设计时应描述为()。4.在编程处理物理力学相关运算时,常将重力加速度G定义为符号常量,其定义语句可描述为()。2.1.2常量2.1数据表示
1.变量(1)概念:在程序运行过程中其值可以改变的量称为变量(2)变量定义的一般格式为:
类型标识符
变量名1,变量名2,…,变量名n;2.1.3变量2.1数据表示注意:变量必须先定义,后使用。数据类型,即决定分配字节数和数的表示范围合法标识符例:inta,b,c;floatdata;例1intstudent;stadent=19;/*Undefinedsymbol‘statent’infunctionmain*/
1.变量(3)【例2-5】1).floatr,area;2).doublea,b,c;3).inti=1,s;4).longm,k;5).charch;
2.1.3变量2.1数据表示变量定义后,系统会根据变量的类型分配相应的存储空间。
注意区分变量名与变量值…...地址inta=1,b=-3,c;abc2字节2字节2字节地址地址…...内存1-3
随机数
1.变量(4)【随堂练习2-2】1.下列变量定义中合法的是:(1)longdo=0xfd;(2)intmax=min=0;(3)doublef,inta;(4)charch="A";2.1.3变量2.1数据表示2.2数据操作2.2.1运算符与表达式2.2.2类型转换
运算符:在运算数据时,用来表示各种运算的符号
1.运算符的种类1)算术运算符+-*/%++--2)关系运算符><==>=<=!=3)逻辑运算符!&&||4)位运算符>><<~|^&5)赋值运算符=及其扩展赋值6)条件运算符?:7)逗号运算符
,8)指针运算符*&2.2.1运算符与表达式2.2数据操作
2.2.1运算符与表达式2.2数据操作运算符含义举例结果说明+加法运算符a+ba与b的和无-减法运算符a-ba与b的差无*乘法运算符a*ba与b的乘积由于键盘无×号,乘法运算以*代替。/除法运算符a/ba除以b的商由于键盘无÷号,除法运算以/代替。注意:两个整数相除的结果为整数,如3/2的结果为1,舍去小数部分。%求余运算符a%ba除以b的余数求余运算%仅用于整数间的运算,若存在负整数,则余数的正负号与被除数相同,如-3%2的结果为-1。++自增1运算符a++或++a使a的值加1++和--为单目运算,且只能用于单一变量运算++a和--a,是在使用a之前,先使a的值加1或减1a++和a--,是在使用a之后,再使a的值加1或减1--自减1运算符a--或--a使a的值减11.算术运算符和表达式
1.算术运算符和表达式
【例2-6】分析程序输出结果。#include<stdio.h> voidmain() {inta=3,b=-5,i=2,j=2;
printf("%d,%d,%d,%d,%d\n",a+b,a-b,a*b,a/b,a%b);printf("%d,%d,%d,%d\n",a++,b--,++i,--j);printf("%d,%d,%d,%d\n",a,b,i,j);}2.2.1运算符与表达式2.2数据操作程序演示
运行结果:2.赋值运算符和表达式2.2.1运算符与表达式2.2数据操作简单赋值运算符:=复合赋值运算符:+=-=*=/=%=x*=y+8x=x*(y+8)x%=3x=x%3s+=is=s+3说明:赋值运算符左侧必须是变量,不能是常量或表达式赋值运算时,赋值号右边表达式值自动转换成其左边变量的类型例inti;floatj;i=2.56;//结果i=2;j=i;//结果i=2.0;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2(1)不同类型数据运算时,自动转换成同一类型,再进行计算.doublefloatLongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换2.2.2类型转换2.2数据操作(2)也可以对数据类型进行强制转换例(int)(x+y)(int)x+y(double)(3/2)(int)2.6说明:强制转换得到所需类型的中间变量,原变量类型不变例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生2.2.2类型转换2.2数据操作【随堂练习2-3】1.doublea=3.14;intb;b=(int)a;,执行该语句后,变量b的值为3,变量a的值还是3.14,并且变量a的类型也不改变,依旧是double类型。2.有定义语句:charch='M';,写出将变量ch变为小写字母的表达式:
。2.2.1类型转换2.2数据操作2.3算法与三种基本程序结构2.3.1算法及其描述
2.3.2三种基本程序结构
1.算法的概念
对于计算机程序可处理的问题来说,程序中所用到的数据以及对这些数据的类型和数据组织形式的描述称之为“数据结构”.
对数据处理所采用的方法和步骤等操作的描述称为“计算机算法”。
作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。著名计算机科学家沃思(NikiklausWirth)提出一个公式:2.3.1算法及其描述2.3算法与三种基本程序结构程序=数据结构+算法
2.3.1算法及其描述2.3算法与三种基本程序结构图形符号名称含义起止框算法的起点和终点,是任何流程图比不可少的输入、输出框数据的输入和输出操作处理框各种形式数据的处理判断框判断条件是否成立,成立时在出口处标注“是”或“Y”,不成立时标注“否”或“N”特定过程一个特定过程,如函数流程线连接各个图框,表示执行的顺序连接点表示与流程图其它部分相连流程图符号
下面对【例2-1】的算法描述改用流程图的方法表示
2.3.1算法及其描述2.3算法与三种基本程序结构开始结束计算圆的面积areaarea=3.14*r*r输入半径r值输出面积值area1.顺序结构顺序结构指算法的实现过程按照相应的步骤依次顺序执行,直至结束。顺序结构是最简单的一种基本结构。2.3.2三种基本程序结构2.3算法与三种基本程序结构1.顺序结构
2.3.2三种基本程序结构2.3算法与三种基本程序结构开始结束计算圆的面积areaarea=3.14*r*r输入半径r值输出面积值area2.选择结构
又称为分支结构,此结构中必包含一个条件判断,根据判断结果从两种或多种路径中选择其中的一条执行。
2.3.2三种基本程序结构2.3算法与三种基本程序结构2.选择结构
2.3.2三种基本程序结构2.3算法与三种基本程序结构结束计算圆的面积areaarea=3.14*r*rr是否合法输出“输入错误”提示输出面积值area输入半径r值是否开始3.循环结构
又称重复结构,其含义是当条件允许时,反复执行某些操作。
2.3.2三种基本程序结构2.3算法与三种基本程序结构否输入半径r值r是否合法否是开始结束是否继续是计算圆的面积areaarea=3.14*r*r输出“输入错误”提示输出面积值area【随堂练习1-3】1.试分析本单元“引例”的数据结构和实现算法,并绘制算法流程图。
2.3.2三种基本程序结构2.3算法与三种基本程序结构课程小结:我们学习了什么?数据类型
int
floatdouble
char常量与变量常量:整型常量、浮点型常量、字符常量字符串常量、符号常量变量:必须先定义,后使用。数据操作运算符与表达式:++--+=类型转换:自动类型转换与强制类型转换算法与三种基本程序结构
程序=数据结构+算法顺序结构、选择结构、循环结构<<C语言程序设计>><<C语言程序设计>>课程第3章顺序结构程序设计主要内容3.1字符输入与输出
3.1.1字符输出函数putchar()3.1.2字符输入函数getchar()3.2格式化输入与输出3.2.1格式化输出函数printf()(重点难点)3.2.2格式化输入函数scanf()(重点难点)3.3综合应用案例程序设计输入输出问题引入编程解决问题需要三个步骤:第一步:数据输入,准备好程序要处理的原始数据;第二步:数据处理,对输入的原始数据进行处理;第三步:数据输出,通过屏幕显示等方式输出结果数据。这里所提到的数据输入、数据处理和数据输出就构成了顺序结构的三个基本环节。那么在数据的输入和输出环节,如何使用C语言进行描述呢?【引例】根据三角形的三个边长,计算三角形的面积,其计算公式为:area=(其中a、b、c为三角形的三个边长,s=(a+b+c)/2)试分析,通过编程解决该问题需要哪三个步骤:(1)输入
;(2)计算
;(3)输出
。
abc运行结果:3.1字符输入与输出
3.1.1字符输出函数putchar()3.1.2字符输入函数getchar()函数调用格式:putchar(ch);函数功能:在标准输出设备上输出一个字符。说明:函数参数ch可以是整型或字符型的常量或变量,也可以是表达式,只要ch的最终值可表示一个有效字符即可。注意:该函数包含在stdio.h库中,使用#include<stdio.h>包含文件中。3.1字符输入与输出
3.1.1字符输出函数putchar()【例3-1】1.putchar('A');//输出字符'A'2.putchar('\101');3.putchar('a'-32); 4.intch=65;putchar(ch); 函数调用格式:getchar();函数功能:在标准输入缓冲区中读取一个字符。说明:函数参数为空,函数的返回值是从输入缓冲区中读入一个字符,将字符可以赋值给一个字符型或整型变量,也可作表达式的一部分。3.1字符输入与输出
3.1.1字符输出函数putchar()【例3-2】1).charch;ch=getchar();putchar(ch);2).charch;putchar(getchar());//将读入的字符直接输出【随堂练习3-1】1.下面程序功能为:输入一个A~Z之间的字母,输出与之左右相邻的两个字母,根据注释信息将程序填写完整。#include<stdio.h> voidmain() {charch; //数据准备
//调用getchar()输入一个字母,并赋值给ch
//调用putchar()输出与ch左相邻的字母
//调用putchar()输出与ch右相邻的字母}3.1字符输入与输出
3.1.1字符输出函数putchar()3.2格式化输入与输出3.2.1格式化输出函数printf()3.2.2格式化输入函数scanf()
printf(“字符串常量”);printf函数的格式1:如:printf(“%d,%d,%d”,a,b,a+b)如:printf(“t=%f,sint=%f\n”,t,sin(t))格式说明%d按十进制输出整数格式控制意义%f按小数形式输出实数\n换行其它字符原样输出例:当a=10,b=-5.3时,写出下面语句的输出结果printf函数的格式2:printf(“格式控制字符串”,输出列表);printf(“%d,%f”,a,b);10,-5.300000printf(“a=%d\nb=%f”,a,b);a=10b=-5.300000输出项:变量、表达式、函数格式控制:①为输出项提供格式说明②提供需要原样输出的文字或字符;;格式说明的个数=输出项个数格式说明的类型=输出项类型(顺序)3.2格式化输入与输出3.2.1格式化输出函数printf()控制输出数据的宽度格式说明意义数据宽度%d按十进制输出整数%f按小数形式输出实数系统决定%md按十进制输出整数占m位%m.nf按小数形式输出实数(小数占6位).(实际位数)系统决定......n位m位3.2格式化输入与输出3.2.1格式化输出函数printf()例1a=23,b=34,c=-55,写出下面语句的运行结果printf(“a=%d,b=%5d,c=%2d”,a,b,c)a=23,b=34,c=-55例2t=2.346写出下面语句的运行结果t=2.346000,2.35printf(“t=%f,%.2f”,t,t)格式说明总结--其中-、0、m、n、1都是可以缺省的。3.2格式化输入与输出3.2.1格式化输出函数printf()【随堂练习3-2】1.输出提示语“请输入银行卡密码:”的语句可描述为
。2.分析下列程序输出结果。#include<stdio.h> voidmain() {inta=65,b=97;doublem=3.14159;printf("%c-%d\n%c-%d\n",a,a,b,b); printf("a=%06d,b=%-6d.\n",a,b);printf("a=%d,a=%o,a=%x\n",a,a,a);printf("m=%lf.\n",m);printf("m=%4.3lf.\n",m);printf("m=%06.3lf.\n",m);}3.2格式化输入与输出3.2.1格式化输出函数printf()
scanf函数的格式如:scanf(“%d,%f”,&a,&b)地址表列:&a:变量a的地址&b:变量b的地址scanf(“格式控制”,输入地址表);;%d按十进制输入整数格式说明格式控制意义%f按小数形式输入实数&:地址运算符格式控制:指定数据输入的格式例如:设a=2,b=2.5,写出执行下面的语句时,数据输入的形式。scanf(“%d%f”,&a,&b);scanf(“%d,%f”,&a,&b);22.5
空格2
,2.5
顺序、个数、类型一致3.2格式化输入与输出3.2.2格式化输入函数scanf()说明提示,原样输入其他字符注意事项:scanf()的格式控制字符串中没有转义字符。如scanf(“%d\n”,&a);是错误的。输入数据时不能规定精度,只能规定宽度。
scanf(“%7.2f”,&a);非法(3)输入数值时,在两个数值之间需要插入间隔符(空格、Tab键、回车),以使系统能区分两个数值。但用%c作为输入控制字符时,在输入字符数据之前不需要插入间隔符。
scanf(“%d%c%f”,&a,&b,&c);若输入:
1234a1233r.233.2格式化输入与输出3.2.2格式化输入函数scanf()无效输入程序的结构特点【随堂练习3-3】1.分别按照int、double和char类型给变量a,b,c输入数值的语句可描述为:
2.根据要求给出数据输入方法。(1)有语句scanf("a=%d,b=%d",&a,&b);,要使a值为2,b值为3,则正确的输入方法是:
(2)有输入语句scanf("%d%c",&m,&n);,为使m值为6,n值为字母y,则正确的输入方法是:
3.2格式化输入与输出3.2.2格式化输入函数scanf()【例3-5】从键盘输入一个大写字母,然后转换成小写字母输出3.3综合应用案例#include<stdio.h>voidmain(){charch1,ch2;printf("请输入一个大写字母:");
ch1=getchar();ch2=ch1+32;printf("对应的小写字母为:");putchar(ch2);}#include<stdio.h>voidmain(){charch1,ch2;printf("请输入一个大写字母:");
scanf("%c",&ch1);ch2=ch1+32;printf("对应小写字母为:%c",ch2);}运行结果:【例3-6】简单模拟ATM机取款操作,仅要求输入取款金额,输出“正在出钞”提示。
3.3综合应用案例#include<stdio.h>voidmain(){intn;printf("请输入取款金额:");scanf("%d",&n);printf("您的取款金额为%d元,正在出钞,请稍后……\n",n);}运行结果:【例3-7】鸡兔同笼是中国古代的数学名题之一。大约在1500年前,《孙子算经》中记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有几只鸡和几只兔?
3.3综合应用案例
分析:鸡两只脚,兔4只脚。设有x只鸡,y只兔子,head为头的总数,foot为脚的总数。很容易得出方程组:若head和foot的值已知,则可以推导出:
x+y=head2x+4y=foot
y=(foot-2*head)/2x=head-y【例3-7】3.3综合应用案例#include<stdio.h>voidmain(){intx,y,head,foot;//x只鸡,y只兔子,head为头的总数,foot为脚的总数printf("请输入鸡兔总头数和总脚数:");scanf("%d%d",&head,&foot);y=(foot-2*head)/2;x=head-y;printf("鸡与兔的数目分别为:%d,%d.\n",x,y);}运行结果:【例3-8】商业贷款是时下不少购房者的选择。在银行贷款时共有两种贷款方式,分别为等额本息法和等额本金法,目前采用最多的是等额本息法。等额本息法还款即是把按揭贷款的本金总额与利息总额相加,然后平均分摊到还款期限的每个月中。作为还款人,每个月还给银行固定金额,但每月还款额中的本金比重逐月递增、利息比重逐月递减。每月还款金额的计算公式是:其中:y——每月的还款金额(元);a——贷款总金额(元);n——贷款的总月数;r——月利率。请输入计算贷款总金额a、贷款的总年数和贷款基准月利率,计算并输出每月的还款金额y。3.3综合应用案例
3.3综合应用案例#include<stdio.h> #include<math.h>
voidmain() {doubley,r;inta,n;printf("请输入贷款总金额:");scanf("%d",&a);printf("请输入贷款总月数:");scanf("%d",&n);printf("请输入月利率:");scanf("%lf",&r);
y=a*r*pow(1+r,n)/(pow(1+r,n)-1);printf("每月的还款金额为:%.2lf。\n",y);}运行结果:课程小结:我们学习了什么?C程序是通过函数实现数据的输入和输出的。
字符输入与输出
字符输出函数putchar(ch);
字符输入函数getchar();格式化输入与输出 格式化输出函数printf()
printf("字符串常量"); printf("格式控制字符串",输出项列表); 格式化输入函数scanf()
scanf("格式控制字符串",输入项地址列表);简单C程序设计
顺序结构程序设计<<C语言程序设计>><<C语言程序设计>>课程第4章选择结构程序设计主要内容条件判断表达式
关系运算符及表达式逻辑运算符及表达式if选择语句(重点)
单分支if语句双分支if-else语句条件运算符多分支switch语句(难点)已知三边长,求三角形面积?问题引入任意三边长都能构成三角形吗?构成三角形的条件:任意两边之和大于第三边问题引入开始输入三边结束输出面积输出错误构成三角形?真假4.1条件判断表达式4.1.1关系运算符及表达式4.1.2逻辑运算符及表达式4.1条件判断表达式4.1.1关系运算符及表达式关系运算符:用于确定两个数据之间是否存在着某种关系。4.1条件判断表达式4.1.1关系运算符及表达式关系表达式:用关系运算符将两个表达式(算术、关系、逻辑或赋值表达式)连接起来构成关系表达式。关系表达式的结果得整数值:0或10:假1:真各种运算符的优先级算术关系赋值4.1条件判断表达式4.1.1关系运算符及表达式区别:关系运算符“==”,赋值运算符“=”。
【随堂练习4-1】当r的值为3时,判断下列条件表达式的值。(1)r==3(2)r=4(3)0<r<1
4.1条件判断表达式4.1.2逻辑运算符及表达式&&与||为双目运算符,使用时左右各有一个操作数,使用时形如:A&&B,A||B!为单目运算符,使用时形如:!A4.1条件判断表达式4.1.2逻辑运算符及表达式A&&B与运算只有a、b均为真,结果才为真。
A||B或运算a、b有一个真,结果即为真。!A非运算即为取反运算4.1条件判断表达式例4-11.当x=3,y=4,z=5时,计算下列各逻辑表达式的值。x>y&&y>z!(x==3)||y<z00结果0!11结果14.2if选择语句4.2.1单分支if语句
4.2.2双分支if-else4.2if选择语句4.2.1单分支if语句
验证码不区分大小写
4.2if选择语句4.2.1单分支if语句
语法格式:
if(表达式){语句组;}流程图重点提示:“语句组”可以是一条独立的语句,此时“{}”可以省略;也可以是包含多条语句的复合语句,此时“{}”不能省略。例4-2编写程序,输入两个整数,然后将这两个整数按照从大到小的顺序存放并输出。
4.2if选择语句分析1、输入两整数存放两整型变量a、b之中2、若a<b,交换a、b3、输出a、b#include<stdio.h>voidmain(){inta,b,t;printf(“请输入a,b的值:”);scanf(“%d%d”,&a,&b);
if(a<b){t=a;a=b;b=t;}printf(“输出结果为:a=%d,b=%d.”,a,b);}
4.2if选择语句参考代码4.2if选择语句4.2.2双分支if语句
语法格式:
if(表达式){语句组1;}else{语句组2;}流程图例4-3输入一个正整数,判断该数是偶数,还是奇数。4.2if选择语句分析#include<stdio.h>voidmain(){intx;printf("请输入一个正整数:");scanf("%d",&x);if(x%2==0)printf("正整数%d是偶数。\n",x);elseprintf("正整数%d是奇数。\n",x);}4.2if选择语句参考代码条件运算符if(m>n)max=m;elsemax=n;
max=m>n?m:n;运算符“?:”是条件运算符,条件表达式的一般格式为:表达式1?表达式2:表达式34.3if语句嵌套例4-4输入三个边长a、b、c,如果这三个边能构成三角形,判断该三角形是等边三角形、等腰三角形,还是其它三角形。
分析非三角构成三角形?真假等边?真等边假等腰?真等腰假普通三角voidmain(){inta,b,c;printf("请输入三角形三边长:");scanf("%d%d%d",&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)printf("该三角形为等边三角形.\n");else if(a==b||b==c||a==c)printf("该三角形为等腰三角形.\n"); elseprintf("该三角形为其它三角形.\n");}else
printf("注意:不能构成合法三角形.\n");}4.3if语句嵌套嵌套else总是和它前面离它最近的未配对的if相匹配。可以通过“{}”来强制if和else的配对关系。
4.3if语句嵌套【随堂练习4-2】1.以下程序可判断指定的年份是否为闰年,补充完整。intyear,f;//f是闰年的标志位,year表示年份scanf(“%d”,&year);
f=1;else
if(
)printf(“%d年是闰年。”,year);elseprintf(“%d年不是闰年。”,year);
if((year%4==0&&year%100!=0)||(year%400==0))
f=0;f==14.4多分支结构4.4.1多分支if语句
执行过程式1为真?1真假退出式2为真?真真2假3假4例4-4编写程序计算分段函数的值4.4多分支结构分析4.4多分支结构参考代码4.4多分支结构4.4.2多分支switch语句
在分支情况较多的情况下,用if实现的多分支显得有些凌乱,程序流程不够清晰,用switch语句实现多分支结构,程序工整清晰。4.4多分支结构switch语句格式
switch(表达式){case常量表达式1:[语句序列1;][break;]case常量表达式2:[语句序列2;][break;]……case常量表达式n:[语句序列n;][break;]default:语句序列n+1;}整型,字符型类型相同跳出switch方括号中的内容可省略
例4-5根据学生考试成绩score的值(整数)判定考试等级。判定标准如下表所示。
4.4多分支结构分析4.4多分支结构参考代码voidmain(){intscore;printf("请输入学生成绩:");scanf(“%d”,&score);switch(score/10){case10:case9:printf(“该生的成绩等级为A-优秀.”);break;case8:printf(“该生的成绩等级为B-良好.”);break;case7:printf(“该生的成绩等级为C-中等.”);break;case6:printf(“该生的成绩等级为D-及格.”);break;default:printf(“该生的成绩等级为E-不及格.”);}}运行结果:4.5综合应用例4-6根据定期存款的期限和相应的利率,计算本息合计。
4.5综合应用例4-6【分析】1、输入本金与存款期限
2、程序运算,选定特定利率值
3、计算得到本息并输出
选择结构4.5综合应用【解法1】
floatc,r,money,m;//存款期限本息合计存款额printf("存款金额与期限");scanf("%f%f",&c,&m);if(m==3)r=0.026;if(m==6)r=0.028;if(m==12)r=0.033;if(m==24)r=0.0375;money=c+c*r*m/12;printf("%f",money);本息合计=本金+本金×利率×时间(时间单位为年)
4.5综合应用【解法2】if(m==3)r=0.026;elseif(m==6)r=0.028;elseif(m==12)r=0.033;elseif(m==24)r=0.0375;4.5综合应用【解法3】switch(m){case3:r=0.026;break;case6:r=0.028;break;case12:r=0.033;break;case24:r=0.0375;break;}【分析】三种解法的优缺点4.5综合应用例4-7某银行ATM机操作界面模拟。参考代码voidmain(){intn,pwd;printf("请输入您的密码<按回车键结束>:");scanf("%d",&pwd);if(pwd!=1234)printf("密码错误,服务退出.\n");else{printf("********请选择服务项目********\n");printf("****1-改密4-查询****\n");printf("****2-转账5-取款****\n");printf("****3-电子现金6-存款****\n");printf("****0-取卡****\n");printf("\n请输入选项:");scanf("%d",&n);4.5综合应用
switch(n) {case0:printf("服务结束,请取出银行卡.");break;case1:printf("正在进入【改密】服务界面,请稍后……\n");break;case2:printf("正在进入【转账】服务界面,请稍后……\n");break;case3:printf("正在进入【电子现金】服务界面,请稍后……\n");break;case4:printf("正在进入【查询】服务界面,请稍后……\n");break;case5:printf("正在进入【取款】服务界面,请稍后……\n");break;case6:printf("正在进入【存款】服务界面,请稍后……\n"); }}}4.5综合应用课程小结:我们学习了什么?分支结构
分支结构的特点分支结构的条件(关系表达式与逻辑表达式)if分支结构
单分支结构双分支结构嵌套
switch语句
语法结构优点<<C语言程序设计>><<C语言程序设计>>课程第5章循环结构程序设计主要内容1、循环的本质2、三种循环结构语句(重点)while语句do-while语句for语句3循环结构控制语句break语句continue语句4综合应用案例已知三边长,求三角形面积?问题引入每次计算完毕,程序会退出,再次计算需要重新运行程序根据指定的条件重复执行一条或多条语句,这就是循环结构。
5.1循环的本质
printf("************\n");printf("************\n");printf("************\n");printf("************\n");printf("************\n");printf("************\n");printf("************\n");printf("************\n");printf("************\n");printf("************\n");for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 177红色矢量卡通风格的期末复习避坑与对策模板下载 2
- 工业气瓶安全管理规定培训
- 急性脊髓炎护理教学查房
- 电气临时线作业安全规范培训
- 1-6年级860句英语万能句型
- 2026年教育素材使用合同协议
- 烹调加工操作间管理制度培训
- 检修班维修电工安全生产责任制培训课件
- 电站安全生产责任管理实施细则培训
- 门禁管理和机房人员登记制度培训
- 2026湖北武汉市江汉城市更新有限公司及其下属子公司招聘11人考试参考题库及答案解析
- 安徽省江南十校2026届高三3月联考数学试卷(含解析)
- 2026年春苏少版(新教材)初中美术八年级下册(全册)教学设计(附教材目录)
- 工会财会内控制度
- 2026年牡丹江大学单招职业技能考试题库附答案解析
- 2026年青岛港湾职业技术学院综合评价招生《素质测试》模拟试题及答案
- 2026年南通科技职业学院单招综合素质考试题库附答案详解(模拟题)
- 《黄帝的传说》教学设计(共2课时)-2025-2026学年统编版(新教材)小学语文二年级下册
- 体育场馆安全管理与应急处理指南(标准版)
- 2026年春季外研版(三起)小学英语四年级下册教学计划含教学进度表
- 2026年辽阳职业技术学院单招职业技能考试题库附答案
评论
0/150
提交评论