当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
基于web3.0使用钱包Metamask的三方登陆
【MQ我可以讲一个小时】
Moment Pool Cloud quickly installs packages such as torch-sparse and torch-geometric
MySQL(更新中)
Linux系统安装mysql(rpm方式安装)
centos7安装mysql5.7
STM32 - DMA
Goodbye to the cumbersome Excel, mastering data analysis and processing technology depends on it
Refinement of the four major collection frameworks: Summary of List core knowledge
CentOS7 安装MySQL 图文详细教程
随机推荐
[Introduction to MySQL 8 to Mastery] Basics - silent installation of MySQL on Linux system, cross-version upgrade
[mysql improves query efficiency] Mysql database query is slow to solve the problem
MySQL事务(transaction) (有这篇就足够了..)
再见了繁琐的Excel,掌握数据分析处理技术就靠它了
为什么要用Flink,怎么入门使用Flink?
The interviewer asked me TCP three handshake and four wave, I really
关于LocalDateTime的全局返回时间带“T“的时间格式处理
MySQL8--Windows下使用压缩包安装的方法
MySQL事务隔离级别详解
mysql使用on duplicate key update批量更新数据
.NET-9. A mess of theoretical notes (concepts, ideas)
有了MVC,为什么还要DDD?
剑指offer专项突击版 ---- 第 6 天
Input length must be multiple of 8 when decrypting with padded cipher
matlab abel变换图片处理
mysql存储过程
mysql 的简单运用命令
Quickly master concurrent programming --- the basics
Pytorch教程Introduction中的神经网络实现示例
Redis Advanced - Cache Issues: Consistency, Penetration, Penetration, Avalanche, Pollution, etc.