池州学院实验报告 姓 名_ 学 号 专 业 年级 1 成 绩____________ 课程名称:c语言程序设计 教师签字___________ 实验 项目 实验 目的 1.通过本实验,加深对循环控制结构有关概念的理解。 2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环结构程序设计和调试方法。 3.掌握二重循环结构程序的设计方法。 计算机 实验四 循环结构程序设计 指导教师 实验 仪器 1.用while循环实现数据统计问题。 数据统计问题:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个验 数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。调试数据仍内 参照上面给出的几种情况设计使用。 容 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。 4.阶乘累加问题。编写程序,求1+2!+3!+„+n!的值。 实 1.用while循环实现数据统计问题。 ⑴ 编程分析 验 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。循环控制条件可以有多种确定指 方法: 导 ① 使用一个负数作为数据输入结束标志。 ② 输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。 ⑵ 参考程序 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #include \"stdio.h\" void main() { int m,counter=0; while(1) { 实 第 1 页 共 6 页第 1 页 共 6 页
} printf(\"符合要求的整数个数为: %d\\n\} l 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include \"stdio.h\" void main() { int m,counter=0; char ask; while(1) { printf(\"请输入一个整数:\"); scanf(\"%d\ getchar(); if(m>=0&&m<=100)counter++; printf(\"继续输入下一个数据?(Y/N)\"); ask=getchar(); getchar(); if(ask!='y'&&ask!='Y')break; printf(\"\\n\"); } printf(\"符合要求的整数个数为: %d\\n\} ⑶ 程序调试 这里只对“参考程序一”的调试数据进行设计。该程序输入数据时,应考虑多种数据组合,对每一组数据察看并分析结果。例如: ① 输入的一组数据之间全部以空格分隔,只有最后一个数为负数,以回车键结束。如: 16 35 7 –10 ② 输入的一组数据之间全部以空格分隔,在负数之后又有正数数据,最后一个数不为负数,以回车键结束。如: 16 35 7 –10 96 17 ③ 输入的一组数据之间全部以空格分隔,输入数据中有多个负数,以回车键结束。如: 16 35 7 –10 96 17 –87 7 ④ 输入的数据中有大于100的整数。如: 16 35 7 –10 96 117 –87 267 66 ⑤ 数据之间既用空格分隔,也用回车键分隔。如: 76 35 376 22 717 96 67 第 2 页 共 6 页第 2 页 共 6 页
96 17 –87 719 66 98 2 -16 31 ⑥ 每输入一个数据后均按回车键。 ⑦ 输入的第一个数据即为负数。 ⑧ 在输入的数据中使用数值很大的整数。如: 17 66778 98765 17 899 -109 87 2.编写并调试程序,使用do-while循环控制语句实现数据统计问题。 ⑴ 参考程序 /* 使用负数作为数据输入结束标志的程序 */ ⑵ 调试指导 调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。 ⑴ 参考程序 /* 用for循环控制语句实现的数据统计问题程序 */ 注意: for循环控制语句的一般格式通常有三个表达式,本参考程序中使用的for循环控制语句在格式上只有两个表达式。请读者注意学习这种用法。 4.阶乘累加问题。 ⑴ 编程分析 ① 本实验内容是求解阶乘问题。 ② 求n!用一个循环即可实现。 ③ 求1+2!+3!+„+n!的值,需要在求n!程序之外增加一个外重循环。 ⑵ 参考程序 /* 求1+2!+3!+„+n!程序 */ ⑶ 程序调试 ① 输入一个不大的正整数,分析程序执行结果。 ② 输入一个零或者负数,分析程序执行结果。 ③ 输入一个很大的正整数,分析程序执行结果。 ④ 当程序结果不符合要求时,修改程序,直到对任何输入数据都能输出正确的执行结果,或者给出一个明确的提示信息。例如,当输入数据非法时,给出一个恰当的提示信息。 系 统 第 3 页 共 6 页第 3 页 共 6 页
(程序流程图、重要过程说明、参数设置、变量的说明等)
实 施 开始 输入m,counter Counter=0 N M<=100 Y N M<0 Y 输出 counter=counter+1 结束 (调试输入数据、结果数据或状态。给出一、两个不同的输入和结果) 1. 输入16 35 7 –10 输出 3 试 输入16 35 7 –10 96 17 输出5 输入16 35 7 –10 96 17 –87 7 输出6 报 输入16 35 7 –10 96 117 –87 267 66 输出5 告 输入17 66778 98765 17 899 -109 87 输出3 4.输入3 输出9 测 结 果 分 析 (碰到的问题、如何解决、有何体会) 程序结构掌握不熟,有待加强。多做习题,多看书。 第 4 页 共 6 页第 4 页 共 6 页
(主要的源程序代码) 1.#include \"stdio.h\" 录 void main() { int m,counter=0; while(1) { printf (“input:m”); scanf (“%d”,&m); if (m<0) break; if(m<=100) counter++; printf(“\\n”); } printf(\"%d\\n\} 2.#include “stdio.h” Void main() { int m,counter=0; do { printf(“input:m”); scanf(“%d”,&m)’ if(m<0) break; if(m<=100) counter++; printf(“\\n”); } while(1) printf(“%d\\n”,counter); } 3.#include “stdio.h” void main() { int m,counter; for(counter=0) { 附 第 5 页 共 6 页第 5 页 共 6 页
printf(“input:m”); scanf(“%d”,&m); if(m<0) break; if(m<=100) counter++; printf(“\\n”); } Printf(“%d\\n”,counter); } 4.#include “stdio.h” main() { int s=1,t,i,n; printf(“input n:”); scanf(“%d”,&n); s=0; t=1; for(i=1;i<=n;i++) { t=t*I; s=s+t; } printf(“s=%d\\n”,s); }
第 6 页 共 6 页第 6 页 共 6 页
因篇幅问题不能全部显示,请点此查看更多更全内容