第四章基本程序设计技术云南教案解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存观察 调用栈 寄存器 反汇编 线程 ……… 常用的 scanf 转换描述: 例:设有变量定义:   int n; double x; float y; 可以写语句:   scanf(%d %lf %f, n, x, y); 上面语句写成下面形式,效果一样。: scanf(%d%lf%f, n, x, y); 输入的数据之间一般通过空格分隔。 格式串里一般不写转换描述之外的东西。如果写 %d,%lf,%f 就是要求用逗号分隔输入数据,若输入时不注意就会导致数据不能正常读入。建议不要这样写。 缓冲式输入:若程序要求从标准输入取得信息(如执行scanf),我们由键盘输入,在按Enter键后程序才能得到输入数据 注:造成这种情况的原因是操作系统通常采用“缓冲式”输入方式,把来自键盘的输入临时保存在 “输入缓冲区”(操作系统管理下的一块内存区域)里,直至按了Enter键,才把缓冲区里的数据送给程序,这时scanf等输入函数才能读到数据 程序经常需要输入一批数据,就可以用计数器控制输入循环。如由各月降雨量统计一年总量: #include stdio.h ? int main() { double x, sum; int n; for (sum = 0, n = 0; n 12; ++n) { printf(Enter next data: ); scanf(%lf, x); sum += x; } printf(Annual Precipitation: %f\n, sum); return 0; } 采用“结束标志” 控制循环 例,计算货物总值,每次输入单价和数量。可考虑用特殊值通知程序数据已输入完,例如用单价为0。 #include stdio.h int main() { double price = 1.0, amount, sum = 0.0; while (price != 0) { printf(Next data (price amount): ); scanf(%lf %lf, price, amount); sum += price * amount; } printf(Total price: %f\n, sum); return 0; } 问题 特殊标志不是很容易找到的,例如求若干个数的平均数,0可能是其中之一 scanf是一个函数 int scanf( const char *format, ... ); 返回值是int类型 返回1表示成功读入一项数据,并存入了 x 返回0表示读入数据失败 返回EOF值表示遇到文件结束 EOF(End Of File)没有资源可以读取,其值是-1 例:读入一些圆盘半径,算出各圆盘的面积并输出。不知圆盘数,可利用scanf的返回值控制循环结束 #include stdio.h void pc_area (double r) {/* 定义略 */} int main () { double x; while (scanf(%lf, x) == 1) if (x 0) printf(Input error: %f\n, x); else pc_area(x); return 0; } /* 什么情况下循环结束? */ 遇到文件结束或错误数据时 scanf 不返回1。如果上面程序遇到输入字母m,转换失败就会导致循环结束。 问题 统计一批输入数据的个数和最小值/最大值/平均值 思路: 将读取的数字保存在临时变量中 利用变量保存当前读入的最大值和最小值,如有需要就更新, 利用变量保存累加值和读取次数,最后算出平均值 #include stdio.h int main () { double sum = 0.0, biggest, smallest, x; int count = 1; scanf(%lf, sum); biggest = smallest = sum; while (scanf(%lf, x) == 1) { sum += x; count++; if (x biggest) biggest = x; if (x smallest) smallest = x; } … /* 输出结果,略 */ r

文档评论(0)

阿里山的姑娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档