华中科技大学计算机科学与技术学院23.docx

上传人:b****4 文档编号:5038084 上传时间:2022-12-12 格式:DOCX 页数:12 大小:176.12KB
下载 相关 举报
华中科技大学计算机科学与技术学院23.docx_第1页
第1页 / 共12页
华中科技大学计算机科学与技术学院23.docx_第2页
第2页 / 共12页
华中科技大学计算机科学与技术学院23.docx_第3页
第3页 / 共12页
华中科技大学计算机科学与技术学院23.docx_第4页
第4页 / 共12页
华中科技大学计算机科学与技术学院23.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

华中科技大学计算机科学与技术学院23.docx

《华中科技大学计算机科学与技术学院23.docx》由会员分享,可在线阅读,更多相关《华中科技大学计算机科学与技术学院23.docx(12页珍藏版)》请在冰豆网上搜索。

华中科技大学计算机科学与技术学院23.docx

华中科技大学计算机科学与技术学院23

华中科技大学计算机科学与技术学院

《C语言实验与课程设计》实验报告

 

实验名称:

流程控制实验

 

专业:

计算机科学与技术

班级:

1203班

学号:

U201214869

姓名:

余云凯

指导教师:

甘早斌

成绩:

 

日期:

2013年4月6日

 

1、实验目的

