文档介绍:实验2 流程控制实验
实验目的
(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。
(2)熟练运用for、while、do-while语句来编写程序。
(3)练****转移语句和标号语句的使用。
(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。
实验内容及要求
下面是计算s=n! 的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。例如,8!=40320。
1 #include <>
2 int main()
3 { int i,n,s=1;
4 printf("Please enter n:");
5 scanf("%d",n);
6 for(i=1,i<=n,i++)
7 s=s*i;
8 printf("%d! = %d",n,s);
9 }
10 return 0;
解答:
错误修改:
输入字符格式错误,正确形式为:
scanf(“%d”,&n);
return 0;与}的相对位置错误,正确形式为:
return0;
}
错误修改后的程序:
#include <>
int 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;
}
(3) 运行结果:
图1
(1)修改第1题,分别用while和do-while语句替换for语句。
替换为While语句
1)在判断while语句前,要先定义i=1,再执行while语句。替换后的程序如下所示:
#include <>
int main()
{
int i,n,s=1;
printf("please enter n:");
scanf("%d",&n);
i=1;
while (i<=n)
{
s=s*i;
i++;
}
printf("%d!=%d",n,s);
return 0;
}
2)运行截图及说明
图2 (1)while语句测试图
替换为do-while语句
要先定义i=1,再执行while语句。替换后的程序如下所示:
#include <>
int main()
{
int i,n,s=1;
printf("please enter n:");
scanf("%d",&n);
i=1;
do{
s=s*i;
i++;
}while(i<=n);
printf("%d!=%d",n,s);
return 0;
}
运行截图及说明
图3 (2)do-while语句测试图
(2)修改第1题,输入改为“整数S”,输出改为“满足n!≥S的最小整数n”。例如输入整数40310,输出结果为n=8。
1)解题思路:先定义S,x=1,i=1,输入S,判断x<=S,如果为真,则有x=x*i,i=i+1,再返回判断x<=s,直至值为假,输出i-1的值。源程序为:
#include <>
int main()
{
int S;
int x=1,i=1;
printf("请输入整数S:");
scanf("%d",&S);
while(x<=S)
{
x=x*i;
i=i+1;
}
printf("满足n!>=S的最小整数n是%d",i-1);
return 0;
}
2)运行截图及说明
图4 (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语句来实现。
解答:
if语句:
解题思路:
定义浮点数工资金额x,应收取税金额为y。
输入工资金额x,判断x属于哪一个收入范围。
如果x<10