版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元一
C语言概述-初识程序导学【问题】编程技术在现代社会中的影响?
编程技术对于现代社会的重要性不言而喻。我们的生活已经与数字化紧密相连,借助计算机和互联网,我们可以完成大量的工作和娱乐活动,如在线购物、社交媒体、网上支付、在线教育等等。这些活动的实现都依赖于编程技术,而程序员则是编程技术的核心人才。计算机语言2认识C语言3C语言开发环境4程序框架结构目录1计算机语言—软件与程序的概念计算机作为一种机器,如何理解人的需求,按照人的思想进行工作,是问题求解的关键。程序正是为解决上述问题而提出的一种自动化求解的思路。计算机能完成一系列给定的功能,正是通过执行计算机指令实现的。指令是指示计算机执行的某种操作的命令,它由一串二进制数码组成。程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,其操作对象是数据,是人与计算机之间传递信息的媒介。软件是指程序与其相关文档或其他从属物的集合。
软件=程序+文档=数据结构+算法+文档计算机语言—分类计算机语言2认识C语言3C语言开发环境4程序框架结构目录1认识C语言-C语言起源认识C语言-C语言标准美国国家标准学会(ANSI)为C语言制定了一套ANSI标准,即C语言标准。C89/C90标准1989国国家标准学会(ANSI)通过的C语言标准ANSIX3.159-1989,被称为C89。
C99标准1999年,ISO和国际电工委员会(IEC)正式发布了ISO/IEC:1999,简称C99。本书将基于C99标准进行详解。C11标准2011年ISO和IEC正式发布C语言标准第三版草案,称为
ISO/IEC9899:2011,简称C11。认识C语言-C语言特点
早期的C语言主要用UNIX系统开发,后来C语言标准确立,C语言逐渐被广泛应用在各个领域,成为20世纪80年代乃至今天最优秀的程序设计语言之一。C语言的主要特点如下:
表达能力强C99标准共有37个关键字、9条控制语句并且具备丰富的数据类型。结构化设计C语言程序设计讲究自顶向下规划项目的思路,注重每个功能模块化编程。高效性C语言具有直接访问物理地址的能力,方便了内存的管理。可移植使用C语言编写的程序修改部分代码就可以移植到其他设备运行。整个嵌入式行业都有用到c语言,用C的职位通常是嵌入式行业,统称嵌入式软件工程师。小家电,所谓的冰箱,空调,洗衣机,电饭煲,空气净化器,商场或飞机高铁上的烟雾报警器,甚至自动感应的水龙头等都是嵌入式设备。汽车行业,除了看起来高大上的显示界面,电机控制,通讯,开关门,空调,充电,胎压监测等等都是单片机测量和控制。常见的智能手机,智能手环,手表,耳机,红绿灯,充电宝,键盘,鼠标,平衡车,电动车这些也都是嵌入式设备。生活中常见的电子商品。比如夜晚的灯光广告牌,你用到的u盘,sd卡里面的驱动,天骑得共享单车,测温枪以及各行行业的工业产品的控制器所用语言都是用的c来写的。各种芯片原厂,液晶面板原厂,传感器原厂,都是用C写自己产品驱动。认识C语言-C语言应用领域计算机语言2认识C语言3C语言编程环境4程序框架结构目录1C语言编程环境-常用的开发工具
1.windows系统下最常见的C语言集成开发环境,有MicrosoftVisualStudio、DEVC++、Code::Blocks、visualc++6.0、C-Free和Win-TC等。visualc++6.0报错比较准确,是微软推出的一款编译器,是一个功能强大的可视化软件开发工具。Dev-C++(或者叫做Dev-Cpp)是Windows环境下的一个轻量级C/C++集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。适合于在教学中供C/C++语言初学者使用,也适合于非商业级普通开发者使用。2.在线菜鸟工具:/compile/11/Devc++启动Devc++打开或新建工程打开或新建文件编辑、编译连接、运行完成
开发工具使用devc++开发应用程序的步骤C语言编程环境-Devc++Devc++启动Devc++打开或新建文件编辑、编译连接、运行完成
开发工具使用devc++开发应用程序的步骤C语言编程环境-Devc++C语言编程环境-一个C语言小程序程序代码运行结果程序开发过程-四个步骤(1)
编辑源程序(Edit)(2)编译源程序,生成目标文件(Compile)(3)连接目标文件及相关模块,生成可执行文件(Link
)(4)运行可执行文件(Run)*.cpp或*.c*.obj*.exe编辑编译连接运行计算机语言2认识C语言3C语言开发环境4程序框架结构目录1程序宏观框架结构-程序组成#include<stdio.h>
intmain(){ printf("欢迎来到C语言的世界!\n");//调用输出函数在屏幕上显示信息
return0;//函数返回值为0}编译预处理函数(组)最基本的程序框架程序宏观框架结构-函数结构intmain()//主函数
{printf("欢迎来到C语言的世界!\n");//调用输出函数在屏幕上显示信息
return0;//函数返回值为0}函数返回值类型
函数名(形式参数)
{
说明语句;
执行语句;}函数首部
函数体(1)函数构成(2)注释(3)程序语句:用;作为语句结束符编译预处理:程序编译之前的准备工作,以#开头函数分类
:函数是构成C语言程序的基本单位;
包括主函数、库函数和用户自定义函数函数组:程序的执行以主函数为核心展开;
函数组中有且仅有一个主函数main()//
单行注释的起始符号/*......*/作为单行或多行注释程序宏观框架结构-函数结构程序框架结构-随堂练习模仿编程,打印出一个“*”符号构成的三角形图案*************************
单元小结
单元二
C语言语法基础-走进数据世界1字符输出函数3如何输出数据2如何定义数据4如何输入数据C语言数据分类5算术运算符6综合应用目录导学【问题】如何表示计算机中的数据?
计算机凭借超越人脑的计算速度改变着现实世界数据处理的进程。数据处理其本质是对数据的操作,这些数据可能是数学问题中的数值,可能是信息处理中的文字、声音或视频。那么,现实世界中存在的大量简单数据如何在程序中存储和表示呢?
C语言数据分类——程序构成【例2-1】设a=18,b=35,要求将a、b两个整型变量的值进行交换。【解题思路】交换两个变量的值,需要借助一个中间量,临时保存其中一个变量的值。【源代码】#include<stdio.h>//包含标准输入输出头文件intmain()//主函数{
inta=18,b,temp;//定义三个整型变量,并为整型变量a初始化赋值为18b=35;//为变量b赋值为35printf("交换前a=%d,b=%d\n",a,b);//输出交换前a、b的值temp=a;//将变量a的值赋给变量temp保存a=b;//将变量b的值赋给变量ab=temp;//将变量temp的值赋给变量bprintf("交换后a=%d,b=%d",a,b);//输出交换后a、b的值return0;//函数返回值为0}【运行结果】交换前
a=18,b=35交换后
a=35,b=18
C语言数据分类——数据类型C语言能处理多种类型的数据,但其最基本的数据类型只有:整型、浮点型(小数)和字符型3种。名称符号存储空间取值范围短整型[signed]short[int]2字节-32768~32677即-2^15~(2^15-1)无符号短整型unsignedshort[int]2字节0~65535即0~(2^16-1)基本整型[signed]int4字节-2147483648~2147483647即-2^31~(2^31-1)无符号基本整型unsignedint4字节0~4294967295即0~(2^32-1)长整型long[int]4字节-2147483648~2147483647即-2^31~(2^31-1)无符号长整型unsignedlong[int]4字节0~4294967295即0~(2^32-1)长长整型longlongint8字节-2^63~(2^63-1)
C语言数据分类——整型名称符号存储空间有效数字取值范围单精度float4字节6~7-3.4×10^-38~3.4×10^38双精度double8字节15~16-1.7×10^-308~1.7×10^308长双精度longdouble16字节18~19-1.2×10^-4932~1.2×10^4932
C语言数据分类——浮点型ASCII的全称是"美国信息交换标准代码"。它设计于60年代早期,是计算机和诸如打印机、磁带驱动器之类的硬件设备的标准字符集。ASCII是7比特字符集,包含了128个不同的字符值。ASCII支持0-9的数字,A-Z大写和小写英文字母,以及一些特殊字符。被广泛使用于现代计算机、HTML和因特网上的字符集都是基于ASCII。
C语言数据分类——字符型字符型数据存放的是该字符所对应的ASCII码值(一个整数)。字符型数据进行运算时按照所对应ASCII码值进行运算。名称符号存储空间取值范围字符型char1字节值范围是-128~127值与ASCII表中的字符对应无符号字符型unsignedchar1字节值范围是0~255值与ASCII表中的字符对应
C语言数据分类——字符型(1)关键字:在编程语言里事先定义并赋予了特殊含义的单词类型说明符:int、float、char、void语句定义符:if、for、while、return(2)用户自定义标识符:可定义符号常量名、变量名、函数名、类型
C语言数据分类——标识符(3)标识符命名规则标识符只能由字母、数字和下划线组成。标识符不能以数字作为第一个字符。标识符不能使用关键字。标识符区分大小写字母,如add、Add和ADD是不同的标识符。(1)哪些标识符属于合法的
用户自定义标识符:(2)识别程序中的标识符#include<stdio.h> voidmain() {inta,b,c;printf("请输入矩形的长和宽:");
scanf("%d%d",&a,&b);
c=2*(a+b); printf("该矩形周长为:%d.\n",c);}Main
void
_num
age2
a*
N4
3m
%dstrarr_1_names*t
C语言数据分类——标识符
C语言数据分类——sizeof()运算符【说明】
sizeof是C语言的一种单目操作符,它并不是函数。
sizeof运算符用来计算被运算对象在内存中所占字节数,被运算对象可以是数据类型、或已定义的变量、或已定义的数组(计算结果是数组所有元素的存储单元之和)、或表达式(计算结果是表达式值所占内存的字节数)。【sizeof语句格式】sizeof(运算对象)
C语言数据分类——sizeof()运算符【例2-2】用运算符sizeof()计算不同类型的数据在内存中所占的字节数。#include<stdio.h>//包含标准输入输出头文件intmain()//主函数{ intnum; floatx; doubley; chart; printf("变量占的字节数:%d,%d,%d,%d\n", sizeof(num),sizeof(x),sizeof(y),sizeof(t)); printf("常量占的字节数:%d,%d,%d,%d\n", sizeof(3),sizeof(45.6),sizeof(45.6789545),sizeof('m')); return0;//函数返回值为0}【运行结果】变量占的字节数:4,4,8,1常量占的字节数:4,8,8,11字符输出函数3如何输出数据2如何定义数据4如何输入数据C语言数据分类5算术运算符6综合应用目录数据定义——直接常量(1)整型常量表示方式前置符号构成示例表示方式十进制无0~9、正负号65,-57十进制八进制00~7、正负号032,027,-033八进制十六进制0x或0X0~9,a~f(或A~F)、正负号0x101,0Xff十六进制(2)浮点型常量表示方式符号构成示例表示方式十进制小数小数点.0~9、正负号和小数点1.23,.23,-1.必须有唯一的小数点指数字母e或E0~9、正负号、e或E1.23e3,1.23E3字母e或E前必有数,e或E后必为整数数据定义——直接常量(3)字符型常量直接字符常量:用单撇引号括起来的单一字符称之为字符型常量转义字符常量:以反斜杠“\”作为标志符号,见表2-3字符型常量实例'a'、'B'、'9'、'*'直接字符常量'\n''\017''\x01'回车换行☼☺'\'''\"''\\'单引号双引号反斜杠数据定义——直接常量字符串常量字符串常量就是用双撇引号括起来的一串字符序列。字符串中含有的字符个数是该字符串的长度。字符串存储时,每个字符占1个字符,并在字符串的结尾自动加上一个字符串结束标志'\0',因此字符串的存储长度比字符串的字符个数多1。数据定义——直接常量定义格式(4)符号常量是指用符号代表某个常量。#define符号常量标识符
常量值宏定义程序示例#include<stdio.h> #definePI3.14//定义符号常量PI代表3.14voidmain() {floatr,area; printf("请输入半径:");scanf("%f",&r); area=PI*r*r; printf("该圆的面积为:%f.\n",area);}说明:符号常量标识符通常大写写在程序开头位置数据定义——直接常量(1)判断下列常量表示正确与否?(2)字符串常量“Todayisfine?\n”的字符串长度为
个字节,它占用的存储空间为
个字节。整型常量:32768、037、081、0x4f、0xAH浮点型常量:.124、3.0、1e3、2.3E1.5字符型常量:'a'、'101'、65、'\x21'、'9'(3)在编程处理物理力学相关运算时,常将重力加速度G定义为符号常量,其定义语句可描述为:
。数据定义——直接常量练习定义格式在程序运行过程中其值可以改变的量称为变量。变量必须先定义,后使用。类型标识符
变量名1,变量名2,…,变量名n;floatr,area; doublea,b,c;inti=1,s; unsignedlongm,k;charch; 程序示例//定义单精度浮点型变量r和area//定义双精度浮点型变量a,b和c//定义两个整型变量,同时给变量i初始化,赋初值1//定义两个无符号长整型变量m和k//定义一个字符型变量ch用户标识符定名规则数据定义——变量定义(1)下列变量定义中合法的是:(2)若要根据定期存款数额c、存款期限m和相应的利率r,编程计算本息合计s,则变量定义语句如何描述?longdo=0xfd;intmax=min=0;doublef,inta;charch="A";数据定义——变量定义练习doublefloatLongunsignedintchar,short
不同类型的数据共存于同一个表达式中时,按照C语言的规则要转换成同一类型,转换是编译系统自动完成的。说明:必定的转换运算对象类型不同时转换数据类型转换——自动类型转换printf("%d\n",10/3);printf("%f\n",10.0/3);运算结果:33.333333在C语言中,还可以把一种类型的数据强制转换为另一种类型的数据。一般格式(类型标识符)(表达式)重点提示:当表达式为单一常量或变量时,表达式两侧的括号()可以省略。当浮点型数据转换为整数时,系统采用的是直接截断的方式,而不是四舍五入。对变量进行强制转换后,变量本身的数据类型不变,而是得到一个所需要类型的数据。(int)2.6doublea=3.68;intb;b=(int)a;2a=3.14b=3程序示例数据类型转换——强制类型转换1字符输出函数3如何输出数据2如何定义数据4如何输入数据C语言数据分类5算术运算符6综合应用目录#include<stdio.h> voidmain() {floatr,area; printf("请输入半径:");scanf("%f",&r); area=3.14*r*r; printf("该圆的面积为:%f.\n",area);}示例:计算并输出半径为r的圆的面积。格式化输出函数输出字符串格式化输出函数输出指定格式
如何输出函数——格式输出函数函数格式格式1:printf("字符串常量");//将“字符串常量”显示输出格式2:printf("格式控制字符串",输出项列表);//按“格式控制字符串”所规定的格式,将“输出项列表”中各输出项的值输出到标准输出设备。
如何输出函数——格式输出函数printf()函数的功能是将信息按照格式控制字符串中指定的格式输出到显示器上显示。函数功能格式说明printf(“格式控制字符串
“,输出项列表
);双撇括号括起来包括“格式控制符”和“普通字符”“格式控制符”由%开头“普通字符”按原样输出。输出项之间用逗号隔开输出项可以是常量、变量及表达式输出项个数与格式控制符个数相同
如何输出函数——格式输出函数printf("请输入矩形的长和宽:");//普通字符串,按原样输出
printf("%d,%d,%d,%d\n",a,b,i,j);//输出变量a,b,i,j的值printf("圆的面积为:%6.2f",area);//area按照宽度为6,2个小数位的形式输出。
示例格式说明符功能说明举例c以字符形式输出单个字符chart='A';printf("%c,%c",t,'D');//输出:A,Dd或i以有符号的十进制整数形式输出inta=-15;printf("%d,%i",a,3);//输出:-15,3%u以无符号十进制整数形式输出intb=-15;printf("%u,%u",b,153);//输出:4294967281,153%o(小写字母)以八进制无符号形式输出整数intb=15;printf("%o,%o",b,30);//输出:17,36%x或%X以十六进制无符号形式输出整数inta=168;printf("%d,%x,%X",a,a,a);//输出:168,a8,A8%f按十进制小数形式输出单、双精度数,默认为6位小数floata=36.73; doubleb=75.89;printf("%f,%f",a,b);//输出:36.730000,75.890000%e或%E按指数形式输出单、双精度数精度实数floata=0.03673;doubleb=1758.9;printf("%e,%E",a,b);//输出:3.673000e-002,1.758900+003
如何输出函数——格式输出函数附加格式修饰字符
如何输出函数——格式输出函数修饰说明符功能说明举例L或l用于长整型,可加在格式符d、ox、u之前longlonga=12345678901;printf("%d,%lld",a,a);//输出:-539222987,12345678901h按短整型数据输出inta=34567;printf("%d,%hd",a,a);//输出:34567,-30969m(正整数)指定输出项所占的字符数(域宽),若实际位数小于m,左端补空格,若大于m,按实际位数输出。inta=19;printf("%3d,%5d",a,a);//输出:19,19.n(正整数)指定输出实型数据的小数位数,系统默认6位小数
floata=8.367;printf("%.2f,%6.2f",a,a);//输出:8.37,8.370(数字)指定数字前的空格用0填充inta=19;printf("%04d",a);//输出:0019-指定输出项的对齐方式,-表示左对齐,默认是右对齐inta=19;printf("%-4d,%4d",a,a);//输出:19,19
(1)输出提示语“请输入银行卡密码:”的语句可描述为________________________________________
(2)已知变量sum为n以内自然数的和,按6个字符宽度输出sum值的语句可描述为
;
如何输出函数——格式输出函数练习printf("请输入银行卡密码:");
printf(“sum=%6d”,sum);【源代码】#include<stdio.h>//包含标准输入输出头文件intmain()//主函数{inta=3,b=6;//定义两个个整型变量a,b,表示长方形的长和宽ints=a*b;//计算长方形面积printf("长方形面积是%d",s);//输出长方形的面积return0;//函数返回值为0}
如何输出函数——格式输出函数示例【例2-4】已知一个长方形的长3,宽6,求长方形的面积并输出。【运行结果】长方形面积是18【解题思路】首先确定程序中涉及的变量和类型,再确定变量值的获取方式,是通过赋值还是运算,最后运用输出语句输出变量的值。
如何输出函数——putchar()函数函数格式程序示例putchar(ch);putchar('A');
//输出字符'A'putchar('\101');//输出字符'A'putchar('a'-32); //输出字符'A'intch=65;putchar(ch);//输出字符'A'//在标准输出设备上输出一个字符整型或字符型的常量、变量或表达式
下面程序功能为:输出与变量ch左右相邻的两个字母,根据注释信息将程序填写完整。#include<stdio.h> voidmain() {charch=’M’; //字符变量定义并初始化
//调用putchar()输出与ch左相邻的字母
//调用putchar()输出与ch右相邻的字母}
如何输出函数——putchar()函数练习
如何输出函数——putchar()函数示例【例2-5】依据注释,使用字符输出函数putchar()实现变量值的输出。#include<stdio.h>intmain(){intb;b=97;chart='D';putchar(t);//输出字符变量的值putchar(b);//输出ASCII值为97对应的字符putchar('\n');//输出转义字符\nputchar('#');//输出字符常量#putchar(65);//输出ASCII值为65的字符’A’return0;}【运行结果】Da#A1字符输出函数3如何输出数据2如何定义数据4如何输入数据C语言数据分类5算术运算符6综合应用目录
如何输入函数——scanf()函数【例2-4】已知一个长方形的长3,宽6,求长方形的面积并输出。【源代码】#include<stdio.h>intmain()//主函数{inta=3,b=6;ints=a*b;printf("长方形面积是%d",s);return0;}输入一个长方形的长和宽,求长方形的面积并输出。【源代码】#include<stdio.hintmain()//主函数{inta,b;printf("请输入a和b的值:");scanf("%d%d",&a,&b);ints=a*b;printf("长方形面积是%d",s);return0;}函数格式scanf("格式控制字符串",输入项地址列表);1.格式控制字符串:用双引号括起来的字符串,包含格式说明符和普通字符。
格式说明符--%[修饰符]格式字符,将输入数据转换为指定类型,存放到指
定变量中。
普通字符--从键盘输入数据时,普通字符要原样输入。2.输入变量地址表列:即是存放数据的变量的地址,同时输入多个量时,用“,”间隔开,书写时要在每个变量前面加“&”符号,其后的变量名是接收输入数据的变量。
如何输入函数——scanf()函数函数说明scanf("%d%d",&a,&b);格式符功能说明%c接收一个字符%d或%i接收有符号十进制整型数据%o(小写字母)接收无符号的八进制整数%x或%X接收一个无符号的十六进制整数%f接收一个浮点型数据(float)%1f接收一个浮点型数据(double)%s接收一字符串,以空白字符结束
如何输入函数——scanf()函数格式符说明练习重点提示:输入数值时,在两个数值之间需要插入间隔符(空格、Tab键、回车)%c作为输入控制字符时,在输入字符数据之前不需要插入间隔符。
如何输入函数——scanf()函数练习1.根据输入的自然数n值,计算n以内自然数的和sum,则输入n值的语句可描述为2.分别按照int、double和char类型给变量a,b,c输入数值的语句可描述为3.若a=2,b=3.2,c=’a’,则程序运行时,正确的输入方法是scanf("%d%lf%c",&a,&b,&c);
scanf("%d",&n);23.2a
格式符说明l用于长整型和双精度浮点型,可加在d.u.f之前mm代表一个正整数,用于指定输入数据所占宽度*表示本输入项在读入后不赋给相应的变量
如何输入函数——scanf()函数附加格式说明符
如何输入函数——scanf()函数示例【例2-6】从键盘依次输入一个整数、一个单精度浮点数、一个双精度浮点数、一个字符,将输入数据分别赋值给不同变量,并输出变量值。【解题思路】首先确定程序中涉及的变量和类型,通过scanf格式输入语句为变量赋值,最后运用输出语句输出变量的值【源代码】#include<stdio.h>//包含标准输入输出头文件intmain()//主函数{inta;//定义整型变量afloatb;//定义单精度变量bdoublec;//定义双精度变量cchard;//定义字符变量dscanf("%d%f%lf%c",&a,&b,&c,&d);//通过键盘输入数据为变量赋值printf("a=%d,b=%f,c=%f,d=%c",a,b,c,d);//输出各变量的值return0;//函数返回值为0}【运行结果】4556.545.5ca=45,b=56.500000,c=45.500000,d=c函数格式程序示例getchar();charch;ch=getchar();putchar(ch);//在标准输入缓冲区中读取一个字符。参数为空charch;putchar(getchar());//将getchar()读入的字符直接用putchar()输出
如何输入函数——getchar()函数注:getchar()是与putchar()相对应的单个字符输入函数,其作用是从键盘接收、输出一个字符。说明:
如何输入函数——getchar()函数1.getchar()函数没有参数,函数的返回值是从输入设备得到的字符,该函数对于键盘上的任何键都是有效的,如按下Shift键或Esc键,getchar()函数也会将其视为有效输入。2.从键盘输入的数据通过回车键确认结束,送入缓冲区。该函数从缓冲区中读入一个字符。3.该函数得到的字符可以赋给一个字符变量或整型变量,也可以作为表达式一部分。
下面程序功能为:输入一个A~Z之间的字母,输出与之左右相邻的两个字母,根据注释信息将程序填写完整。#include<stdio.h> voidmain() {charch; //数据准备
//调用getchar()输入一个字母,并赋值给ch
//调用putchar()输出与ch左相邻的字母
//调用putchar()输出与ch右相邻的字母}
如何输入函数——getchar()函数练习1字符输出函数3如何输出数据2如何定义数据4如何输入数据C语言数据分类5算术运算符6综合应用目录算术运算符——算术运算符含义运算符含义举例运算结果+正号(单目运算)+aa的值-负号(单目运算)-aa的相反数+加法运算符a+ba与b的和-减法运算符a-ba与b的差*乘法运算符a*ba与b的乘积/除法运算符a/ba除以b的商%求余运算符a%ba除以b的余数1.由于键盘无×、÷号,在C语言中运算以*和/代替;2.对于除法运算符,两个整数相除的结果为整数,如5/2的结果为2,舍去小数部分;只有两数中至少有一个是浮点数时,结果才为浮点数,如5/2.0的结果为2.5;除法运算/,写出以下运算的结果9/2_______9.0/2_______9/2.0_______9.0/2.0_______3.求余运算%仅用于整数间的运算,若存在负整数,则余数的正负号与被除数相同,如-3%2的结果为-1;求余运算%,写出以下运算的结果
27%4_______13%3_______15%5_______15%20_______16%(-7)_______-16%7_______-16%-7_______9%12_______365%10_______365/10%10_______365/100_______4.在进行算术运算时,如果运算符两侧的数据类型不同,会进行自动转换成相同的类型再进行运算。4.在进行算术运算时,如果运算符两侧的数据类型不同,会进行自动转换成相同的类型再进行运算。运算符说明算术运算符——算术运算符注意1.由于键盘无×、÷号,在C语言中运算以*和/代替;2.对于除法运算符,两个整数相除的结果为整数,如5/2的结果为2,舍去小数部分;只有两数中至少有一个是浮点数时,结果才为浮点数,如5/2.0的结果为2.5;3.求余运算%仅用于整数间的运算,若存在负整数,则余数的正负号与被除数相同,如-3%2的结果为-1;(1)有定义语句:charch=‘M’;写出将变量ch变为小写字母的表达式。(2)变量s表示一个百分制考试成绩,写出获取其十位数码的表达式。算术运算符——练习ch=ch+32s=s/10算术运算符——示例#include<stdio.h>intmain(){ inta=3,b=8,c=2; printf("%d,%d,%d\n",a+b,a-c,a*2+b-1); printf("%d,%d,%d",a,b,c); return0;}【运行结果】11,1,133,8,2【例2-8】运行下面程序,查看输出结果算术运算符——自加自减算术运算符运算符含义举例运算结果说明++自增1运算符a++或++a使a的值加1++和--为单目运算,且只能用于单一变量运算;++a和--a,是在使用a之前,先使a的值加1或减1;a++和a--,是在使用a之后,再使a的值加1或减1。--自减1运算符a--或--a使a的值减1分析程序输出结果。#include<stdio.h> intmain()
{
inta=9,b;b=++a;//先让a自增1,再取a的值。a=a+1;b=a;printf("a=%d,b=%d\n",a,b);b=a--;//先取a的值,再自减1b=a;a=a-1;printf("a=%d,b=%d\n",a,b);printf("a++=%d,++b=%d,%d,%d\n",a++,++b,a,b);return0;
}程序输出结果算术运算符——运算符示例算术运算符——赋值运算符一般格式变量=表达式赋值号运算符表达式计算结果+=x=3;x+=5;x=x+5;x的值是10-=x=3;x-=5;x=x-5;x的值是-2*=x=3;x*=5+1;x=x*(5+1);x的值是18/=x=3;x/=5;x=x/5;x的值是0%=x=3;x%=5;x=x%5;x的值是3算术运算符--优先级与结合性优先级和结合性两个问题优先级是表达式中有不同的运算符时,按照运算符的优先级确定运算符的执行顺序结合性是表达式中若有相邻几个优先级相同的运算符时,需要结合运算符确定运算方向。算术运算符——运算符示例【例2-10】运行下面程序,查看输出结果【源代码】#include<stdio.h>intmain(){ floatx=6.5; inty=5,z;z=(int)x+y+++x*y;//相当于(int)x+(y++)+x*y printf("x=%f,y=%d,z=%d",x,y,z); return0;}【运行结果】x=6.500000,y=6,z=501字符输出函数3如何输出数据2如何定义数据4如何输入数据C语言数据分类5算术运算符6综合应用目录
对于计算机程序可处理的问题来说,程序中所用到的数据以及对这些数据的类型和数据组织形式的描述称之为“数据结构”,对数据处理所采用的方法和步骤等操作的描述称为“计算机算法”。程序=数据结构+算法
使用流程图描述综合应用——程序算法(1)自顶向下
程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求细节,先从最上层总目标开始设计,逐步使问题具体化。(2)逐步细化(3)模块化设计
对复杂问题,应设计一些子目标作为过渡,逐步细化。
一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。综合应用——结构化程序设计原则(1)顺序结构
顺序结构指算法的实现过程按照相应的步骤依次顺序执行,直至结束。顺序结构是最简单的一种基本结构。(2)选择结构(3)循环结构
又称为分支结构,此结构中必包含一个条件判断,根据判断结果从两种或多种路径中选择其中的一条执行。
又称重复结构,其含义是当条件允许时,反复执行某些操作。综合应用——程序结构#include<stdio.h>voidmain(){charch1,ch2;printf("请输入一个大写字母:");ch1=getchar();ch2=ch1+32;printf("对应的小写字母为:");putchar(ch2);}可替换为:scanf("%c",&ch1);可替换为:
printf("对应的小写字母为:%c",ch2);运行结果:综合应用——应用示例1通过键盘输入一个大写字母,输出该大写字母对应的小写字母。综合应用——应用示例2从键盘依次输入3个实数,计算并输出这3个数的和及平均值。#include<stdio.h>intmain(){floatnum1,num2,num3;floatsum,avg;printf("请输入三个数:");scanf("%f,%f,%f",&num1,&num2,&num3);sum=num1+num2+num3;avg=sum/3.0;printf("三个数的和:%f,平均值:%f",sum,avg);return0; }请输入三个数:3.5,9.5,10.5三个数的和:23.500000,平均值:7.833333【运行结果】有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有几只鸡和几只兔?#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单元小结谢谢!单元三
选择结构-开启程序设计之旅导学【问题】什么是选择结构?
现实生活中,解决问题时并不是按部就班,一步一步执行的,很多情况下需要根据不同情况作出不同的选择。比如我们走到一个路口的时候,需要根据自己目的地和信号灯作出走哪条路的选择。同样,在C语言程序中,也需要对一些条件进行判断,决定执行哪部分代码,这就是我们即将要学习的选择语句结构。if语句2if双分支语句3if多分支语句4多分支switch语句目录1if语句—关系运算符及表达式关系运算符及表达式if语句——关系运算符及表达式(1)关系运算符运算符含义结合性用法举例(假设a=5,b=8)优先级>大于左结合a>b、5>31>=大于等于左结合a>=b、6>=21<小于左结合a<b、(3+2)<71<=小于等于左结合a<=b、a+3<=a*b1==等于、相等左结合a==b、a==b-32!=不等于、不相等左结合a!=b、1!=22if语句——关系运算符及表达式(2)关系表达式
用关系运算符将两个表达式(算术、关系、逻辑或赋值表达式)连接起来构成关系表达式。关系表达式成立时,值为1,否则,其值为0。【例3-2】如果num=40,计算num/10!=2的值【例3-1】intnum1=10,num2=5,num3=20,num4=10;计算(num1+num2)>(num3–num4)表达式的值。
解析:(num1+num2)的结果是15,(num3–num4)的结果是10,所以原式相当于求15>10的结果,为真,即结果是1。解析:由于算术运算符的优先级高于关系运算符,所以先计算num/10,等于4,再计算4!=2,这个式子是成立的,所以结果是逻辑真,即1。if语句——关系表达式随堂练习
r==3r<=5
0<r<4
【思考】如何表示数值的范围呢?(1)字符变量ch的值是字母’y’的关系表达式为:
。(2)整型变量n为偶数的关系表达式为:
。(3)当整型变量r的值为5时,判断下列关系表达式的值。if语句—逻辑运算符及表达式逻辑运算符及表达式(1)逻辑运算符(2)运算规则if语句—逻辑运算符及表达式逻辑运算符是连接一个或多个条件的运算符,C语言中的逻辑运算符包括:&&、||、!三种。在参与运算或编写程序时,我们一般将0称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为1,“假”对应的值为0。运算符含义结合性举例优先级&&与运算,双目,对应数学中的“且”左结合1&&0、(7>3)&&(b>a)2||或运算,双目,对应数学中的“或”左结合1||0、(6>3)||(b>a)3!非运算,单目,对应数学中的“非”右结合!a、!(3<5)1(3)运算符优先级!(非)(高)算术运算符关系运算符&&和||赋值运算符(低)if语句—逻辑运算符及表达式(4)逻辑表达式示例【例3-3】3&&0
解析:3为真,0为假,相与的结果为假,也就是0。【例3-4】(5>2)&&(4>2)
解析:5>2的结果是真,为1,4>2结果是真,也为1,所以相与的结果为真,即为1。【例3-5】-10||0
解析:-10为真,0为假,相或的结果为真,也就是1。【例3-6】(5>0)||(5<8)
解析:5>0的结果是真,为1,5<8的结果是真,为1,所以相或的结果为真,也就是1。【例3-7】!0
解析:因为0为假,所以非运算的结果为真,也就是1。【例3-8】!(8>5)
解析:8>5的结果是1,为真,非运算的结果为假,也就是0。if语句—逻辑运算符及表达式(1)判断字符变量ch的值为大写字母的逻辑表达式为:
ch>=’A’&&ch<=’Z’
。(2)判断某一年份year是否为闰年。闰年是符合以下条件的年份:能被4整除但不能被100整除,或者能被400整除。若用整型变量year表示年份,则闰年的逻辑判断表达式为:
if语句—逻辑表达式随堂练习(3)一个三角形的三边分别用a,b,c表示,写出判断该三角形为等腰三角形的逻辑表达式。
year%4==0&&year%100!=0||year%400==0a==b||b==c||c==aif语句—流程图流程图if语句—流程图符号名称含义符号名称含义起止框算法的起点和终点,是任何流程图比不可少的特定过程一个特定过程,如函数输入、输出框数据的输入和输出操作流程线连接各个图框,表示执行的顺序处理框各种形式数据的处理连接点表示与流程图其它部分相连判断框判断条件是否成立,成立时在出口处标注“是”或“Y”,不成立时标注“否”或“N”【例3-10】使用流程图描述算法:输入圆的半径,计算圆的面积。
优化if语句—流程图if语句—单分支if语句
单分支if语句(1)语法格式(2)执行流程
if(表达式){语句组;}重要提示:
“语句组”是一条独立的语句,“{}”可以省略;“语句组”为多条语句的复合语句,“{}”不能省略。if语句—单分支if语句2【例3-11】从键盘输入一个字母,无论该字母为大写字母还是小写字母,均以小写字母形式输出。#include<stdio.h>voidmain(){charch;printf("请输入一个字母:");ch=getchar();
if(ch>='A'&&ch<='Z')ch=ch+32;printf("输出结果为:");putchar(ch);}if语句—单分支if语句示例if语句—单分支if语句练习以下程序段的功能是计算一个整数的绝对值,将程序补充完整。#include<stdio.h>intmain(){ intn; printf("请输入一个整数:"); scanf(______________); printf("|%d|=",n); if(_________)_________________;printf("%d",n); return0;}if语句2if双分支语句3if多分支语句4多分支switch语句目录1if双分支语句-语句格式if双分支语句if双分支语句-语句格式(1)语法格式(2)执行流程
if(表达式){语句组1;}else
{语句组2;}【例3-12】输入学生的C语言成绩,判断是否及格。#include<stdio.h>intmain(){intscore;printf("请输入成绩:\n");scanf("%d",&score);
if(score>=60)printf("成绩及格\n");
elseprintf("成绩不及格\n");return0;}if双分支语句-引例【例3-13】输入一个正整数,判断该数是偶数,还是奇数。#include<stdio.h>voidmain(){
intx;printf("请输入一个正整数:");scanf("%d",&x);
if(x%2==0)printf("正整数%d是偶数。\n",x);
elseprintf("正整数%d是奇数。\n",x);}if双分支语句-引例0#include<stdio.h>#include<math.h>intmain(){ floata,b,c,p,s; printf("请输入三条边的值:"); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) { p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("三角形面积:%f",s); } else printf("三条边不能构成三角形") ; return0;}1.已知三角形三条边长,判断三条边能否组成三角形,如能组成三角形,则计算三角形面积。设三条边的长度为a、b、c,则计算三角形面积公式为:,其中p=(a+b+c)/2。如不能组成三角形,则输出“三条边不能构成三角形”。if双分支语句-练习if双分支语句-条件运算符
条件运算符if双分支语句-条件运算符(1)语法格式(2)执行流程表达式1?表达式2:表达式3关系表达式或逻辑表达式
先计算表达式1的值,若表达式1的值为真,则计算表达式2的值,并将表达式2的值作为整个表达式的值;若表达式1的值为假,则计算表达式3的值,并将表达式3的值作为整个表达式的值。(3)优先级
条件运算符的优先级高于赋值运算符。【例3-9】下列程序的输出结果是?#include<stdio.h>intmain(){
inta=1;
intb=2;
printf("返回的是%d\n",a>b?a:b);return0;}if双分支语句-引例1.以下程序段的功能是计算一个整数的绝对值,使用条件表达式,将程序补充完整。intn;scanf("%d",&n);
n=n<0?-n:n;;printf("该整数的绝对值是%d.",n);2.已知变量a、b,求两个数的最小值。if双分支语句-条件运算符练习if语句2if双分支语句3if多分支语句4多分支switch语句目录1
多分支选择结构是指对多个条件进行判断,然后选择满足条件的语句块进行执行。可以用多重if语句、if语句嵌套和switch语句实现。if(条件表达式1){语句块1}elseif(条件表达式2){语句块2}┋elseif(条件表达式n){语句块n}else{语句块n+1;} if多分支语句-语句格式1.多重if语句是有if-else语句按照层次结构组成,语法格式如下:if多分支语句-示例
【例3-14】判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为”g”,输出显示为它是小写字符。
charc;printf("请输入一个字符:");c=getchar();if(c<32)printf("这是一个控制字符\n");elseif(c>='0'&&c<='9')printf("这是一个数字字符\n");elseif(c>='A'&&c<='Z') printf("这是一个大写字母\n");elseif(c>='a'&&c<='z') printf("这是一个小写字母\n");else printf("这是一个其他字符\n");if(判断条件1)if(判断条件2)...if(判断条件n) {语句块n}else {语句块n+1}...else{语句2}else{语句1}if多分支语句-语句格式2.if语句嵌套结构就是将整个if块插入另一个if块中,其语法格式如下:if多分支语句-示例
【例3-15】输入三个边长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");if多分支语句-语句格式重要提示:
else总是和它前面离它最近的未配对的if相匹配。可以通过“{}”来强制if和else的配对关系。最后的else语句不是必须的,是可选的,可以省略if语句2if双分支语句3if多分支语句4多分支switch语句目录11.语法格式switch(表达式)//表达式的值只能在下面的case值表中出现一次{case
常量表达式1:[语句序列1;][break;]
case
常量表达式2:[语句序列2;][break;]
……
case
常量表达式n:[语句序列n;][break;]
default:语句序列n+1;}方括号括起来的可省退出当前switch语句整型或字符型整型或字符型,常量值不能重复多分支switch语句-语法格式多分支switch语句-执行流程(2)执行流程首先计算switch后面表达式的值,再依次与每一个case后面的常量表达式的值进行比较,若有相等的情况,则以该case为入口,执行相应的语句序列。若所有case后面的常量表达式的值没有与switch后面表达式的值相等的情况,则执行default后面的语句序列。若相应的语句序列后面有break,则程序跳出switch选择结构,执行switch选择结构后面的语句;若相应的语句序列后面没有break,则执行下一个case后面的语句序列。多分支switch语句-与if多分支语句区别switch结构语句只进行相等与否的判断;而if结构语句还可以进行大小范围上的判断。switch无法处理浮点数,只能进行整数的判断,case标签值必须是常量;而if语句则可以对浮点数进行判断。多分支switch语句--练习#include<stdio.h>intmain(){ inta=1,b=0; scanf("%d",&a); switch(a) { case1:b=1;break; default:b=10;break; case2:b=2; } printf("%d",b);}若键盘输入5,运行结果为________________多分支switch语句--练习#include<stdio.h>main(){chargrade='C';switch(grade){case'A':printf("90-100\n");case'B':printf("80-90\n");case'C':printf("70-80\n");case'D':printf("60-70\n");break;case'E':printf("<60\n");default:printf("error!\n");}}运行结果:________________多分支switch语句——引例根据学生考试成绩score的值判定考试等级。判定标准如下表所示。成绩(score)等级score>=90优秀(A级)80<=score<90良好(B级)70<=score<80中等(C级)60<=score<70及格(D级)score<60不及格(E级)多分支switch语句—引例实现#include<stdio.h>voidmain(){doublescore;printf("请输入学生成绩:");scanf("%lf",&score);
switch((int)(score/10))//分析switch后面的表达式为什么写成(int)(score/10)?{case10:
case9:printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年智能化铁艺护栏设计与施工一体化合同3篇
- 感恩的心演讲稿模板锦集7篇
- 电话拨号课程设计
- 春节放假的通知范文锦集9篇
- 2024年度物流园区综合管理承包合作协议3篇
- 2024年城市综合体投资方合作协议6篇
- 2024年版证券交易居间合同
- 在宿舍手机被收检讨书范文(14篇)
- 2025年山东济宁市兖州区事业单位急需紧缺高层次人才引进(第二批)23人管理单位笔试遴选500模拟题附带答案详解
- 2025年山东济南市南部山区事业单位公开招聘工作人员9人管理单位笔试遴选500模拟题附带答案详解
- 大学试卷(示范)
- 高职院校智能制造实验室实训中心建设方案
- 劳动与社会保障法-001-国开机考复习资料
- 青少年足球培训
- 【MOOC】寄生人体的恶魔-医学寄生虫学-南方医科大学 中国大学慕课MOOC答案
- 2024年护理质量分析
- 2025人教版九年级英语全册知识点清单
- 医院紧急情况一键报警制度建设
- 2024版 新能源电站单位千瓦造价标准
- 企业培训师竞聘
- 惠州学院《电机与拖动基础》2023-2024学年期末试卷
评论
0/150
提交评论