C语言计数型循环测试方法,C语言循环实验报告

1 实验名 循环结构 实验目的 1 掌握在程序设计条件型循环结构时 如何正确地设定循环条件 以及如何控制循环 的次数 2 了解条件型循环结构的基本测试方法 3 掌握如何正确地控制计数型循环结构的次数 4 了解对计数型循环结构进行测试的基本方法 5 了解在嵌套循环结构中 提高程序效率的方法 二 实验内容 一一 题目题目 1 1 1 题目内容描述 1 下面是一个计算 e 的近似值 使误差小于给定的 的程序 main double e 1 0 x 1 0 y detax int i 1 printf n please input enter a error scanf lf y 1 x while y detax x x I y 1 x e e y i printf 12 10lf e 2 实验步骤 1 阅读上面的程序 写出程序所依据的计算公式 2 当输入的 detax 各是什么值时 能分别使程序按下面的要求运行 不进入循环 只循环一次 只 循环两次 进入死循环 程序将永远循环下去 为了能知道程序循环了多少次 应该在程序中增加一 条什么样的语句 3 原程序中 while 语句中的 y detax 分别换成 y detax y detax y detax y detax 观察程序 运行将会有什么变化 假如不知道机器内的程序中的各语句实际上是什么 分别输入什么样的 detax 来 测试出 while 语句的循环条件写错了 4 把原程序中 while 语句之前的 y 1 x 语句去掉 观察程序的运行将会发生什么样 的变化 假如 不知道机器内的程序实际上是怎么写的 输入什么样的 detax 就能测试出少了上述 这条语句 5 若把原程序中的 i 换成 i 观察程序的运行发生了什么变化 假如不知道这条语句到底是怎么 写的 输入什么样的 detax 就能测试出这条语句写错了 2 6 把原程序中的 while 结构改写成 do while 结构 再分别按上述的 2 3 两步进 行实验 2 输入和输出信息描述及数据类型确定 1 输入数据 序号 输入数据描述 数据类型 1e x y detaxdouble 2iint 2 输出数据 序号 输出数据描述 数据类型 1Edouble 3 程序源代码 填写程序调试正确后的代码 include int main double e x y detax int i e 1 0 x 1 0 i 1 0 printf please input enter a error n scanf lf y 1 x while y detax x x i y 1 x e e y i printf 12 10lf e return 0 7 程序调试 错误 序号 错误信息 列出出错语句以及出 错提示 是否 解决 解决方法 1格式不对是手动调整 2warning return type defaults to int Wreturn type 是在main 前加上int 3error stray 243 in program error stray 273 in program 是 将double e 1 0 x 1 0 y detax int i 1 改为double e x y detax int i e 1 0 x 1 0 i 1 0 4D 程序 e近似值 main c In function main error stray 241 in program 是将printf n please input enter a error 改为printf please input enter a error n 5error stray 241 in program 是将scanf lf 改为 6error I undeclared first 是将I改为i 3 use in this function 7c 19 error stray 241 in program 是将printf 12 10lf e 改为 printf 12 10lf e 8c 20 warning control reaches end of non void function Wreturn type 是在后一个大括号前加上return 0 8 测试与结果分析 1 测试数据与结果 测试 序号 测试用例选取原 因 测试输入 数据 测试输出结果是否 正确 结果分析 1不循环21 0000000000是 2循环一次12 5000000000是 3循环两次0 72 5000000000是 死循环0无是 2 2 相关问题回答 相关问题回答 1 阅读上面的程序 写出程序所依据的计算公式 答 e 1 1 2 1 6 1 i 2 当输入的 detax 各是什么值时 能分别使程序按下面的要求运行 不进入循环 只循环一次 只 循环两次 进入死循环 程序将永远循环下去 为了能知道程序循环了多少次 应该在程序中增加一 条什么样的语句 答 大于1不进入循环 等于1只循环一次 大于0 5小于1只循环两次 等于0进入死循环 程序将永远循环 下去 应增加printf i d i 1 3 原程序中 while 语句中的 y detax 分别换成 y detax y detax y detax ydetax 输入不小于1时不进行循环 输出1 输入小于1时则会进行循环 y detax 当输入为0时 y被赋值为0 直接结束循环 当输入不为0 则进入死循环 y detax 输入不大于1时不进行循环 输出 为1 输入大于1时则进入死循环 y detax 输入不小于1时进入死循环 输入小于1则不进行循环 输出 1 分别输入3 0 5 1即可 4 把原程序中 while 语句之前的 y 1 x 语句去掉 观察程序的运行将会发生什么样 的变化 假如 不知道机器内的程序实际上是怎么写的 输入什么样的 detax 就能测试出少了上述 这条语句 答 输入1 5 若把原程序中的 i 换成 i 观察程序的运行发生了什么变化 假如不知道这条语句到底是怎么 写的 输入什么样的 detax 就能测试出这条语句写错了 6 把原程序中的 while 结构改写成 do while 结构 再分别按上述的 2 3 两步进 行实验 答 2 步与原来 while 相同 3 步当有的输入条件不符合判断条件时 仍会先进行一次循环后结束 而 while 则直接结束 include int main double e x y detax 定义变量 int i e 1 0 赋值 x 1 0 i 1 0 4 printf n please input enter a error scanf lf 输入detax y 1 x do x x i y 1 x e e y i while y detax 执行do while循环 printf 12 10lf n e 输出 printf i d n i 2 二二 题目题目2 2 1 1 题目内容描述 题目内容描述 下面是一个用以计算 的 C 程序 main int i j long sum 0 for i 1 i 20 i for j 1 j 3 j sum sum i 1 i 1 j 2 printf sum is d n sum 2 实验步骤 1 将上述程序中的和分别做什么样修改 能使程序按如下要求运行 不循环 外循环 1 次 不进 入内循环 外循环 内循环各 1 次 外循环 1 次 内循环 2 次 外循环 2次 内循环 1 次 外循环 19 次 内循环 3 次 外循环 20 次 内循环 2 次 外循环 21 次 内循环 3 次 2 试修改程序 以便能知道控制表达式 i 1 j 20 i 和 j 1 j 3 j 各执行了多少次 3 内循环与外循环的控制表达式进行对换 观察程序的执行结果有无变化 并且观 察对换后的外循环 与内循环控制表达式执行的总次数有无变化 4 将 3 中程序写为 main int i j k long sum 0 for j 1 j 3 j k j 2 for i 1 i 20 i sum sum i 1 i 1 k printf sum is d n sum 观察程序的执行结果有无变化 5 5 将 3 中程序改写为 main int I j m n long sum 0 for j 1 j 3 j m j 2 for I 1 j 20 I n I 1 sum sum m m k printf sum is d n sum 观察程序的执行结果有无变化 6 在 5 的程序中 若将外循环控制表达式分别做如下修改 j 1 j 3 j j 1 j 3 j j 1 j3 j j 1 j 3 j j 0 j 3 j j 0 j 3 j j 1 j 3 j j 1 j 3 j 观察程序的执行结果有无变化 2 2 输入和输出信息描述及数据类型确定 输入和输出信息描述及数据类型确定 1 输入数据 序号 输入数据描述 数据类型 1 I j int 2sumlong int 2 输出数据 序号 输出数据描述 数据类型 1sumLong int 3 3 程序源代码 填写程序调试正确后的代码 程序源代码 填写程序调试正确后的代码 include main int i j long sum 0 for i 1 i 20 i for j 1 j 3 j sum sum i 1 i 1 j 2 printf sum is d n sum 4 程序调试 程序调试 错误错误信息 列出出错语句以及出错提示 是否 解决方法 6 序号解决 1 6 warning value computed is not used Wunused value 是将for i 1 i 20 i 改为 for i 1 i3 j 外循环 内循环各1次 改为for i 1 i 1 i for j 1 j 1 j 外循环1次 内循环2次 改为for i 1 i 1 i int j 1 for j 2 j 外循环2次 内循环1次 改为for i 1 i 2 i for j 2 j 外循环19次 内循环3次 改为for i 1 i 19 i int j 1 for j 3 j 外循环20次 内循环2次 改为 for i 1 i 20 i int j 1 for j 2 j 外循环21次 内循环3次 改为for i 1 i 21 i int j 1 for j 3 j 2 试修改程序 以便能知道控制表达式 i 1 j 20 i 和 j 1 j 3 j 各执行了多少次 答 添加printf i d j d i j 分别执行60和20次 3 内循环与外循环的控制表达式进行对换 观察程序的执行结果有无变化 并且观 察对换后的外循环 与内循环控制表达式执行的总次数有无变化 答 无 次数外循环3次 内循环60次 内循环不变 外循环次数改变 4 将 3 中程序改写观察程序的执行结果有无变化 无 5 将 3 中程序改写 观察程序的执行结果有无变化 无 6 在 5 的程序中 若将外循环控制表达式分别做如下修改 j 1 j 3 j j 1 j 3 j j 1 j3 j j 1 j 3 j j 0 j 3 j j 0 j 3 j j 1 j 3 j j 1 j 3 j 观察程序的执行结果有无变化 答 1 j 1 j 3 j 结果0 4 j 1 j 3 j 结果 0 5 j 1 j3 j 结果不运行 7 j 1 j 3 j 结果23170 8 j 0 j 3 j 结果有错 9 j 0 j 3 j 结果29790 10 j 1 j 3 j 结果39720 11 j 1 j 3 j结果23170 三三 题目题目3 3 1 题目内容描述 7 绘制等腰空心梯形 下底和高都为输入变量n n 5时 打印图形如 右 2 程序源代码 填写程序调试正确后的代码 include int main int i x n j 定义变量 printf please enter the n scanf d 输入格式 for i n i 1 i for j 0 j n i j printf 当j小于n i时循环输出空格 for x 1 x1 若满足条件则打印空格 if x 1 x 2 i n 2 i 1 i n printf 若满足则打印 printf n 换行 return 0 3 测试与结果分析 1 测试数据与结果 测试 序号 测试用 例选取 原因 测试输入 数据 测试输出结果是否 正确 结果分 析 16正确 28正确 8 313正确 四四 题目题目4 4 1 题目内容描述 想一个1 100之间的数 猜对 right 猜错 wrong并提示大小 1 最多猜10次猜多个数 2 10次猜 不对就猜下一个数 6 程序源代码 填写程序调试正确后的代码 猜十次 include include 预处理magic include 时间函数 int main int magic number i 定义变量 i 1 srand time NULL magic rand 100 1 产生随机数 for i 1 i 10 i printf 请输入你猜的数字 n scanf d 输入number if numbermagic printf 数字略大 n 若大于则输出该语句 else if number magic printf 你猜对了 n break 正确则输出你猜对了 停止循环 if i 10 printf 你已经猜错十次 游戏结束 n 十次都猜错则输出该语句 return 0 9 猜多个 include include 预处理magic include 时间函数 int main int magic number i 定义变量 i 0 char reply do srand time NULL magic rand 100 1 产生随机数 for i 0 i 10 i 进入循环 猜十次 printf 请输入你猜的数字 n scanf d 输入number if numbermagic printf 数字略大 n 若大于则输出该语句 else if number magic printf 你猜对了 n break 正确则输出你猜对了 停止循环 printf 你要继续玩吗 Y N or y n getchar 清除回车符 while reply Y reply y 用do while循环处理已知结束条件 printf 游戏结束 n return 0 以上两个程序因数据过大 故没有写测试用例 但我已经试过无误

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值