第2章 循环结构程序设计
来源:互联网 发布:个人如何成为淘宝卖家 编辑:程序博客网 时间:2024/05/18 03:49
(1)分支循环
提示2-1: for循环的格式为:for(初始化;条件;调整)循环体;
提示2-2:尽管for循环反复执行相同的语句,但这些语句每次的执行效果往往不同。--------循环体与循环变量有关,循环变量每次循环都发生变化
提示2-3:编写程序时,要特别留意"当前行”的跳转和变量的改变。--------可以通过调试工具观察
提示2-4:不拘一格的使用伪代码来思考和描述算法是一种值得推荐的做法。
提示2-5:把伪代码改写成代码时,一般先选择较为容易的任务来完成。
提示 2-6:浮点运算可能存在误差。在进行浮点数比较时,应考虑到浮点误差。
判断一个浮点数中存的是否是整数的方法------断整数只需用它和它的整数部分比较即可
double m=3;
if( floor(m+0.5) == m) printf("%d\n",n);
函数floor(x)返回x的整数部分,那么为什么不直接比较floor(m)和m呢?原因在于:浮点数的运算(和函数)有可能存在误差——不是一定存在,但经常都会。
假设在经过大量计算后,由于误差的影响,整数1变成了0.9999999999,floor的结果会是0而不是1!为了减小误差的影响,我们一般改成四舍五入,即floor(x+0.5)。continue;语句跳出本次循环break;语句跳出整个循环
当循环次数确定,并且循环变量有规律的固定变化时,可以用for循环
当循环的次数是不确定的,并且循环变量有规律的不固定变化时,可以用while循环
提示2-7:while循环的格式为“while(条件)循环体;”
提示2-8:当需要统计某种事物的个数时,可以用一个变量来充当计数器。
提示2-9:不要忘记测试。一个看上去正确的程序可能隐含错误。
提示2-10:在观察无法找出错误时,可以用“输出中间结果"的方法查错。
注意:本身输入合法不溢出,但经过运算后有可能会溢出,编程的过程中需要考虑这一点。因为过程中的溢出,同样会造成最终结果的错误。常用方法:取一个整数的后n位时,可以用该整除对10的n次方取模(取余)
提示2-11:在循环体开始处定义的变量,每次执行循环体时会重新声明并初始化。
提示2-12:要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。---------------编程常用方法
#include<stdio.h>#include<time.h> int main(){const int MOD = 1000000; int i, j, n, S = 0; scanf("%d", sn); for(i = 1; i <= n; i++){int factorial = 1;for(j = 1; j <= i; j++)factorial = (factorial * j % MOD); S = (S + factorial) % MOD;printf("%d\n", S) ;printf("Time used = %.21f\n", (double)clock() / CLOCKS_PER_SEC);return 0;}
计时函数clock():返回程序目前为止运行的时间。这样,在程序结束之前调用它,便可获得整个程序的运行时间。这个时间除以常数CLOCKS_PER_SEC之后得到的值以“秒”为单位。
提示2-13: 可以使用time.h和clock()函数获得程序运行时间。常数CLOCKS_PER_SEC和 操作系统相关,请不要直接使用clock()的返回值,而应总是除以CLOCKS_PER_SEC。
注意 整数/整数结果为整数,想得到浮点数,要一方为浮点数才行
注意:键盘输入的时间也被计算在内了——它的确是程序启动之后才进行的。为了避免输入数据的时间影响测试结果,我们使用一种称之为管道的小技巧:在Windows命令行下执行echo 20|abc,操作系统会自动帮你把20输入,其中abc是你的程序名。
提示2-14:很多程序的运行时间与规模n存在着近似的简单关系。可以通过计时函数来发现或验证这一关系。
经验:25!末尾有6个0,所以从第5项开始,后面的所有项都不会影响和的末6位数字一只需 要在裎序的最前面加一条语句“if(n>25) n=25;”,效率和溢出都不成问题了。
(2)文件操作
提示2-15:在Windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再按Enter键, 即可结束输入。在Linux下,输入完毕后按Ctrl+D键即可结束输入。
提示2-16:变量在未赋值之前的值是不确定的。特别地,它不一定等于0。
提示 2-17:请在比赛之前了解文件读写的相关规定:是标准输入输出(也称标准I/O,即直 接读键盘、写屏幕)还是文件输入输出?如果是文件输入输出,是否禁止用重定向方式访问文件?
提示2-18:在算法竞赛中,选手应严格遵守比赛的文件名规定,包括程序文件名和输入输出文件名。不要弄错大小写,不要拼错文件名,不要使用绝对路径或相对路径。
- 第2章 循环结构程序设计
- 第2章 循环结构程序设计
- 第2章 循环结构程序设计 习题
- 第2章 循环结构程序设计
- 第6章 循环结构程序设计
- 第02章_循环结构程序设计
- 第3章循环结构程序设计练习
- 第1章& 第2章 程序设计入门&循环结构程序设计
- 第六章 循环结构程序设计
- 第二章 循环结构程序设计
- 第二章 循环结构程序设计
- 第二章 循环结构程序设计
- 2014-C第2周项目——初步体验分支结构和循环结构的程序设计 4 用星号图体验循环结构程序设计
- C++第4次实验—循环结构程序设计
- 第6章 循环结构
- 第5章循环结构
- 第六章 循环结构的程序设计
- 第二章循环结构程序设计习题
- 浅谈PHP在各系统平台下的换行符
- 如何才能成为优秀的产品经理(三)
- HDU 1251 统计难题
- 黑马程序员-集合类Collection之List接口
- 如何从后台子shell中把状态传出来
- 第2章 循环结构程序设计
- UML类图几种关系的总结
- 集合
- PHP 简单处理 XML
- Qt调用javascript初窥 (一)
- 第2.1节 Activity生命周期
- xxx定律
- 设计模式详解
- 前Google CIO创立、以大数据为基础的信用及承销评估分析平台ZestFinance获2000万美元C轮融资