实验六 分支结构程序设计(3)

实验六 分支结构程序设计(3)

 

一、实验目的和要求:

1.掌握分支结构程序的设计思想,以及程序执行过程;

2.掌握关系运算符、逻辑运算符和条件运算符;

3.掌握if嵌套程序设计;

4.掌握switch语句程序设计方法。

 

 

二、实验内容:

1.求方程ax2+bx+c=0的解。要求:从键盘输入方程系数abc,输出方程的根。

2.求一个大于0且小于1000的正数的平方根。要求:从键盘输入数据;判断该数的范围,若不在“大于0且小于1000”的范围内,则要求重新输入;输出该数的平方根。

3.从键盘输入一个5位数,逆序输出它的各位数字。如原数12345的输出为54321

4.计算运输费用。假设单价、重量和路程由键盘输入;路程越远,折扣越大。

s<250   没有折扣

250s<500   2%折扣

500s<1000  8%折扣

2000s<3000  10%折扣

3000s       15%折扣

5 从键盘输入某学生的一个百分制成绩,要求输出其成绩等级。90分以上为A80~89分为B70~79分为C 60~69分为D 60分以下为E’。

6.设计一个简易计算器。

 

三、实验步骤与结果

1求方程ax2+bx+c=0的解。要求:从键盘输入方程系数abc,输出方程的根。

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   没有折扣

250s<500   2%折扣

500s<1000  8%折扣

2000s<3000  10%折扣

3000s       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分以上为A80~89分为B70~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、用到标准输入输出函数时,就要调用这个头文件。

 

3stdlib.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, 一定要自己严格要求自己,一定要注释

posted @ 2020-12-16 08:34  刘磊i  阅读(343)  评论(0编辑  收藏  举报