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

简介: C语言实验三 选择结构程序设计

一、实验目的

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

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

二、预习要求

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

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

(三)switch语句的形式。

三、实验内容

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

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. }
目录
相关文章
|
2天前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
2天前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2天前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2天前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
2天前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
|
8天前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
8天前
|
C语言
C语言 字符串操作函数
本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。
|
9天前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
23天前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
21 4

相关实验场景

更多