• C语言实验三 选择结构程序设计


    一、实验目的

    (一)掌握C语言关系表达式和逻辑表达式的运算和使用;

    (二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。

    二、预习要求

    (一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;

    (二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套;

    (三)switch语句的形式。

    三、实验内容

      (一)输入下面两段程序并运行,掌握case语句中break语句的作用。

    1. 1/*  c3-2.c  */              
    2.    /* 不含break的switch */       
    3. #include "stdio.h"              
    4. void main( )                   
    5. { int a,m=0,n=0,k=0;                
    6.  scanf("%d",&a);                
    7.  switch(a)                      
    8.  { case  1: m++;                  
    9.    case  2:                     
    10.    case  3: n++;               
    11.    case  4:                     
    12.    case  5: k++;                 
    13. }                              
    14. printf("%d,%d,%d\n",m,n,k);      
    15. }                         
    1. /*  c3-3.c  */
    2. /* 含break的switch */
    3. #include "stdio.h"
    4. void main( )
    5. { int a,m=0,n=0,k=0;
    6. scanf("%d",&a);
    7. switch(a)
    8. { case 1: m++; break;
    9. case 2:
    10. case 3: n++; break;
    11. case 4:
    12. case 5: k++;
    13. }                                    
    14. printf("%d,%d,%d\n",m,n,k);
    15. }                                   

    分别从键盘上输入1、3、5,写出程序运行的结果。

    (二)完善程序,从键盘上输入x的值,按下式计算y的值。

    编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表达式(x>=1 && x<10)来表示。

    下面是用多分支选择结构实现本题的程序结构:

    1.   /* c3-4.c  if 语句实现的多分支结构 */
    2.   #include "stdio.h"
    3.   void main( )
    4.   { int x,y; //定义变量;
    5.     scanf("%d",&x); //输入x;
    6.     if ( x<1
    7. y=x;          //按y=x为变量y赋值;
    8.       else if( x>=1 && x<10
    9. y=2*x-1;    //按y=2x-1为变量y赋值; 
    10.             else
    11.             y=3*x-11;     //按y=3x-11为变量y赋值; 
    12.     printf("y=%f\n",y);
    13.   }

    注意:在赋值语句中2x应该写成2*x。

    (三)编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。

    编程提示:

    1.先定义一个整型变量存放百分制成绩、定义一个字符型变量存放相应的等级成绩;

    2.输入百分制成绩;

    3.将百分制成绩按10分,分档作为switch语句中括号内的表达式;

    4.按     case 10:

                 case  9:

                 case  8:

                 case  7:

                 case  6:

                 default:

    这六种匹配情况分别选择不同的入口;

    5.输出转换后的等级成绩。

    1. #include "stdio.h"
    2. int main()
    3. {
    4. int score;
    5. printf("请输入分数:");
    6. scanf("%d",&score);
    7. score=score/10;
    8. switch(score)
    9. {
    10. case 10:printf("A");break;
    11. case 9:printf("A");break;
    12. case 8:printf("B");break;
    13. case 7:printf("C");break;
    14. case 6:printf("D");break;
    15. default:printf("E");
    16. return 0;
    17. }
    18. }

    (四)下面程序运行时从键盘上分别输入(20,15),(15,20),写出运行结果。

    1.   /* c3-5.c  分支结构中的复合语句*/
    2.   #include "stdio.h"
    3.   void main( )
    4.   {   int a,b,t;
    5.       t = 0;
    6.       scanf("%d,%d",&a,&b);
    7.       if (a>b)
    8.         { t = a ;
    9.           a = b ;
    10.           b = t ;
    11. }
    12.     printf("a=%d,b=%d\n",a,b) ;
    13.   }

    四、实验注意事项

    (一)C程序中表示比较运算的等号用“==”表示,赋值运算符用“=”表示,不能将赋值号“=”用于比较运算。

    (二)控制表达式是指任何合法的C语言表达式(不只限于关系或逻辑表达式),只要表达式的值为“非零”,则为“真”,“零”则为“假”

    (三)在if语句的嵌套结构中,else与if的配对原则是:每个else总是与同一个程序中、在前面出现的、而且距它最近的一个尚未配对的if构成配对关系。

    (四)case及后面的常量表达式,实际仅是起标号作用。控制表达式的值与某个情况常量一旦匹配,那么,在执行下面语句的过程中,只要不遇到break语句,就一直执行下去,而不再判别是否匹配。允许出现多个“case”与一组语句相对应的情况。

    五、思考题

    三角形成立条件判断及面积计算。

    已知三边能围成三角形的条件是:任意两边之和大于第三边。

    已知三边求三角形面积的公式:p=(a+b+c)/2, s=sqrt(p*(p-a)*(p-b)*(p-c))

    1. #include "stdio.h"
    2. #include "math.h"
    3. int main()
    4. {
    5. int a,b,c,p,area;
    6. printf("请输入a,b,c的值:");
    7. scanf("%d %d %d",&a,&b,&c);
    8. if((a+b)>c&&(a+c)>b&&(b+c)>a)
    9. {
    10. p=(1.0/2)*(a+b+c);
    11. area=sqrt(p*(p-a)*(p-b)*(p-c));
    12. printf("三角形的面积为:%d",area);
    13. }
    14. else
    15. printf("该三角形不存在!\n");
    16. return 0;
    17. }
  • 相关阅读:
    APP自动化测试-5.触屏操作及toast处理
    [paper] Attention is all you need 论文浅析
    LCMXO2-2000HC-4FTG256C FPGA MachXO2系列 256-FTBGA 现场可编程门阵列
    时间管理:我需要利用好自己的时间
    java计算机毕业设计中小型超市管理系统录像补源程序+mysql+系统+lw文档+远程调试
    spring boot 整合 sentinel
    【深度学习 Pytorch笔记 B站刘二大人 线性回归 Linear-Regression 模块实现与源码解读(4/10)】
    Shell Protocol空投价值几何,一文带你详细分析
    《白皮书》:公共服务中人脸安全解决方案
    【HTML小游戏】推箱子网页版(附完整源码)
  • 原文地址:https://blog.csdn.net/qq_64314976/article/details/126063897