




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 顺序结构程序设计 - 2 -3.1 知识概要 .- 2 -3.1.1 C 语言的语句 .- 2 -3.1.2 字符输入输出函数 - 3 -3.1.3 格式输入输出函数 - 3 -3.1.4 算法 - 4 -3.1.5 结构化程序设计方法 - 5 -3.1.6 顺序结构 - 6 -3.2 知识难点辨析 .- 6 -3.3 课内实训项目 .- 8 -3.3.1 基础实训:顺序结构程序设计 - 8 -3.3.2 查错实训 - 11 -3.3.3 提高实训 - 13 -3.4 课外实训题目 .- 14 -3.5 习 题 .- 14 -第三章 顺序结构程序设计 顺序结构程序设计是 C 语言三种程序结构中最简单的一种,是一种线性结构。程序的执行是由上到下依次完成的,不存在任何分支和返回。构成顺序结构程序只需提供必要的输入/输出函数,赋值语句即可。通过本章的学习和实践, 应该理解和掌握基本字符输入/ 输出函数、格式输入/输出函数和赋值语句的使用。3.1 知识概要3.1.1 C 语言的语句C 语言的语句分为以下 5 类:1. 控制语句C 语言控制语句用于程序执行次序的控制,提供了 9 种控制语句,分别是:(1)if() else (选择语句)(2)for() (循环语句) (3)while() (循环语句)(4)dowhile() (循环语句)(5)continue (结束本次循环语句)(6)break (终止执行 switch 或循环语句)(7)switch (多分支选择语句) (8)goto (无条件转向语句)(9)return (从函数返回语句)2. 表达式语句表达式语句由一个表达式加一个分号构成,比如:“y+”是表达式,而“y+;”就是一个表达式语句。3. 函数调用语句与表达式语句相同,函数调用语句是由函数格式加一个分号构成,比如:printf(“y=%d“,x);4. 复合语句复合语句是把一组语句用花括号括起来,在语法上等效于一个语句。比如:y=a;a=b;b=y;5. 空语句空语句是由单独分号构成的语句,比如:;空语句表示不执行任何操作。3.1.2 字符输入输出函数1. putchar 函数格式:putchar( c )参数:c 为字符常量、字符变量、整型常量、整型变量。功能:把字符变量 c 的值输出到显示器上,只能输出一个字符。2. getchar 函数 格式:getchar()功能:从键盘读入一个字符。3.1.3 格式输入输出函数1. printf 函数格式:printf(“格式控制串“,输出列表)功能:按指定格式向显示器输出数据。格式中第一部分“格式控制串” ,包含两种信息:(1)格式说明:%修饰符格式字符,用于指定输出格式, “格式字符”的含义和使用见 表 3.1;“修饰符”的含义和使用见 表 3.2。(2)普通字符或转义序列:原样输出。格式中第二部分“输出列表” ,要求用逗号间隔。表 3.1 printf 格式字符格式字符 说 明 举 例d,i 十进制整数 int a=567;printf (“%d“,a); 输出 567o 八进制无符号整数 int a=65;printf(“%o“,a); 输出 101x,X 十六进制无符号整数 int a=255;printf(“%x“,a); 输出 ffu 不带符号十进制整数 int a=567;printf(“%u“,a); 输出 567c 单一字符 char a=65;printf(“%c“,a); 输出 As 字符串 printf(“%s“,“ABC“); 输出 ABCf 小数形式浮点小数 float a=567.789;printf(“%f“,a); 输出567.789000e,E 指数形式浮点小数 float a=567.789;printf(“%e“,a); 输出 5.677890e+002g,G e 和 f 中较短一种 floata=567.789;printf(“%g“,a); 输出 567.789表 3.2 printf 修饰符2. scanf 函数格式:scanf(“格式控制串 “,地址列表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束。 格式中第一部分“格式控制串”:%修饰符 格式字符,用于指定输出格式, “格式字符”的含义和使用见 表 3.3;“修饰符”的含义和使用见 表 3.4。格式中第二部分“地址列表” ,为输入变量的地址,用逗号间隔。表 3.3 scanf 格式字符表 3.4 scanf 修饰符3.1.4 算法1算法的概念算法是程序设计的重要基础,只有很好的掌握算法的设计,才能比较轻松的完成程序设% 百分号本身 printf(“%“);% 字符 功 能l 在 d,o,x,u 前,指定输出为 long 型m 输出数据域宽,数据长度void main() char c1,c2;printf(“连续输入两个字母,第一个大写,第二个小写:“);c1=getchar(); c2=getchar();c1=【?】;c2=【?】; putchar(c1);putchar(n);putchar(c2); 分析与提示:字母的输入、输出使用 getchar 和 putchar 函数。字符在内存中以它的ASCII 码形式保存,即字符变量中保存的是字符对应的 ASCII 值。大写字母的 ASCII 码值比小写字母的 ASCII 码值小 32。程序执行过程:按提示输入数据,输出结果如 图 3.5 所示。图 3.5 题目 1 程序的执行过程说明与思考:(1)由于程序中使用 getchar 和 putchar 函数,所以,不能省略预处理命令“#include ”。(2)如果字母不是连续输入,比如输完第一个按回车键,再输入第二个字母,结果如何?(3)如果改用 scanf 和 printf 函数输入、输出字母,应该怎样改写程序?题目 2:编写程序。某商场的两个分店销售电脑分别是 13 台和 29 台,每台售价 4528.6元,计算两个分店平均销售电脑金额。分析与提示:在程序中使用宏定义预处理命令#define,定义一个符号常量 PRICE 代表4528.6,再计算平均值,最后按保留 2 位小数格式输出平均值。参考程序代码:#define PRICE 4528.6#include void main() float average;int n=13,m=29;average=(n*PRICE+m*PRICE)/2; printf(“两个分店销售额的平均值为:%.2fn“,average); 程序执行过程:程序运行结果如 图 3.6 所示。图 3.6 题目 2 程序的运行结果说明与思考:(1)预处理命令#define 是在编译之前进行处理,即把程序中出现的 PRICE 替换成4528.6,然后再编译。(2)如果电脑销售价降为 4236.4,如何修改程序?题目 3:编写程序。依据 表 3.5 中给定数据,计算每名学生三科成绩的总分和平均分。表 3.5 学生成绩单学号 高等数学 C 语言程序设计 英语51501 78 91.6 89.551505 87.5 89 87.7分析与提示:定义两个无符号整型变量保存学号。定义六个浮点型变量保存成绩,输出时包括学号和平均分,其中总分和平均分的输出格式域宽为 7(包括符号位),保留小数2。参考程序代码:#include void main() unsigned int n1,n2;float g11=78,g12=91.6,g13=89.5,g21=87.5,g22=89,g23=87.7;float sum1,sum2,ave1,ave2;printf(“输入两个无符号整数(学号) ,用逗号间隔: “);scanf(“%u,%u“,sum1=g11+g12+g13;sum2=g21+g22+g23;ave1=sum1/3;ave2=sum2/3; printf(“t 学号tt 总分 tt 平均分n“);printf(“t%utt%7.2ftt%7.2fn“,n1,sum1,ave1);printf(“t%utt%7.2ftt%7.2fn“,n2,sum2,ave2); 程序执行过程:按提示输入数据,输出结果如 图 3.7 所示。 图 3.7 题目 3 程序的执行过程说明与思考:(1)输出函数格式中“%7.2”,表示域宽为 7,是否包括小数点?(2)如果在总分和平均分输出时,在规定的域宽内左对齐,应该如何修改输出格式?题目 4:编写程序。从键盘输入一个字符,然后,分别按十进制数、八进制数和十六进制数输出它的 ASCII 码值。分析与提示:十进制数、八进制数和十六进制数的输出格式符分别为%d、%o 、%x。参考程序代码:#include void main() char ch;printf(“输入一个字符:“);scanf(“%c“,printf(“字符 %c 的十进制数的 ASCII 码值为:%dn“,ch,ch); printf(“字符 %c 的八进制数的 ASCII 码值为:%on“,ch,ch); printf(“字符 %c 的十六进制数的 ASCII 码值为:%xn“,ch,ch); 程序执行过程:按提示输入数据,输出结果如 图 3.8 所示。图 3.8 题目 4 程序的执行过程说明与思考:如果把程序中字符变量 ch,定义为 int 或 long 类型,结果如何? 题目 5:编写程序。计算银行存款利息的扣税额。分析与提示:设本金为 a、存款年限为 n、年利率为 p、利息税为 q、到期后的扣税利息为 s。则利息的计算公式为:s=a(1+p) n-a,扣税利息:s=s (1-q)。n 次方计算可以使用标准函数 pow,(1+p) n 表示为:pow(1+p,n),使用这个函数必须在程序开始处添加预处理命令#include 。定义 float 型变量 s、a、p、q 和 int 型变量 n。假定 a=35000,n=3,p=5.00,q=0.05。算法如 图 3.9 所示。输入 a 、 n 、 p 、 q 的值s = a ( 1 + p )n- as = s ( 1 - q )输出 s 的值图 3.9 计算利息扣税的 N-S 图说明与思考:(1)如果不用 pow 函数计算 n 次方,应该如何写表达式?(2)输出格式如果要求域宽 7,保留小数 2 位,应该如何实现?3.3.2 查错实训题目 1:给定程序的功能是:输入两个数,然后按输入次序的反序输出,观察程序运行结果,分析出错的原因。程序代码:#include void main() int x,y,t;printf(“从键盘输入整型变量 x,y 的值:“);scanf(“%d%d“,x,y);t=x;x=y;y=t;printf(“x=%d,y=%dn“,x,y); 程序执行过程:按提示输入数据,输出结果如 图 3.10 所示。图 3.10 题目 1 程序的执行过程分析:程序运行结果显然是不正确的。问题出在两个方面:一是函数语句“scanf(“%d%d“,x,y);”中变量 x,y 未加求地址运算符;二是输入时数据间隔符不正确,应该以空格间隔。题目 2:给定程序的功能是:输入一个大写字母,然后输出对应的小写字母。程序代码:void main() char ch; printf(“输入一个大写字母:“);ch=getchar();ch=ch+32;printf(“对应的小写字母为:%cn“,ch); 程序执行过程:程序运行时,提示出现 1 个连接错误信息,如 图 3.11 所示。图 3.11 题目 2 程序错误信息分析:该信息的提示为“Undefined symbol _getchar in module FILE2.c”,这是一条连接时的出错信息,含义是:在模块文件 FILE2.c 中,说明 getchar 函数未被识别,原因是缺少预处理命令#include 。3.3.3 提高实训题目 1:编写程序。求方程 ax2+bx+c=0 的根(假设 a0 且 b2-4ac0) 。分析与提示:定义六个 float 型变量 a,b,c,disc,x1,x2,使用 scanf 函数输入变量a,b,c 的值(保证 b2-4ac0) ,然后计算判别式 disc=b2-4ac 和两个实根 x1、x2,最后以%f的格式输出 x1,x2。在计算 时,需要用到数学 sqrt 函数,并且在程序开始处添加预处dis理命令#include 。算法如 图 3.12 所示。 输入系数 a , b , c 的值d i s c = b b - 4 a cx 1 = - b + s q r t ( d i s c ) / ( 2 a )x 2 = - b - s q r t ( d i s c ) / ( 2 a )输出 x 1 、 x 2图 3.12 求一元二次方程根的 N-S 图题目 2:编写程序。输入两个非负整数,输出相加、相减、相乘、相除和求余运算的结果。要求以表达式的形式输出,比如 x=23,y=28 时,加法输出为 23+28=51。分析与提示:本题关键是输出格式,要想输出表达式形式,需要在格式输出函数中给出每个数据的格式,比如加法:使用语句“printf(“%d+%d=%d“,x,y,x+y);”。3.4 课外实训题目题目 1:编写程序。输入一个 3 位正整数,要求输出这个 3 位数的各个位数相加之和。比如输入的是 123,输出 1+2+3=6。分析与提示:定义 4 个整型变量 n、a、b、c,其中 n 表示 3 位数,a、b、c 分别表示 n的百位、十位和个位数,使用运算符“/”和“%”求出各位数。题目 2:编写程序。鸡兔同笼问题:已知鸡兔总数为 a,鸡兔腿总数为 b,计算鸡兔各有多少只?分析与提示:设鸡兔各有 x 只和 y 只,有如下方程式:x+y=a2x+4y=b得到解:x=(4a-b)/2y=(b-2a)/23.5 习 题一、选择题 1下列程序的输出结果是( ) 。main() char c1=97,c2=98;printf(“%d %c“,c1,c2); A97 98 B97 b Ca 98 Da b分析与答案:本题知识点是:字符数据的输出问题。字符数据在内存中保存的是一个字节的 ASCII 码值。因此和整型数据可以通用。对字符型变量既可以按%c 格式输出,也可以按%d 格式输出。本题答案: B。2若 ch 为 char 型变量,k 为 int 型变量(已知字符 a 的 ASCII 十进制表示为 97) ,则以下程序段的执行结果是( ) 。ch=a;k=12;printf(“%x,%o,“,ch,ch,k);printf(“k=%dn“,k);A因变量类型与格式描述符的类型不匹配,输出无定值B输出项与格式描述符个数不符,输出为零值或不定值C61,141,k=%d D61,141,k=%12分析与答案:本题知识点是:printf 函数中输出项目的匹配问题及%x、%o 格式的含义。第一条函数语句“printf(“%x,%o,“,ch,ch,k);”中格式符与输出项目个数不一致,只能输出两项,第二条函数语句“printf(“k=%dn“,k);”由于格式符%d 前面多一个% ,所以失去格式符的意义。本题答案:C。3设已定义 k1,k2,k3,k4 为 int 型变量,为了将整数 10 赋给 k1 和 k3,将整数 20赋给 k2 和 k4,则对应以下 scanf 语句的正确输入方式是( ) 。 scanf(“%d%d“,scanf(“%d,%d“,A1020 B10 20 C10,20 D10 201020 10 20 10,20 10,20分析与答案:本题知识点是:scanf 函数的格式问题。如果格式符“%d”之间使用间隔符,则在输入数据时也要是用样的间隔符。如果没有间隔符,则输入数据时用空格间隔。本题答案:D。4以下程序的输出为() 。#include main()double x=213.82631;printf(“%-6.2en“,x);A213.82 B21.38e+01 C2.14e+02 D-2.14e2分析与答案:本题知识点是:printf 函数的格式问题。格式字符串“%-6.2e”表示输出的数值左对齐,长度为 6 为,小数为 2 位(第 3 位小数四舍五入) ,e 小写。本题答案:C。5putchar 函数可以输出一个() 。A整型变量表达式 B实型变量值C字符串 D字符或字符型变量分析与答案:本题知识点是:putchar 函数的使用问题。该函数是输出一个字符或字符型变量。本题答案:D。6printf 函数中用到格式符“%5s ”,其中数字 5 表示输出字符串占用 5 列。如果字符串长度大于 5,则输出按方式() 。A从左起输出 5 个字符,右补空格 B按原字符串长从左向右全部输出C右对齐输出 5 个字符串 D输出错误信息分析与答案:本题知识点是:printf 函数格式中修饰符使用问题。格式字符串“%5s”在字符串长度超过 5 时,这个规定无效,原字符串正常输出。本题答案:B。7函数语句“printf(“%2.2f“,1234.5678); ”的输出结果是() 。A出错 B1234.56 C1234.57 D1234.570000分析与答案:本题知识点是:printf 函数的格式问题。格式字符串“%2.2f”含义是:域宽为 2,小数占 2 位,显然域宽和实际数据不符,所以域宽规定无效,但小数位数规定是有效的。本题答案:C。8函数语句“printf(“%0.0f“,1234.5678); ”的输出结果是() 。A出错 B1234 C1234.00 D1234.000000分析与答案:本题知识点是:printf 函数的格式问题。格式字符串“%0.0f”含义是:域宽为 0,小数占 0 位,显然域宽和实际数据不符,所以域宽规定无效,但小数位数规定是有效的。本题答案:B。9如果有输入函数语句“scanf(“a=%d,b=%d,c=%d“,” ,为使变量 a 的值为1,b 的值为 3,c 的值为 2,从键盘输入数据的正确形式应是( ) 。A132 B1,3,2 Ca=1,b=3,c=2 Da=1 b=3 c=2分析与答案:本题知识点是:scanf 函数的输入方式问题。由于 scanf 函数在输入数据时,要求格式字符串中除格式符“%d”外,其他字符必须原样输入。本题答案:C。10程序段“float a=12.89;printf(“%f“,(a,a*10);”输出的结果是( ) 。A出错 B0 C128.9 D128.900000分析与答案:本题知识点是:printf 函数的输入方式及逗号表达式运算规则的问题。逗号运算符是左结合的,表达式的值为最右边的表达式。本题答案:D。二、程序改错题目:编写程序。已知圆的半径,计算圆周长、圆面积,输出时保留小数点后两位。程序代码:#include #define PI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省建筑安全a证考试题库及答案解析
- 建筑和市政基础施工方案
- 营房保洁服务方案范本
- 护理理论考试简单题库及答案解析
- 动物从业人员考试题及答案解析
- 柠条平茬施工方案
- 业务月度工作总结
- 基金从业资格考试盐城及答案解析
- 道路施工安全风险防控方案
- 乳制品营销工作总结报告
- 新质生产力助推乡村振兴 (修正版)
- 外研版一年级上册新交际英语(2024)全册教案(单元整体教学设计)
- 2024新人教版英语七年级上单词默写表(小学部分)
- 建设工程监理安全资料(完整版)
- 高二上学期第一次月考物理试卷(附答题卷和答案)
- 全新中介和银行合作协议
- 一例感染性休克患者护理查房汇报
- 圆度、圆柱度测量仪校准规范
- 第五章牛顿运动定律之板块模型问题专题课件高一上学期物理
- 表面活性剂的基本作用
- 校园安全宿舍卫生与用电安全
评论
0/150
提交评论