多重循环、缓冲区管理、数组(day06)
无法预知的数字叫随机数 rand标准函数可以用来获得随机数 为了使用这个标准函数需要包含stdlib.h头文件 srand标准函数用来设置随机数种子 这个函数把一个整数作为种子使用 不同的种子产生的随机数不同 为了使用这个标准函数也需要包含stdlib.h头 文件 time标准函数可以用来获得当前时间 这个函数用一个整数表示当前的时间 同一秒之内这个用来代表时间的整数是同一个 为了使用这个标准函数需要包含time.h头文件 任何程序只需要设置一次随机数种子 分支和循环都可以让程序中的语句不再从上到下 顺序执行,它们都叫做流程控制语句 goto也是流程控制语句 goto语句可以把任何一条语句指定成下一条 语句 一般不要使用goto语句 如果一个问题可以用多组数字的变化过程描述, 并且不同数字的变化频率不同就可以采用 多重循环结构解决。 编写多重循环的时候外部循环变量应该用来代表 变化慢的数字,内部循环变量应该用来代表 变化快的数字 while关键字也可以用来编写循环 不适合采用for关键字编写的循环再考虑 用while关键字编写 while循环格式如下 while (逻辑表达式) { 反复执行的语句 } 反复执行大括号里面的语句直到逻辑表达式 结果为假 while循环会交替执行逻辑表达式的计算和大括号 里面的语句 while循环第一步计算逻辑表达式的结果 当逻辑表达式为假的时候循环结束 while循环有可能不执行大括号里面的语句 while循环的逻辑表达式如果永远为真(比如1) 就成为死循环 while循环里也可以使用break;和continue;语句 do...while关键字也可以用来编写循环 do...while循环格式如下 do { 反复执行的语句 } while (逻辑表达式); do...while循环小括号后面必须用分号结束 do...while循环也会交替执行逻辑表达式的 计算和大括号里面的语句 do...while循环第一步执行大括号里面的语句 do...while循环可以保证大括号里面的语句 至少执行一次 scanf函数获得数字的时候数字首先从键盘 进入输入缓冲区,然后从输入缓冲区 进入程序的存储区 先进入输入缓冲区的数字必须先处理,前面 的数字没有处理完就不能处理后面的数字 如果用户输入的格式和程序里要求的格式不 一样就无法处理以后用户输入的数字 可以使用如下两条语句把用户某一次输入的 所有内容都从输入缓冲区里丢掉 scanf("%*[^\n]"); scanf("%*c"); printf函数显示数字的时候首先把数字放在 输出缓冲区里然后再显示在屏幕上 输出缓冲区里的内容在以下四种情况下才会 出现在屏幕上 1.如果输出缓冲区里包含'\n'换行字符则 换行字符前面的内容会显示在屏幕上 2.程序结束后它放在输出缓冲区里的内容会 显示在屏幕上 3.当输出缓冲区被充满的时候它里面的内容 会显示在屏幕上 4.使用fflush(stdout)语句可以强制把输出 缓冲区里的内容显示在屏幕上 数组用来代表内存里一组连续的同类型存储区 这些存储区叫做数组的元素 数组也需要先声明然后才能使用 声明数组时也需要提供类型名称和数组命令, 另外还需要提供一个整数用来表示数组里 的存储区个数 数组一旦存在则里面存储区的个数就不可以 改变了 数组通常不会作为整体使用,一般一次只 使用其中的某个存储区 数组里每个存储区有一个编号,这个编号 叫做下标 有效下标范围从0开始到存储区个数减一为止, 超过范围的下标不能使用 使用数组名称和下标就可以表示数组里的某个 存储区 可以使用for循环依次处理数组里的每个存储区 在这个for循环里循环变量依次代表每个有效 下标 数组也应该初始化 初始化数组的时候可以提供多个初始化数据, 它们应该写在一对大括号中间,相邻数据 之间用逗号分开 如果初始化数据的个数比存储区的个数多 就忽略后面的初始化数据 如果初始化数据的个数比存储区的个数少 就把后面的存储区初始化成0 如果初始化数据个数和存储区个数一样就可以 省略数组声明里的存储区个数