实验六 分支结构程序设计(3)
实验六 分支结构程序设计(3)
一、实验目的和要求:
1.掌握分支结构程序的设计思想,以及程序执行过程;
2.掌握关系运算符、逻辑运算符和条件运算符;
3.掌握if嵌套程序设计;
4.掌握switch语句程序设计方法。
二、实验内容:
1.求方程ax2+bx+c=0的解。要求:从键盘输入方程系数a、b、c,输出方程的根。
2.求一个大于0且小于1000的正数的平方根。要求:从键盘输入数据;判断该数的范围,若不在“大于0且小于1000”的范围内,则要求重新输入;输出该数的平方根。
3.从键盘输入一个5位数,逆序输出它的各位数字。如原数12345的输出为54321。
4.计算运输费用。假设单价、重量和路程由键盘输入;路程越远,折扣越大。
s<250 没有折扣
250≤s<500 2%折扣
500≤s<1000 8%折扣
2000≤s<3000 10%折扣
3000≤s 15%折扣
5. 从键盘输入某学生的一个百分制成绩,要求输出其成绩等级。90分以上为’A’,80~89分为’B’,70~79分为’C’, 60~69分为’D’, 60分以下为’E’。
6.设计一个简易计算器。
三、实验步骤与结果
1. 求方程ax2+bx+c=0的解。要求:从键盘输入方程系数a、b、c,输出方程的根。
(1)设计思路
输入的数据进行数据运算,运算过程中使用数学函数,然后就是要记得共轭复数的特殊情况。
(2)程序源码(加注释)
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,realpart,imagpart; //定义数据类型
scanf("%lf,%lf,%lf",&a,&b,&c); //接收键盘输入
printf("这个问题 ");
if(fabs(a)<=1e-6) //判断接收的值 1e-6科学计数法表示的浮点数
printf("没有解\n");
else
{
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6) //去绝对值后判断
printf("有两个相等的解:%8.4f\n",-b/(2*a));
else
if(disc>1e-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a); //开平方根sqrt
printf("有两个不相等的解:%8.4f and %8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("有两个共轭副根:\n");
printf("%8.4f+%8.4fi\n",realpart,imagpart);
printf("%8.4f-%8.4fi\n",realpart,imagpart);
}
}
return 0;
}
(3)运行结果与分析
2.求一个大于0且小于1000的正数的平方根。要求:从键盘输入数据;判断该数的范围,若不在“大于0且小于1000”的范围内,则要求重新输入;输出该数的平方根。
(1)设计思路
根据输入的数进行判断,是否是符合条件,然后进行平方根运算
(2)程序源码(加注释)
#include<stdio.h>
#include<math.h>
int main()
{
int a; //定义输入的数据是整数
double b;
printf("请输入一个小于1000的正数:");
scanf("%d",&a); //键盘输入
if(a>0&&a<1000) //判断输入的值是否在范围内
{
b=sqrt(a); //输入值开平方根
printf("它的平方根是:%2.0f\n",b);
}
else
printf("输入的数据不在范围,请重新输入:\n");
return 0;
}
(3)运行结果与分析
3.从键盘输入一个5位数,逆序输出它的各位数字。如原数12345的输出为54321。
(1)设计思路
输入的数据进行循环取模,然后逆顺输出
(2)程序源码(加注释)
#include<stdio.h>
int main()
{
int num;
scanf("%d",&num); //输入值
int a,i; //定义输入的为整型数据
for(i = 0;num > 0;i++) //对输入的数据循环取模并打印,直到数据
{
a = num % 10;
printf("%d",a);
num = num/10;
}
return 0;
}
(3)运行结果与分析
4.计算运输费用。假设单价、重量和路程由键盘输入;路程越远,折扣越大。
s<250 没有折扣
250≤s<500 2%折扣
500≤s<1000 8%折扣
2000≤s<3000 10%折扣
3000≤s 15%折扣
(1)设计思路
先要分析题目里面的数据,然后根据switch的特性,分好案例,进行switch判断
(2)程序源码(加注释)
# include<stdio.h>
int main()
{
int c,s;
float p,w,d,f;
printf("please enter price,weight,discount:");
scanf("%f,%f,%d",&p,&w,&s); //输入数据
if(s>=3000) c=12; //判断输入
else
c=s/250; //对输入的值进行折扣分析
switch(c) //情况对号入座
{
case0:d=0;break;
case1:d=2;break;
case2:
case3:d=5;break;
case4:
case5:
case6:
case7:d=8;break;
case8:
case9:
case10:
case11:d=10;break;
case12:d=15;break;
}
f=p*w*s*(1-d/100); //运算
printf("freight=%10.2f\n",f); //打印
return 0;
}
(3)运行结果与分析
5. 从键盘输入某学生的一个百分制成绩,要求输出其成绩等级。90分以上为’A’,80~89分为’B’,70~79分为’C’, 60~69分为’D’, 60分以下为’E’。
(1)设计思路
先要分析题目里面的数据,然后根据switch的特性,分好案例,进行switch判断并结合if语句进行搭配使用
(2)程序源码(加注释)
#include<stdio.h>
int main()
{
int x;
printf("请输入学生成绩:\n");
scanf("%d",&x); //输入
if(x>100||x<0) //判断是否符合数据内
printf("score is error.");
switch(x/10) //数据取余判断
{
case 9:printf("'A'");break;
case 8:printf("'B'");break;
case 7:printf("'C'");break;
case 6:printf("'D'");break;
default:printf("E.");
}
return 0;
}
(3)运行结果与分析
6. 设计一个简易计算器。
(1)设计思路
先要分析题目里面的数据,然后根据switch的特性,分好案例,进行switch判断并结合if语句进行搭配使用
(2)程序源码(加注释)
#include <stdio.h>
#include <stdlib.h>
//1、意思是标准输入输出头文件。
2、用到标准输入输出函数时,就要调用这个头文件。
3、stdlib.h中,包含了C语言的一些常用且方便的库函数。
4、如动态内存相关的malloc, realloc,zalloc,calloc,free
#include <string.h> //意思是包含字符串处理函数的头文件,有了这句话就可以直接调用现有的字符串处理的一系列函数
int main()
{
int y;
double shu1=0; //定义数据类型为双浮点数
double shu2=0;
char fuhao; //符号为字符类型
for(;;)
{
printf("\n 迷你计算器\n\n");
shu1=0; //赋初始值
shu2=0;
fuhao=0;
printf("请输入第一个数:");
scanf("%lf",&shu1); //输入
getchar(); //输入字符 回车
printf("\n请选择运算符(+,-,*,/):");
fuhao = getchar(); //输入符号
printf("\n请输入第二个数:");
scanf("%lf",&shu2); //输入字符
getchar(); //输入字符回车
if(fuhao == '+') //判断运算符号分别选择输出打印
printf("\n加法,运算结果:%lf\n",shu1+shu2);
if(fuhao == '-')
printf("\n减法,运算结果:%lf\n",shu1-shu2);
if(fuhao == '*')
printf("\n乘法,运算结果:%lf\n",shu1*shu2);
if(fuhao == '/')
printf("\n除法,运算结果:%lf\n",shu1/shu2);
printf("\n y 继续计算,n 退出");
fuhao = getchar();
if(toupper(fuhao) == 'N') //对输入的n进行转成N,然后就是跳出运算
break;
}
}
(3)运行结果与分析
四、实验总结与心得
总结:
先要分析题目里面的数据,然后根据switch的特性,分好案例,进行switch判断并结合if语句进行搭配使用
心得:
1, 记得要自己总结
2, 不会的一定要自己弄懂
3, 一定要自己严格要求自己,一定要注释