版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章简单的C程序设计本章学习目标了解C语言的基本语句熟悉程序设计的三种基本结构及其特点掌握赋值语句的使用方法掌握数据输入、输出函数的调用规则和格式控制字符的正确使用掌握顺序结构程序的设计方法[Return]3.1C语句概述
3.2程序的三种基本结构
3.3赋值语句
3.4数据输入输出
3.5顺序结构的C程序设计举例
一个C程序一般包含若干个C语句。C语句可以分为以下七类:1.控制语句
(1)条件语句:if~else(在第4章中介绍)(2)多分支选择语句:switch~case(在第4章中介绍)(3)结束本次循环语句:continue(在第5章中介绍)(4)中止switch或循环语句:break(在第5章中介绍)(5)循环语句:for,while,do~while(在第5章中介绍)(6)转向语句:goto(在第5章中介绍)(7)从函数返回语句:return(在第7章中介绍)2.表达式语句:在表达式后面加分号构成。例如:a=3/*后面无分号,是表达式,不是语句*/a=3;/*后面有分号,是语句*/i++;/*为语句,相当于赋值语句i=i+1;*/3.变量定义语句:定义指定类型的变量,也可同时给变量赋初值。例如:inta=8;/*定义整型变量a,并给它赋初值8*/charc;/*定义字符型变量c*/4.数据类型定义语句:定义新的类型名来代表已有的类型名,以方便用户更好地使用C语言编写程序。例如:typedefcharSTR[10];/*定义STR为字符数组*/STRa,b;/*定义a,b为字符数组*/5.空语句:仅包含一个分号的语句,语句中无实质性内容。例:;/*仅由一个分号组成*/6.复合语句:由大括号{}括起来的语句序列。例如:
{c=a+b;c=c/100;
printf("%f",);
}7.函数调用语句:是函数的具体执行部分,用于完成对数据的操作。例如:printf("WelcometotheCworld.");/*该语句是调用printf函数实现字符串输出*/※注意:C语言允许一行写多个语句,每条语句后面必须要有分号;也允许一个语句写多行。[Return]3.2程序的三种基本结构C语言是理想的结构化程序设计语言。结构化程序的最大特点是以控制结构为单位,每个单位只有一个入口和一个出口。结构化程序中常见的基本结构有三种:1.顺序结构2.选择结构3.循环结构
图3-1顺序结构程序框图在顺序结构程序中,一般包括以下几个部分:(1)程序开头的编译预处理命令在程序中若要使用标准函数(又称库函数),除printf()和scanf()函数外,使用其它的标准函数都必须使用编译预处理命令,将相应的头文件包含进来。(2)顺序结构程序的函数体顺序结构程序的函数体中包括完成程序具体功能的各个语句,主要有以下四部分:①变量类型的说明部分;②数据的输入部分;③数据的处理部分;④数据的输出部分。[Return]
根据条件p成立与否来选择执行程序的某部分,即:当条件P成立(“真”),执行A操作,否则执行B操作。但无论选择哪部分,程序均将汇集到同一个出口。程序流程图如图3-2所示:图3-2选择结构程序流程图
选择结构还可以派生出“多分支选择结构”,程序框图如图3-3所示。根据k的值(k1、k2、...、kn)不同,来选择执行多路分支A1、A2、...、An之一。图3-3多分支选择结构程序流程图[Return](1)当型循环结构。当条件p成立(“真”)时,反复执行A操作,直到p为“假”时才停止循环。程序流程图如图3-4所示:图3-4当型循环结构程序流程图(2)直到型循环结构。先执行A操作,再判别条件p是否为“真”,若为“真”,再执行A,如此反复,直到p为“假”为止。程序流程图如图3-5所示:假真图3-5直到型循环结构程序流程图
使用循环结构时,在进入循环前,应设置循环的初始条件。同时,在循环过程中,应修改循环条件,以便程序退出循环。如果不修改循环条件或循环条件错误修改,可能导致程序不能退出循环,即进入“死循环”。
三种基本结构可以处理任何复杂的问题。[Return]3.3赋值语句1.一般格式:<变量名>=<表达式>;例如:c=a+b;2.功能:先计算赋值号右边表达式的值,然后将计算得到的结果赋值给赋值号左边的指定变量。3.说明:①C语言中的“=”作为赋值运算符,又称“赋值号”,不是“等号”。②赋值语句和赋值表达式是不同的概念,赋值表达式使C语言非常灵活。例如:if((a=b)>0)t=a;
if((a=b;)>0)t=a;[Return]3.4数据输入输出C语言不提供输入输出语句,输入输出由开发系统提供的函数实现,其中:putchar()、printf()是输出到终端(系统标准输出设备,如显示器)的函数;getchar()、scanf()是从系统标准输入设备(一般指键盘)输入数据的函数。 输入输出库函数的原型在文件stdio.h中定义,因此,使用输入输出函数时,应在源程序的开头使用如下语句:#include“stdio.h”
或#include<stdio.h>(关于编译预处理命令的使用可参考第8章。)
stdio.h放在程序的开头,称为“头文件”;由于使用#include(包含)命令,又称为“包含文件”。
C语言开发系统提供很多库函数,它们的原型在不同的头文件中定义,因此,在程序开头总是包含需要的头文件。最常用的头文件如表3-1所示。
表3-1最常用的头文件头文件名作用stdio.h定
定义输入输出函数string.h定义字符串操作函数math.h定义sin、cos、sqrt等数学函数3.4.1printf()——格式化输出函数1.一般形式(1)格式:printf("格式字符串"[,输出项表]);(2)功能:向系统默认的输出设备(一般指终端或显示器)格式化输出一个或多个任意类型的数据。(3)说明:格式字符串:又称“转换控制字符串”,可以包含格式字符、转义字符和普通字符三种字符。
输出项表:输出项表是可选的。如果要输出的数据不止1个时,则相邻2个数据之间有用逗号分开。
例如:
printf("a=%f,b=%5d,c=%c\n",a,b,c); /*a、b、c为输出项表,中间用逗号隔开*/
“格式字符串”中的格式字符,必须与“输出项表”中的输出项的数据类型一致,否则会引起输出错误。
2.格式字符输出不同类型的数据,printf()函数中可以使用不同的格式字符:(1)d格式符:以带符号的十进制整数形式输出。
格式字符意义%d输出数字长度为变量数值的实际长度%md输出m位(不足补空格,大于m位时按实际长度输出)%ld,%mldl(小写字母L)表示输出“长整型”数据%0md,%0mld0(数字0)表示位数不足m时补0【例3-1】
格式字符d的使用。/*exam3_1*/main(){ intnum1=123; longnum2=123456; printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",num1,num1,num1,num1); printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2); printf("num1=%ld\n",num1);} 用4种不同格式,输出int型数据num1的值用3种不同格式,输出long型数据num2的值num1=123,num1=□□123,num1=123□□,num1=123num2=123456,num2=□□123456,num2=123456num1=11272315
程序运行结果如下:(□表示空格)说明:a.对于整数,还可用八进制、无符号形式(%o)和十六进制、无符号形式(%x)输出。b.对于unsigned型数据,也可用%u格式符,以十进制、无符号形式输出。(2)f格式:以小数形式,按系统默认的宽度,输出单精度和双精度实数。格式字符意义%f按实数格式输出,整数部分按实际位数输出,6位小数%m.nf总位数m(含小数点),其中n位小数,右对齐%-m.nf同上,左对齐【例3-2】
格式字符f的使用。/*exam3_2*/main(){ floatf=123.456; doubled1,d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f); printf("d1+d2=%f\n",d1+d2);}屏幕显示运行结果为:123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46d1+d2=3333333333333.333010float实数(单精度)的有效位数是7位,double实数(双精度)的有效位数是16位,超过有效位数的输出和输入均无意义。说明:
a.对于实数,也可使用格式符%e,以标准指数形式输出:尾数中的整数部分大于等于1、小于10,小数点占一位,尾数中的小数部分占5位;指数部分占4位(如e-03),其中e占一位,指数符号占一位,指数占2位,共计11位。
b.也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。(3)C格式:仅输出一个字符(只占一列宽度)。一个整数,若其值在0~255范围内,可以用字符形式(c格式)输出,也可以用整数形式(d格式)输出。当用字符形式输出时,在输出前,将该整数转换为对应的ASCII字符。【例3-3】格式字符c的使用。/*exam3_3*/main(void){ chara='A'; intb=65; printf("%c,%5c,%d\n",a,a,a); printf("%d,%c",b,b);}屏幕显示运行结果为:A,□□□□A,6565,A※注意:在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。
(4)s格式:输出一个字符串。格式字符意义%s输出一串字符%msm为指定宽度(不足时左补空格,大于时按实际宽度输出)%-ms左对齐,不足m时右补空格%m.ns输出占m个字符位置,其中字符数最多n个,左补空格%-m.ns同上,右补空格【例3-4】
格式字符s的使用。/*exam3-4*/main(void){ printf("%s,%-10s,%5s\n","Internet","Internet","Internet"); printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");}屏幕显示运行结果为:Internet,Internet□□,Internet□□□□□Inter,Inter□□□□□,Inter(5)o(字母)格式符:按八进制格式输出。(不会出现负数格式)(6)x格式符:按十六进制格式输出。(不会出现负数格式)(7)u格式符:用于输出unsigned类型数据。【例3-5】
格式字符o、x、u的使用/*exam3_5*/main(void){ unsignedinta=65535; intb=-2; printf("a=%d,%o,%x,%u\n",a,a,a,a); printf("a=%d,%o,%x,%u\n",b,b,b,b);}a=-1,177777,ffff,65535b=-2,177776,fffe,65534屏幕显示运行结果为:(8)e格式符:以指数形式输出实数。格式字符意义%e输出13位,其中:1位整数,1位小数点,5位小数,4位指数(含字符e和指数的符号),数的正负符号各占一位(为正数时,“+”不显示)%m.ne总位数m(含数的+、-符号、小数点),不足补空格,大于m位时按实际长度输出,其中n位小数(含小数点),右对齐【例3-6】
格式字符e的使用/*exam3_6*/main(void){ doublea=65535.123; floatb=-2.1; printf("a=%e,%5.3e,%12.4e,%12.8e\n",a,a,a,a); printf("a=%e,%4.2e,%4.5e,%12.5e\n",b,b,b,b);}屏幕显示输出结果为:
a=6.55351e+04,6.55e+04,□□□6.554e+04,6.5535123e+04b=-2.10000e+00,-2.1e+00,-2.1000e+00,□-2.1000e+00(3)使用说明①printf()可以输出常量、变量和表达式的值。但格式控制中的格式说明符类型,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如:printf("str=%s,f=%d,i=%f\n","Internet",1.0/2.0,3+5,"CHINA");因为格式符%d、%f与输出项“1.0/2.0”、“3+5”没有对应匹配,所以是错误的。②格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。例如,%f不能写成%F。③格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。例如:“printf(”c=%c,f=%f\n“,c,f);”中的第一个c和f,都是普通字符。④%是printf()的格式说明符,若要直接输出字符%,在格式控制中需要使用两个连续的%。例如:printf("%f%%",1.0/3);输出结果为:0.333333%3.4.2putchar()——单个字符的输出函数1.格式:putchar(变量名);例:putchar(c);注:putchar()函数中的变量名可以是字符变量、整型变量或字符常量,也可以是一个转义字符。2.功能:向终端输出一个字符。3.说明:(1)putchar()函数只能用于单个字符的输出,且一次只能输出一个字符。从功能角度来看,printf()函数可以完全代替putchar()函数。(2)在程序中使用putchar()函数,必须在程序(或文件)的开头加上编译预处理命令(也称包含命令),即:
#include"stdio.h"或#include<stdio.h>表示要使用的函数,包含在标准输入输出(stdio)头文件(.h)中。【例3-7】putchar()函数的格式和使用方法。/*exam3_7*/#include"stdio.h"main(void){ chara,b,c; a='B';b='O';c='Y'; putchar(a);putchar(b);putchar(c); putchar('\n');/*输出换行符*/ putchar(‘\101’);/*输出字符‘A’(八进制101=65=0x41)*/}BOYA'屏幕显示输出结果为:
3.4.3scanf()——格式化输入函数1.一般形式(1)格式:scanf("格式字符串",输入项首地址表);(2)功能:从键盘上接收格式化输入。例:#include"stdio.h"main(void){inta,b,c; scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c); return0;}程序中只有printf和scanf函数时头文件可以不写&是地址运算符,分别获得这三个变量的内存地址3□4□5↙(输入a,b,c的值)3,4,5(printf输出的a,b,c的值)屏幕显示运行结果为:注意:(1)&a、&b、&c中的&是地址运算符,分别获得这三个变量的内存首地址。要求从键盘赋值的变量前加&,即写成:&变量名。(2)从键盘输入数值时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔。上例的合法输入方式有:①3□□4□□□□5↙②3↙4□5↙③3(tab键)4↙5↙【例3-8】
已知圆柱体的底半径为radius,高为high,均由键盘输入,求其体积。/*exam3_8*/main(void){ floatradius,high,vol,pi=3.1415926; printf("Pleaseinputradius&high:"); scanf("%f%f",&radius,&high); vol=pi*radius*radius*high; printf("radius=%7.2f,high=%7.2f,vol=%7.2f\n",radius,high,vol);}Pleaseinputradius&high:4.6□6.0↙radius=□□□4.60,high=□□□6.00,vol=□398.86屏幕显示运行结果为:定义存放半径、高度和体积的实型变量说明:(1)scanf()中不使用%u说明符。对unsigned型数据,以%d、%o、%x格式输入。(2)可以指定输入数据的列数,系统自动按它截取所需数据。例如:scanf("%3d%3d",&a,&b);输入123456↙系统自动将123赋给a,456赋给b。(3)*格式用于跳过一个数据域,*主要用于利用现有数据时,跳过某些数据项。例如:scanf("%2d□%*3d□%2d",&a,&b);输入:12□345□67↙12→a,345被跳过,67→b。(4)输入实数不能规定精度,如:
scanf("%7.2f",&a);(5)使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符被输入。例如:scanf("%c%c%c",&ch1,&ch2,&ch3);printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);假设输入:A□B□C↙则系统将字母'A'赋值给ch1,空格'□'赋值给ch2,字母'B'赋值给ch3,“□C”则为多余字符。3.4.4getchar()——单个字符输入函数1.格式:getchar();2.功能从系统隐含的输入设备(如键盘)输入一个字符,同时有回显。另外,从功能角度来看,scanf()函数可以完全代替getchar()函数。3.说明(1)getchar()函数只能用于单个字符的输入,一次输入一个字符。(2)程序中要使用getchar()函数,必须在程序(或文件)的开头加上编译预处理命令:
#include"stdio.h"或#include<stdio.h>【例3-9】
说明getchar()函数的格式和作用。/*exam3_9*/#include"stdio.h"/*文件包含*/main(void){ charc; printf("Pleaseinputtwocharacter:"); ch=getchar(); /*输入1个字符并赋给c*/ putchar(ch);putchar('\n'); putchar(getchar());/*输入1个字符并输出*/ putchar('\n');}[演示]屏幕显示运行结果为:Pleaseinputtwocharacters:ab↙ab[Return]3.5顺序结构的C程序设计举例【例3-10】
输入任意三角形的三边长,计算其面积。【提示】设三角形的三边长分别为:a、b、c,周长为s,面积为area,则可按以下的公式:
先计算出周长s值,然后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度建筑项目技术合作合同
- 2024年度大连国际会议中心会场租赁合同
- 吸汗内衣市场发展现状调查及供需格局分析预测报告
- 连接用电缆项目评价分析报告
- 2024年度个人信贷还款合同
- 2024年度智能制造系统集成与实施合同
- 电阻器市场需求与消费特点分析
- 2024年度大学会议与活动场地预定合同
- 2024年度商品购销合同(含售后服务协议)
- 条形音箱市场发展现状调查及供需格局分析预测报告
- 江苏省南京市五校联盟2024-2025学年高三上学期期中考试化学试题
- 24年追觅在线测评28题及答案
- 《陆上风电场工程概算定额》NBT 31010-2019
- 第五章 中国特色社会主义理论体系的形成发展(一)
- 新版中国食物成分表
- 《关于早恋教育》主题班会上课版1
- 河北建新化工股份有限公司新型环保材料水煤浆添加剂建设项目环境影响报告表
- 昔日中国数学物理奥赛选手今何在
- 酒店弱电工程预算清单2ok
- 社区卫生服务中心安全生产应急预案
- 国有企业商业秘密保护实施细则模版
评论
0/150
提交评论