1、华中科技大学计算机科学与技术学院23华中科技大学计算机科学与技术学院 C语言实验与课程设计实验报告 实验名称:流程控制实验 专业:计算机科学与技术 班级:1203班 学号:U201214869 姓名:余云凯 指导教师:甘早斌 成绩: 日期:2013年4月6日1、实验目的(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。(2)熟练运用for、while、do-while语句来编写程序。(3)练习转移语句与标号语句的使用。(4)使用集成开发环境中的调试功能:单步执行、设置断点、观
2、察变量值。2、实验内容1、源程序改错下面是计算s=n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子源程序进行调试修改,使之能够正确完成指定任务。例如,8!=40320.源程序:#includeint main() int i,n,s=1; printf(Please enter n:); scanf(%d,n); for(i=1,i=n,i+) s=s*i; printf(%d!=%d,n,s);return 0;2、源程序修改替换(1)修改上述计算s=n!的源程序,要求分别用while和do-while语句替换for语句。(2)修改上述计算s=n!的源程序,要求输
3、入改为“整数s”,输出改为“满足n! s的最小整数n”。例如输入整数为40310,输出结果为n=8 。3、程序设计编写并上机调试运行能实现以下功能的程序:(1)假设工资税金按以下方法计算:x1000元,不收取税金;1000x2000,收取5%的税金;2000x3000,收取10%的税金;3000x4000,收取15%的税金;4000x5000,收取25%的税金。编写一个程序,输入工资金额,输出应收取税金额度,要求分别用if语句和switch语句来实现。(2)编写一个程序,将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。(3)编写一个程序,打印如下的杨辉三角形。1 /*
4、第0行*/ 1 1 /*第1行*/ 1 2 1 /*第2行*/1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 每个数据值可以由组合计算(表示第i行第j列位置的值),而的计算如下:说明:本程序为了打出金字塔效果,要注意空格数目。一位数之间是3个空格,两位数之间有2个空格,三位数之间有1个空格,程序编写过程中要注意区分。(4)编写一个程序,将用户输入的任意正整数逆转。例如,输入1234,输出4321 。4、选
5、做题编写并上机调试运行能实现以下功能的程序:编写一个程序,用牛顿迭代法求方程f(x)= =0满足精度e=的一个近似根,并在屏幕上输出所求近似根。牛顿迭代法求方程近似根的迭代公式为:其中,f(x)是函数f(x)的导函数。牛顿迭代法首先任意设定的一个实数a来作为近似根的迭代初值,然后用迭代公式计算下一个近似根。如此继续迭代计算,直到精度e,此时值即为所求的近似根。3、实验步骤及结果1、源程序改错源程序错误:(1)scanf句法错误,n前面应该加上“&”;(2)for语句内部的表达式必须用分号隔开,而不是逗号;(3)return 0;语句应该放在main函数主体内部。正确程序:#includeint
6、 main() int i,n,s=1; printf(Please enter n:); scanf(%d,&n); for(i=1;i=n;i+) s=s*i; printf(%d!=%d,n,s); return 0;输出结果为:2、源程序修改替换(1)while源程序:#includeint main() int i=1,n,s=1; printf(Please enter n:); scanf(%d,&n); while(i=n) s=s*i; i+; printf(%d!=%dn,n,s); return 0;输出结果为:do-while源程序:#includeint main()
7、 int i=1,n,s=1; printf(Please enter n:); scanf(%d,&n); do s*=i; i+; while(i=n); printf(%d!=%dn,n,s); return 0;输出结果为:(2)源程序:#includeint main() int n=1,s,m=1; printf(Please enter an integer s:); scanf(%d,&s); while(ms) n+; m*=n; printf(the min n=%dn,n); return 0;输出结果为:3、程序设计(1)if源程序#includeint main(vo
8、id) float x,fee; printf(input x:); scanf(%f,&x); if(x=1000&x=2000&x=3000&x=4000&x5000) fee = x*25/100; printf(fee=%.2fn,fee); return 0;输出结果为:switch源程序:#includeint main(void) float x,fee; printf(input x:); scanf(%f,&x); switch(int)(x/1000) case 0: printf(fee=%.2fn,fee = x*0/100);break; case 1: printf
9、(fee=%.2fn,fee = x*5/100);break; case 2: printf(fee=%.2fn,fee = x*10/100);break; case 3: printf(fee=%.2fn,fee = x*15/100);break; case 4: printf(fee=%.2fn,fee = x*20/100);break; default: printf(fee=%.2fn,fee = x*25/100);break; return 0;输出结果为:(2)源程序:#include#define IN 1#define OUT 0int main(void) int
10、state=OUT; char c; printf(input a text end with ctrl+z:n); while(c=getchar()!=EOF) if(state=OUT) putchar(c); if(c= ) state=IN; if(state=IN&c!= ) state=OUT; putchar(c); return 0;输出结果为:(3)源程序:#include /#define N 10int f(int x) int y; if(x=1|x=0) y=1; else y=x*f(x-1); return y;int main() int i,j,m,N; i
11、nt y; printf(input N:); scanf(%d,&N); printf(杨辉三角形前%d行:n,N); for(i=0;iN;i+) for(j=0;jN-i+1;j+) printf( ); for(m=0;mi+1;m+) printf(%3d ,f(i)/f(m)/f(i-m); printf(n); return 0;输出结果为:(4)源程序:#includeint main(void) int x; printf(input an integer:n); scanf(%d,&x); do putchar(x%10+0); while(x/=10)!=0); prin
12、tf(n); return 0;输出结果为:4、选做题源程序:#include#include#define EPS 1e-6int main(void) double x,d; printf(input initial root:n); scanf(%lf,&x); do d=-(3*x-4)*x-5)*x+13)/(9*x-8)*x-5); x+=d; while(fabs(d)EPS); printf(x=%lfn,x); return 0;输出结果为:四、实验体会C语言程序的流程控制确实有难度。首先,在编写程序之前必须清楚的知道程序所要实现的功能是什么,要有清晰的逻辑结构;其次,还要有清楚的设计思路,要寻找到一个好的算法,这样,在编写程序时就可以节省大量的时间,少走弯路。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1