实验4 选择结构程序设计

更新时间:2023-03-13 22:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验4 选择结构程序设计

一、实验目的:

1、熟悉C语言逻辑值“真”、“假”的表示;

2、掌握关系运算符的种类、运算优先级、运算结果的类型,清楚一个关系表达式对应的相反式;

3、掌握逻辑运算符的种类、运算优先级、结合性、操作数与运算结果的类型,能根据要求构建相应的逻辑表达式,理解逻辑运算中“短路”现象;

4、掌握if语句的用法,能够根据要求熟练使用单分支、双分支、多分支(嵌套)结构;

5、掌握switch语句的格式、功能及注意事项; 6、熟悉条件运算符和条件表达式的基本用法; 7、初步学习随机函数rand()的使用。

二、实验内容

1、(基础题)分析、运行下列程序,验证逻辑值、关系运算相关内容,并回答相关问题:

#include int main() {

int x=15,y=5,z=50;

printf(\,x,y,z); printf(\,x>y); printf(\,x<=y); printf(\,x+y

printf(\,z-30>=x+y); printf(\,y==z-30>x); return 0; }

问题:

(1)C语言逻辑值“真”、“假”如何表示?输入、输出时有什么不同?

(2)关系运算符包含哪几个? 它们的优先级如何? (3)关系表达式的运算结果是什么?

(4)哪些关系运算符互为相反式?它们的运算结果有什么关联?

2、(基础题分析、运行下列程序,验证逻辑运算的相关内容,并回答相关问题:

#include int main() {

int a=3, b=4, c=5; int x,y,z;

printf(\,a,b,c);

printf(\,a+b>c&&b==c); printf(\,!a||!c||b); printf(\,a||b+c&&b>c); printf(\,a*b&&c+a);

printf(\执行x=ab&&c++后,y=%d,a=%d,b=%d,c=%d\\n\,y=a>b&&c++,a,b,c);

printf(\执行z=a||b++||c++后,z=%d,a=%d,b=%d,c=%d\\n\,z=a||b++||c++,a,b,c); return 0; }

问题:

(1)逻辑运算符包含哪几个? 它们的优先级如何?它的运算级别高于算术运算符、赋值运算符吗?

(2)逻辑表达式的操作数、运算结果是什么?

(3)什么是逻辑运算中“短路”现象?这会带来什么影响?

3、(基础题以下程序的功能是:输入学生四门课程的成绩,然后根据要求构建相应的逻辑表达式,之后计算这些表达式的值并输出。请根据程序相关提示填写所缺代码,再运行该程序予以验证,最后回答相关问题:

#include int main() {

double sc1,sc2,sc3,sc4;

printf(\请输入学生的门课程成绩:\\n\);

scanf(\,_____________________);

printf(\,sc1,sc2,sc3,sc4);

printf(\四门课程的平均成绩大于等于80? %s\\n\,___________________?\是\:\否\); printf(\四门课程中每门的成绩均大于等于80? %s\\n\,_________________?\是\:\否\);

printf(\四门课程中至少有一门的成绩大于等于80? %s\\n\,_____________?\是\:\否\);

printf(\四门课程中没有一门的成绩大于等于80? %s\\n\,_____________?\是\:\否\); printf(\四门课程中至少有两门的成绩大于等于80? %s\\n\,___________?\是\:\否\);

return 0; }

问题:

(1)在程序中的什么位置使用了“条件运算符”? (2)条件运算符有几个操作数?条件表达式如何执行?

4、(基础题)编写一个程序:输入一个正整数,先判断其是奇数还是偶数,再进一步判断能否被3整除,运行界面如下所示:

(提示:(1)判断奇偶性是指能否被2整除,可考虑用%运算符取余数;(2)程序运行有4种可能结果,可用if…else…嵌套处理:在外层考虑奇偶性,在内嵌的if…else…中考虑能否被3整除。)

5、对于下列函数:

编写程序,要求输入x的值,输出y值。 (提示:可以选择如下方法之一来编写程序: ? 多个if语句(不含else部分); ? 嵌套的if语句; ? if…else if….语句;

? 条件运算符和条件表达式。)

6、(提高题)以下程序实现的功能是:利用系统函数rand()产生两个0~99的随机整数,之后进行算术四则运算(加、减、乘、除),用户先输入运算符,再输入对应运算的结果,最后由程序来判断是否正确,并输出相应信息。

分析、运行该程序,体会switch语句和随机函数的用法,并回答相关问题。

程序代码:

#include #include #include int main() {

int a,b,result=-1,input=0; char op;

/* 系统函数rand():产生0-32767随机整数,头文件是stdlib.h

系统函数srand(int seed):seed相同,产生随机数中也相同,头文件是stdlib.h 系统函数time(0):返回系统时间的总秒数,头文件是time.h */

srand(time(0)); a=rand()0; b=rand()0;

printf(\输入算术运算的运算符(+、-、x、/):\);//'*'不可用 op=getchar();

switch(op) {

case '+':

result=a+b;

printf(\,a,b); scanf(\,&input); break; case '-':

result=a-b;

printf(\,a,b); scanf(\,&input); break; case 'x':

result=a*b;

printf(\,a,b); scanf(\,&input);

}

break; case '/': if(b!=0) {

result=a/b;

printf(\,a,b); scanf(\,&input); }else {

printf(\除数为0,不能进行除法运算\\n\); }

break; default:

printf(\输入的运算符不正确!\\n\); }

if(result==input)

printf(\输入答案正确 加油!\\n\\n\); else

printf(\输入答案错误 加水!\\n\\n\); return 0;

问题:

(1)switch语句由哪些部分构成?case子句、default子句有什么作用?该语句如何执行?

(2)switch语句中的break子句有什么作用?

(3)rand()、srand()各有什么作用?使用时应导入什么头文件?

本文来源:https://www.bwwdw.com/article/3b2x.html

Top