C语言程序设计实验报告23.docx
- 文档编号:11559928
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:15
- 大小:81.95KB
C语言程序设计实验报告23.docx
《C语言程序设计实验报告23.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验报告23.docx(15页珍藏版)》请在冰豆网上搜索。
C语言程序设计实验报告23
C语言程序设计实验报告
专业班级日期11月26日成绩
实验组别第2(2.3)次实验指导教师李开
学生姓名学号同组人姓名
实验名称流程控制实验
一、实验目的
(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。
(2)熟练运用for、while、do-while语句来编写程序。
(3)练习转移语句和标号语句的使用。
(4)使用集成开发环境中的调试功能:
单步执行、设置断点、观察变量值。
二、实验任务
3.2实验内容及要求
1.源程序改错
下面是计算s=n!
的源程序,在这个源程序中存在若干语法和逻辑错误。
要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。
例如,8!
=40320。
#include
voidmain()
{inti,n,s=1;
printf("Pleaseentern:
");
scanf("%d",n);
for(i=1,i<=n,i++)
s=s*i;
printf("%d!
=%d",n,s);
}
2.源程序修改替换
(1)修改第1题,分别用while和do-while语句替换for语句。
(2)修改第1题,输入改为“整数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列位置的值),而
的计算如下:
(i=0,1,2,…)
(j=0,1,2,3,…,i)
本程序中为了打印出金字塔效果,要注意空格的数目。
一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。
(4)编写一个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。
4.选做题
编写一个程序,用牛顿迭代法求方程
满足精度e=10-6的一个近似根,并在屏幕上输出所求近似根。
牛顿迭代法:
求方程近似根的迭代公式为
,其中
是函数f(x)的导函数。
牛顿迭代法首先任意设定的一个实数
来作为近似根的迭代初值x0,然后用迭代公式计算下一个近似根x1。
如此继续迭代计算x2,x3,…,xn,直到
,此时值xn即为所求的近似根。
2.3:
1.源程序改错:
(源程序)
#include
voidmain()
{inti,n,s=1;
printf("Pleaseentern:
");
scanf("%d",n);
for(i=1,i<=n,i++)
s=s*i;
printf("%d!
=%d",n,s);
}
运行结果:
(修改后程序)
#include
intmain(void)
{
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)修改第1题,分别用while和do-while语句替换for语句。
(while)
#include
intmain(void)
{
inti=1,n,s=1;
printf("Pleaseentern:
");
scanf("%d",&n);
while(i<=n){
s=s*i;
i++;}
printf("%d!
=%d",n,s);
return0;
}
(do-while)
#include
intmain(void)
{
inti=1,n,s=1;
printf("Pleaseentern:
");
scanf("%d",&n);
do
{s=s*i;
i++;}
while(i<=n);
printf("%d!
=%d",n,s);
return0;
}
(2)修改第1题,输入改为“整数S”,输出改为“满足n!
≥S的最小整数n”。
例如输入整数40310,输出结果为n=8。
#include
intmain(void)
{
inti,n=1,s;
printf("Pleaseenters:
");
scanf("%d",&s);
for(i=1;n
n=n*i;
printf("%d!
>=%d",i-1,s);
return0;
}
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语句来实现。
(switch语句)
#include
voidmain()
{
printf("输入你的工资");
intt;
floatx;
scanf("%f",&x);
t=(int)(x/1000.0);
switch(t){
case0:
printf("notax!
\n");
break;
case1:
printf("%f\n",0.05*x);
break;
case2:
printf("%f\n",0.10*x);
break;
case3:
printf("%f\n",0.15*x);
break;
case4:
printf("%f\n",0.20*x);
break;
case5:
printf("%f\n",0.25*x);
break;
default:
printf("%f\n",0.25*x);
break;
}
return0;
}
(if语句)
#include"stdio.h"
intmain(intargc,char*argv[])
{
floatx,tax;
scanf("%f",&x);
if(x<0)
{
printf("Wronginput.\n");
return1;
}
if(x<1000)
{
tax=0.00;
}
elseif(x>=1000&&x<2000)
{
tax=0.05*x;
}
elseif(x>=2000&&x<3000)
{
tax=0.10*x;
}
elseif(x>=3000&&x<4000)
{
tax=0.15*x;
}
elseif(x>=4000&&x<5000)
{
tax=0.20*x;
}
else
{
tax=0.25*x;
}
printf("Taxofsalary%.2fYUANis%.2fYUAN.\n",x,tax);
}
(2)将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。
#include
intmain()
{
charc,flag;
for(flag=0;(c=getchar())!
='\n';)
{
if(c==''){
if(flag==0){
putchar(c);
flag=1;
}
}
else{
putchar(c);
flag=0;
}
}
return0;
}
(3)打印如下杨辉三角形。
1/*第0行*/
11/*第1行*/
121/*第2行*/
1331
14641
15101051
1615201561
172135352171
18285670562881
193684126126843691
每个数据值可以由组合
计算(表示第i行第j列位置的值),而
的计算如下:
(i=0,1,2,…)
(j=0,1,2,3,…,i)
本程序中为了打印出金字塔效果,要注意空格的数目。
一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。
#include
intCombination(inta,intb);
intTriangle(intn);
intmain(void){
printf("inputthenumberfortriangleofYanghui\n");
Triangle(9);
}
intCombination(inta,intb){
intt,p,s=1,q=1;
if(a==0||b==0){
printf("%4d",q);
}
else{
for(t=b-a+1;t<=b;t++){
s=s*t;
}
for(p=1;p<=a;p++){
q=q*p;
}
printf("%4d",s/q);
}
}
intTriangle(intn){
inti,o,u;
for(i=0;i<=n;i++){
for(u=1;u<41-i*2;u++){
printf("");
}
for(o=0;o<=i;o++){
Combination(o,i);
}
printf("\n");
}
}
(4)编写一个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。
#include
#include
intmain(void)
{
inta,i,c,n=0;
charm;
for(a=0;m=getchar(),m!
='\n';a++){
c=m-'0';
n=n+c*pow(10,a);
}
printf("%d\n",n);
}
4.选做题
编写一个程序,用牛顿迭代法求方程
满足精度e=10-6的一个近似根,并在屏幕上输出所求近似根。
牛顿迭代法:
求方程近似根的迭代公式为
,其中
是函数f(x)的导函数。
牛顿迭代法首先任意设定的一个实数
来作为近似根的迭代初值x0,然后用迭代公式计算下一个近似根x1。
如此继续迭代计算x2,x3,…,xn,直到
,此时值xn即为所求的近似根。
#include
#include
doublef(doublex);
doublef_(doublex);
doubleroot(doublem);
intmain()
{
doublem=1;
printf("%lf\n",root(m));
return0;
}
doublef(doublex)
{
return(3*x*x*x-4*x*x-5*x+13);
}
doublef_(doublex)
{
return(9*x*x-8*x-5);
}
doubleroot(doublem)
{
doublen;
n=m-f(m)/f_(m);
if(fabs(m-n)<=0.000001){
returnn;
}
else{
returnroot(n);
}
}
四、实验体会
了解更多有关C语言的语法知识和循环结构以及熟练了调试过程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 实验报告23 语言程序设计 实验 报告 23