(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。

(2)熟练运用for、while、do-while语句来编写程序。

(3)练习转移语句与标号语句的使用。

(4)使用集成开发环境中的调试功能:

单步执行、设置断点、观察变量值。

2、实验内容

1、源程序改错

下面是计算s=n!

的源程序,在这个源程序中存在若干语法和逻辑错误。

要求在计算机上对这个例子源程序进行调试修改,使之能够正确完成指定任务。

例如,8!

=40320.

源程序:

#include

intmain()

{inti,n,s=1;

printf("Pleaseentern:

");

scanf("%d",n);

for(i=1,i<=n,i++)

s=s*i;

printf("%d!

=%d",n,s);

}

return0;

2、源程序修改替换

(1)修改上述计算s=n!

的源程序,要求分别用while和do-while语句替换for语句。

(2)修改上述计算s=n!

的源程序,要求输入改为“整数s”,输出改为“满足n!

s的最小整数n”。

例如输入整数为40310,输出结果为n=8。

3、程序设计

编写并上机调试运行能实现以下功能的程序:

(1)假设工资税金按以下方法计算:

x<1000元,不收取税金;1000

x<2000,收取5%的税金;2000

x<3000,收取10%的税金;3000

x<4000,收取15%的税金;4000

x<5000,收取20%的税金;x>5000,收取25%的税金。

编写一个程序,输入工资金额,输出应收取税金额度,要求分别用if语句和switch语句来实现。

(2)编写一个程序,将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。

(3)编写一个程序,打印如下的杨辉三角形。

1/*第0行*/

11/*第1行*/

121/*第2行*/

1331

14641

15101051

1615201561

172135352171

18285670562881

193684126126843691

每个数据值可以由组合

计算(表示第i行第j列位置的值),而

的计算如下:

说明:

本程序为了打出金字塔效果,要注意空格数目。

一位数之间是3个空格,两位数之间有2个空格,三位数之间有1个空格,程序编写过程中要注意区分。

(4)编写一个程序,将用户输入的任意正整数逆转。

例如,输入1234,输出4321。

4、选做题

编写并上机调试运行能实现以下功能的程序:

编写一个程序,用牛顿迭代法求方程f(x)=

=0满足精度e=

的一个近似根,并在屏幕上输出所求近似根。

牛顿迭代法求方程近似根的迭代公式为:

其中,f’(x)是函数f(x)的导函数。

牛顿迭代法首先任意设定的一个实数a来作为近似根的迭代初值

,然后用迭代公式计算下一个近似根

如此继续迭代计算

,直到

精度e,此时值

即为所求的近似根。

3、实验步骤及结果

1、源程序改错

源程序错误:

(1)scanf句法错误,n前面应该加上“&”;

(2)for语句内部的表达式必须用分号隔开,而不是逗号;

(3)return0;语句应该放在main函数主体内部。

正确程序:

#include

intmain()

{

inti,n,s=1;

printf("Pleaseentern:

");

scanf("%d",&n);

for(i=1;i<=n;i++)

s=s*i;

printf("%d!

=%d",n,s);

return0;

}

输出结果为:

2、源程序修改替换

(1)while源程序:

#include

intmain()

{

inti=1,n,s=1;

printf("Pleaseentern:

");

scanf("%d",&n);

while(i<=n)

{

s=s*i;

i++;

}

printf("%d!

=%d\n",n,s);

return0;

}

输出结果为:

do-while源程序:

#include

intmain()

{

inti=1,n,s=1;

printf("Pleaseentern:

");

scanf("%d",&n);

do{

s*=i;

i++;

}while(i<=n);

printf("%d!

=%d\n",n,s);

return0;

}

输出结果为:

(2)源程序:

#include

intmain()

{

intn=1,s,m=1;

printf("Pleaseenteranintegers:

");

scanf("%d",&s);

while(m

{

n++;

m*=n;

}

printf("theminn=%d\n",n);

return0;

}

输出结果为:

3、程序设计

(1)if源程序

#include

intmain(void)

{

floatx,fee;

printf("inputx:

");

scanf("%f",&x);

if(x<1000)

{

fee=x*0/100;

printf("fee=%.2f\n",fee);

}

if(x>=1000&&x<2000)

{

fee=x*5/100;

printf("fee=%.2f\n",fee);

}

if(x>=2000&&x<3000)

{

fee=x*10/100;

printf("fee=%.2f\n",fee);

}

if(x>=3000&&x<4000)

{

fee=x*15/100;

printf("fee=%.2f\n",fee);

}

if(x>=4000&&x<5000)

{

fee=x*20/100;

printf("fee=%.2f\n",fee);

}

if(x>5000)

{

fee=x*25/100;

printf("fee=%.2f\n",fee);

}

return0;

}

输出结果为:

switch源程序:

#include

intmain(void)

{

floatx,fee;

printf("inputx:

");

scanf("%f",&x);

switch((int)(x/1000))

{

case0:

printf("fee=%.2f\n",fee=x*0/100);break;

case1:

printf("fee=%.2f\n",fee=x*5/100);break;

case2:

printf("fee=%.2f\n",fee=x*10/100);break;

case3:

printf("fee=%.2f\n",fee=x*15/100);break;

case4:

printf("fee=%.2f\n",fee=x*20/100);break;

default:

printf("fee=%.2f\n",fee=x*25/100);break;

}

return0;

}

输出结果为:

(2)源程序:

#include

#defineIN1

#defineOUT0

intmain(void)

{

intstate=OUT;

charc;

printf("inputatextendwithctrl+z:

\n");

while((c=getchar())!

=EOF)

{

if(state==OUT)

{

putchar(c);

if(c=='')state=IN;

}

if(state==IN&&c!

='')

{

state=OUT;

putchar(c);

}

}

return0;

}

输出结果为:

(3)源程序:

#include

//#defineN10

intf(intx)

{

inty;

if(x==1||x==0)

y=1;

else

y=x*f(x-1);

returny;

}

intmain()

{

inti,j,m,N;

inty;

printf("inputN:

");

scanf("%d",&N);

printf("杨辉三角形前%d行:

\n",N);

for(i=0;i

{

for(j=0;j

printf("");

for(m=0;m

printf("%3d",f(i)/f(m)/f(i-m));

printf("\n");

}

return0;

}

输出结果为:

(4)源程序:

#include

intmain(void)

{

intx;

printf("inputaninteger:

\n");

scanf("%d",&x);

do

putchar(x%10+'0');

while((x/=10)!

=0);

printf("\n");

return0;

}

输出结果为:

4、选做题

源程序:

#include

#include

#defineEPS1e-6

intmain(void)

{

doublex,d;

printf("inputinitialroot:

\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=%lf\n",x);

return0;

}

输出结果为:

四、实验体会

C语言程序的流程控制确实有难度。

首先,在编写程序之前必须清楚的知道程序所要实现的功能是什么,要有清晰的逻辑结构;其次,还要有清楚的设计思路,要寻找到一个好的算法,这样,在编写程序时就可以节省大量的时间,少走弯路。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1