当前位置:网站首页>C语言实验三 选择结构程序设计
C语言实验三 选择结构程序设计
2022-07-31 05:09:00 【Meteor.792】
一、实验目的
(一)掌握C语言关系表达式和逻辑表达式的运算和使用;
(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。
二、预习要求
(一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;
(二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套;
(三)switch语句的形式。
三、实验内容
(一)输入下面两段程序并运行,掌握case语句中break语句的作用。
1./* c3-2.c */
/* 不含break的switch */
#include "stdio.h"
void main( )
{ int a,m=0,n=0,k=0;
scanf("%d",&a);
switch(a)
{ case 1: m++;
case 2:
case 3: n++;
case 4:
case 5: k++;
}
printf("%d,%d,%d\n",m,n,k);
} /* c3-3.c */
/* 含break的switch */
#include "stdio.h"
void main( )
{ int a,m=0,n=0,k=0;
scanf("%d",&a);
switch(a)
{ case 1: m++; break;
case 2:
case 3: n++; break;
case 4:
case 5: k++;
}
printf("%d,%d,%d\n",m,n,k);
} 分别从键盘上输入1、3、5,写出程序运行的结果。
(二)完善程序,从键盘上输入x的值,按下式计算y的值。

编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表达式(x>=1 && x<10)来表示。
下面是用多分支选择结构实现本题的程序结构:
/* c3-4.c if 语句实现的多分支结构 */
#include "stdio.h"
void main( )
{ int x,y; //定义变量;
scanf("%d",&x); //输入x;
if ( x<1 )
y=x; //按y=x为变量y赋值;
else if( x>=1 && x<10 )
y=2*x-1; //按y=2x-1为变量y赋值;
else
y=3*x-11; //按y=3x-11为变量y赋值;
printf("y=%f\n",y);
}注意:在赋值语句中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.输出转换后的等级成绩。
#include "stdio.h"
int main()
{
int score;
printf("请输入分数:");
scanf("%d",&score);
score=score/10;
switch(score)
{
case 10:printf("A");break;
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;
}
}(四)下面程序运行时从键盘上分别输入(20,15),(15,20),写出运行结果。
/* c3-5.c 分支结构中的复合语句*/
#include "stdio.h"
void main( )
{ int a,b,t;
t = 0;
scanf("%d,%d",&a,&b);
if (a>b)
{ t = a ;
a = b ;
b = t ;
}
printf("a=%d,b=%d\n",a,b) ;
}四、实验注意事项
(一)C程序中表示比较运算的等号用“==”表示,赋值运算符用“=”表示,不能将赋值号“=”用于比较运算。
(二)控制表达式是指任何合法的C语言表达式(不只限于关系或逻辑表达式),只要表达式的值为“非零”,则为“真”,“零”则为“假”
(三)在if语句的嵌套结构中,else与if的配对原则是:每个else总是与同一个程序中、在前面出现的、而且距它最近的一个尚未配对的if构成配对关系。
(四)case及后面的常量表达式,实际仅是起标号作用。控制表达式的值与某个情况常量一旦匹配,那么,在执行下面语句的过程中,只要不遇到break语句,就一直执行下去,而不再判别是否匹配。允许出现多个“case”与一组语句相对应的情况。
五、思考题
三角形成立条件判断及面积计算。
已知三边能围成三角形的条件是:任意两边之和大于第三边。
已知三边求三角形面积的公式:p=(a+b+c)/2, s=sqrt(p*(p-a)*(p-b)*(p-c))
#include "stdio.h"
#include "math.h"
int main()
{
int a,b,c,p,area;
printf("请输入a,b,c的值:");
scanf("%d %d %d",&a,&b,&c);
if((a+b)>c&&(a+c)>b&&(b+c)>a)
{
p=(1.0/2)*(a+b+c);
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面积为:%d",area);
}
else
printf("该三角形不存在!\n");
return 0;
}边栏推荐
- 关于LocalDateTime的全局返回时间带“T“的时间格式处理
- 三次握手与四次挥手
- mysql stored procedure
- 剑指offer基础版 ---- 第27天
- MySQL (updating)
- SQL injection of DVWA
- DVWA installation tutorial (understand what you don't understand · in detail)
- Goodbye to the cumbersome Excel, mastering data analysis and processing technology depends on it
- 面试官竟然问我怎么分库分表?幸亏我总结了一套八股文
- pycharm专业版使用
猜你喜欢

1. Get data - requests.get()

面试官:生成订单30分钟未支付,则自动取消,该怎么实现?

Temporal介绍

MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细
![【JS面试题】面试官:“[1,2,3].map(parseInt)“ 输出结果是什么?答上来就算你通过面试](/img/7a/c70077c7a95137aaeb49c344c82696.png)
【JS面试题】面试官:“[1,2,3].map(parseInt)“ 输出结果是什么?答上来就算你通过面试

剑指offer专项突击版 ---第 5 天

如何将项目部署到服务器上(全套教程)

MySQL-如何分库分表?一看就懂

剑指offer基础版 ---- 第27天

关于小白安装nodejs遇到的问题(npm WARN config global `--global`, `--local` are deprecated. Use `--location=glob)
随机推荐
MySQL (updating)
Linux系统安装mysql(rpm方式安装)
Anaconda配置环境指令
基于web3.0使用钱包Metamask的三方登陆
Centos7 install mysql5.7 steps (graphical version)
Temporal线上部署
剑指offer基础版--- 第23天
剑指offer专项突击版 ---- 第 6 天
[Detailed explanation of ORACLE Explain]
剑指offer专项突击版 ---- 第1天
Unity resources management series: Unity framework how to resource management
可点击也可直接复制指定内容js
【一起学Rust】Rust学习前准备——注释和格式化输出
mysql 的简单运用命令
[Introduction to MySQL 8 to Mastery] Basics - silent installation of MySQL on Linux system, cross-version upgrade
tf.keras.utils.get_file()
CentOS7 安装MySQL 图文详细教程
太厉害了,终于有人能把文件上传漏洞讲的明明白白了
数据库学习笔记
Unity mobile game performance optimization series: performance tuning for the CPU side