流程管理流程控制实验.docx
《流程管理流程控制实验.docx》由会员分享,可在线阅读,更多相关《流程管理流程控制实验.docx(8页珍藏版)》请在冰豆网上搜索。
流程管理流程控制实验
(流程管理)流程控制实验
C语言程序设计实验方案
一、实验名称流程控制实验
二、实验目的
1.掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句和标号语句。
2.练习循环结构for、while、do-while语句的使用。
3.练习转移语句和标号语句的使用。
4.使用codeblocks开发环境中的调试功能:
单步执行、设置断点、观察变量值。
三、实验任务
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
182********881
193684126126843691
每个数据值能够由组合计算(表示第i行第j列位置的值),而的计算如下:
(i=0,1,2,…)
(j=0,1,2,3,…,i)
本程序中为了打印出金字塔效果,要注意空格的数目。
壹位数之间是3个空格,俩位数之间有2个空格,3位数之间只有壹个空格,程序编制过程中要注意区分。
(4)编写壹个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。
四、实验步骤及结果
1.源程序改错题
更改后的正确程序:
#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,s);
return0;
}
(2)do-while语句型替换程序
#include
intmain()
{
inti=1,n,s=1;
printf("Pleaseentern:
");
scanf("%d",&n);
do
{
s=s*i;
i++;
}while(i<=n);
printf("%d!
=%d",n,s);
return0;
}
3.编程设计题
(1)税金收取问题程序:
If语句型:
#include
intmain()
{
doubleincome,tax,a,b;
inx:
printf("Pleaseentertheincome:
\n");
scanf("%lf",&income);
a=income/1000;
if(a>=0)
{if(a>=5)
b=0.25;
if(a>=4)
b=0.20;
if(a>=3)
b=0.15;
if(a>=2)
b=0.10;
if(a>=1)
b=0.05;
else
b=0.00;
tax=income*b;
printf("thetaxis%.1lf",tax);}
else
{
printf("Entererror!
\n");
gotoinx;
}
}
运行结果:
Switch语句型:
#include
intmain()
{
doubleincome,tax,a,b;
inx:
printf("Pleaseentertheincome:
\n");
scanf("%lf",&income);
a=income/1000;
if(a<0)
{
printf("Entererror!
\n");
gotoinx;
}
else
switch((int)(a)){
case0:
b=0.00;break;
case1:
b=0.05;break;
case2:
b=0.10;break;
case3:
b=0.15;break;
case4:
b=0.20;break;
default:
b=0.25;break;
}tax=income*b;
printf("Thetaxis%.1lf",tax);
return0;
}
运行结果:
(2)字符复制输出和多个空白字符删除:
#include
intmain()
{
intflag=1;
charc;
printf("pleaseintputsomechars:
\n");
while((c=getchar())!
='\n')
{
switch(c)
{case'':
if(flag){putchar(c);
flag=0;}
break;
default:
putchar(c);flag=1;
}
}
if((c=getchar())=='\n')
printf("%c",c);
return0;
}
运行结果:
(3)杨辉三角:
#include
#defineM10
#defineN10
intmain()
{
inta[M][N],i,j;
for(i=0;i{
for(j=N;j>=i;j--)
printf("%2c",'');
for(j=0;j<=i;j++)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%3d",a[i][j]);
if(i==j)
printf("\n");
}
}
}
运行结果:
(4)数字逆转:
#include
intmain()
{
longx,digit;
printf("pleaseinputapositiveinteger:
\n");
scanf("%ld",&x);
do
{
digit=x%10;
printf("%ld",digit);
x/=10;
}while(x!
=0);
printf("\n");
return0;
}
运行结果:
五、实验体会
通过这次C语言实验,我更进壹步认识到了C语言学习理论、实践相结合的重要性。
同时我也深深认识到if语句、if-else语句、switch、for、while以及do-while等于c语言实现中的重要作用,我会更加努力学习理论知识,时不时的上机实践来查找自己的不足进而是自己于C语言的学习上取得很大的进步,提高自己的实践能力。