C语言 流程控制语句

一、大纲

1. 掌握关系和逻辑运算符的使用 

2. 掌握if-else语句和switch语句的使用 

3. 了解条件运算符的使用

二、实验目标:

1. 理解关系运算符的用法,重点掌握关系运算符在条件判断和分支结构中的应用。

2. 正确理解”==”和”=”的区别,以及使用它们的运算结果对程序的影响。

3. 理解逻辑运算符的用法,掌握运算法则。重点掌握其在条件判断和分支结构中的应用。

4. 掌握短路运算的运算原理和使用方法。

5. 掌握表达式语句,复合语句的使用。

6. 熟练掌握使用if语句的各种语句格式进行编程,建立面向过程的编程思路。

7. 掌握条件运算的使用。

8. 熟练掌握使用switch语句进行分支结构程序的设计。

三、实验方式:

要求学生自己独立完成

四、上机指导任务

4.1任务1:数字判断(时间:20分钟)

4.1.1 任务描述

写一个程序,从键盘上接收两个整数,输出这两个整数中值大的一个。

#include<stdio.h>

int main(){

int a,b;

scanf("%d",&a);

scanf("%d",&b);

if(a>b){

printf("%d",a);

}else{

printf("%d",b);

}

return 0;

}

4.1.2 任务目的

(1) 建立面向过程的编程思路。

(2) 掌握关系运算符的使用。

(3) 掌握条件表达式的使用

(4) 掌握if语句的使用。

4.1.3 任务要求

(1) 使用if语句条件判断进行实现

(2) 使用条件表达式进行实现。

(3) 在用户输入数据前应给出提示信息,在输出结果时也应给出相应的关于结果的提示信息。

(4) 为程序添加适当的注释信息。

4.1.4 难点提示

用条件表达式进行实现时,可以将比较结果保存到另一个变量中,输出时直接输出该变量即可。

4.2任务2:阅读程序(时间:10分钟)

4.2.1 任务描述

(1) 分别阅读下面两段程序,分析程序的结果。

// 程序1

#include <iostream>

using namespace std;

int main()

{

int password  = 0;

cout << "请输入密码 :";

cin >> password;

if( password == 123456 )

{

cout << "输入正确,可以进行下面的操作." << endl;

}

else

{

cout << "输入错误,程序即将退出." << endl;

}

return 0;

}

(2) 

// 程序2

#include <iostream>

using namespace std;

int main()

{

int password  = 0;

cout << "请输入密码 :";

cin >> password;

if( password = 123456 )

{

cout << "输入正确,可以进行下面的操作." << endl;

}

else

{

cout << "输入错误,程序即将退出." << endl;

}

return 0;}

4.2.2 任务目的

(1) 正确理解”= =”和”=”的区别,以及使用它们的运算结果对程序的影响。

(2) 掌握if-else语句在程序中的使用。

(3) 编写面向过程的程序的编程思想。

4.2.3 任务要求

(1) 分析程序结果,掌握此类程序的编程流程。

(2) 进行相应总结:此类程序的编程思想,以及”= =”和”=”各自的含义、表达式的返回值以及运算规则。

4.3任务3:整除运算(时间:20分钟)

4.3.1 任务描述

写一个程序,接收两个整数ab,并判断a是否能被b整除,输出判断结果。

int main(){

int a,b;

scanf("%d",&a);

scanf("%d",&b);

if(a%b==0){  //判断a能否被b整除

printf("a能被B整除");

}else{

printf("a不能被b整除");

}

return 0;

}

4.3.2 任务目的

(1) 复习算数运算符的使用。

(2) 掌握逻辑运算在if-else语句中的使用。

(3) 掌握错误处理在程序中的使用。

4.3.3 任务要求

(4) 程序要能对输入的错误整数进行错误判断(if(cin.fail()){…})。

(5) 程序各个部分之间要用空行隔开,为程序添加适当的注释信息。

(6) 对输入输出有相应的提示信息。

4.3.4 难点提示

注意: a是能被b整除的意思是说:b除以a没有余数(即余数为0)。

4.4任务4:数字判断2(时间:20分钟)

4.4.1 任务描述

(1) 写一个程序,接收两个数字,判断这两个数字的乘积是否大于等于5000,如果大于则告诉用户大于5000,如果相等则告诉用户等于5000,否则告诉用户小于5000

#include<stdio.h>

int main(){

int a,b;

scanf("%d",&a);

scanf("%d",&b);

if(a*b>5000){

printf("这两个数乘积大于5000");

}else if(a*b==5000){

printf("这两个数乘积等于5000");

}else{

printf("这两个数乘积小于5000");

}

return 0;

}

4.4.2 任务目的

(1) 掌握使用if语句实现多重分支进行流程判断。

(2) 掌握关系运算符的使用。

4.4.3 任务要求

(1) 要求分别使用简单的if语句和在else中嵌套if-else语句的格式进行实现。

(2) 给出适当的提示信息和注释信息。

4.4.4 难点提示

4.5任务5:对自动取款机业务的简单实现(时间:30分钟)

4.5.1 任务描述

(1) 银行的自动取款机大概有如下几种操作:存款、取款、查询余额、转账等几种功能。要求用switch语句进行模拟其操作。

(2) 由于在这里没有具体的按钮,可以使用数字来模拟用户的选择。例如:可以提示用户"存款请按1""取款请按2""查询余额请按3""转账请按4""退出请按5"。来让用户进行选择。

(3) 而具体的操作,可以直接在屏幕上输出操作过程即可。例如:当用户选择1后,可以直接在屏幕上打印“正在进行存款操作.”即可,其它操作类似。

int main(){

int a=0;

printf("请选择服务种类:\n");

printf("存款请按1:\n");

printf("取款请按2:\n");

printf("查询余额请按3:\n");

printf("转账请按4:\n");

printf("退出请按5:\n");

printf("请您选择\n");

fflush(stdout);

scanf("%d",&a);

switch (a) {

case 1:

printf("存款业务正在办理中、。。。");

break;

case 2:

printf("取款业务正在办理中、。。。");

break;

case 3:

printf("正在为您查询余额、。。。");

break;

case 4:

printf("转账业务正在办理中、。。。");

break;

case 5:

printf("正在安全退出、。。。");

break;

return 0;

break;

default:

printf("对不起,请核对您的账户信息");

break;

}

}

4.5.2 任务目的

(1) 使用面向过程的编程思路解决一些实际问题。

(2) 掌握使用switch语句进行多分支的条件判断。

(3) 复习错误处理机制的使用(对cin的出错判断)

4.5.3 任务要求

(1) 程序开始首先应在屏幕上所有的业务提示信息,提示可以为用户提供的服务:

请选择服务种类 :

存款请按1

取款请按2

查询余额请按3

退出请按4

请您选择 :

(2) 然后让用户选择,并进行相关业务处理。

(3) 要求为程序添加错误处理机制。

4.5.4 难点提示

注意:

(1) 为switch语句添加default选项。

(2) 每个分支后面不要忘记添加break;

4.6 作业1(30分钟)

4.6.1 作业任务

从键盘上接收一个字符,判断它到底是哪种字符:数字,小写字母,大写字母,其他字符。int main(){

char c;

fflush(stdout);

scanf("%c",&c);//从键盘接收1个值

if(c>='a'&&c<='z'){

printf("小写字母");

}

else if(c>='A'&&c<='Z'){

printf("大写字母");

}else{

printf("数字");

}//用if语句进行条件判断

return 0;

}

4.6.2 任务要求

(1) 使用简单if语句进行实现。

(2) 再使用在else中嵌套if-else语句的语句格式进行实现。

(3) 判断单个字符,是根据字符在ASCII码表中的顺序进行编写的,例如:对是否是小写字母就可以用下面这种判断方式:if( chioce>='a' && chioce<='z'  ){}。其它几种判断类似。

4.7 作业220分钟)

4.7.1 作业任务

写一个程序,能够判断从键盘上输入的年份是否是一个闰年。

#include<stdio.h>

int main(){

int nian;

printf("请输入您要查询的年份");

fflush(stdout);

scanf("%d",&nian);

if(nian%100==0){//先判断是否是整千年的年份

if(nian%4==0){

printf("此年份是闰年。");

}else{

printf("此年份是平年。");

}

}else if(nian%4==0){

printf("此年份是闰年");

}else{

printf("此年份是平年。");

}

return 0;

}

4.7.2 任务要求

(1) 使用逻辑运算符进行运算。

(2) 需要有相关的错误处理机制。

4.8 作业315分钟)

4.8.1 作业任务

写一个程序,接收一个数字,判断它是否能同时被23整除

#include<stdio.h>

int main(){

int a;

scanf("%d",&a);

if(a%2==0){

if(a%3==0){

printf("此数能同时被2和3整除");

}else{

printf("此数不能同时被2和3整除");

}

}else{

printf("此数不能同时被2和3整除");

}

return 0;

}

4.8.2 任务要求

(1) 能同时被23整除的意思是说:让这个数分别去除以23,看是否余数全为0

(2) 要求使用逻辑运算符进行运算。

(3) 添加适当的注释信息。

五、课后作业

5.1作业一(15分钟)

5.1.1作业任务

写出下面各逻辑表达式的值,a=3b=4c=5

(1)a+b>c&&b==c         0

(2)a||b+c&&b-c           1

(3)!(a>b)&&!c||11

(4)!(x=a)&&(y=b)&&00

(5)!(a+b)+c-1&&b+c/21

5.1.2任务要求

1)先计算结果在敲代码验证结果

2)熟悉运算符的优先级。

3)掌握逻辑表达式的运算。

5.1.3难点提示

5.2作业二(15分钟)

5.2.1作业任务

3个整数abc,由键盘输入,输出其中最大的数。

#include<stdio.h>

int main(){

int a,b,c;

scanf("%d",&a);

scanf("%d",&b);

scanf("%d",&c);

if(a>b){

if(a>c){

printf("%d",a);

}else{

printf("%d",c);

}

}else if(b>c){

printf("%d",b);

}else{

printf("%d",c);

}

return 0;

}

5.2.2任务要求

1)给出适当的提示信息和注释信息。

2)用两种方法输出最大数。

5.2.3任务难点提示

1)方法一利用if语句。

2)方法二利用条件运算符(? :)

5.3作业三(20分钟)

5.3.1作业任务

给出一百分制成绩,要求从键盘输入成绩后,输出成绩等级‘A’、‘B’、‘C’、‘D’、'E'90分以上为‘A,8089分为‘B’,7079分为‘C’,6069分为‘D’,60分一下为'E'

int main(){

int a;

printf("请输入成绩:\n");

    fflush(stdout);

scanf("%d",&a);

if(a>=90){

printf("A");

}else if(a>=80){

printf("B");

}else if(a>=70){

printf("C");

}else if(a>=60){

printf("D");

}else{

printf("E");

}

return 0;

}

5.3.2任务要求

1)给出适当的提示信息和注释信息。

2)要求用switch caseif else 两种方法)

#include<stdio.h>

int main(){

int a;

printf("请输入成绩:\n");

    fflush(stdout);

scanf("%d",&a);

int s;

if(60>a>0){s=1;}

if(70>a>=60){s=2;}

if(80>a>=70){s=3;}

if(90>a>=80){s=4;}

if(100>a>=90){s=5;}

switch(s){

case 1:printf("E");break;

case 2:printf("D");break;

case 3:printf("C");break;

case 4:printf("B");break;

case 5:printf("A");break;

default :printf("请核对您的成绩");break;

}

return 0;

}

5.3.3任务难点提示

switch case时注意break的使用。

5.4作业四(25分钟)

5.4.1作业任务

给你个不多于5位的正整数,要去:

1)求出它是几位数;

2)分别输出每一位数字;

3)按逆序输出各位数字,例如原数为321,应输出123

5.4.2任务要求

1)给出适当的提示信息和注释信息。

2)从键盘输入不多于5位的数。若大于五位数提示输入错误。

int main(){

int a;

scanf("%d",&a);

if(a>99999){

printf("请输入一个小于五位的数字");

}else if(a>9999){

int b,c,d,e,f;

b=a/10000;

c=a/1000%10;

d=a/100%10;

e=a/10%10;

f=a%10;

printf("这是一个五位数\n");

printf("每一位数字分别是%d,%d,%d,%d,%d\n",b,c,d,e,f);

printf("逆序每一位数字分别是%d,%d,%d,%d,%d",f,e,d,c,b);

}else if(a>999){

int b,c,d,e;

b=a/1000;

c=a/100%10;

d=a/10%10;

e=a%10;

printf("这是一个四位数\n");

printf("每一位数字分别是%d,%d,%d,%d\n",b,c,d,e);

printf("逆序每一位数字分别是%d,%d,%d,%d",e,d,c,b);

}else if(a>99){

int b,c,d;

b=a/100;

c=a/10%10;

d=a%10;

printf("这是一个三位数\n");

printf("每一位数字分别是%d,%d,%d\n",b,c,d);

printf("逆序每一位数字分别是%d,%d,%d",d,c,b);

}else if(a>9){

int b,c;

b=a/10;

c=a%10;

printf("这是一个两位数\n");

printf("每一位数字分别是%d,%d\n",b,c);

printf("逆序每一位数字分别是%d,%d",c,b);

}else if(a>=0){

printf("这是一个一位数\n");

printf("每一位数字分别是%d\n",a);

printf("逆序每一位数字分别是%d",a);

}

return 0;

}

5.4.3任务难点提示

1)利用if语句判断是否大于五位数。

2)判断几位数方法if(n>9999){五位数}

else if(n>999){ 四位数}

3)分别利用/%求每一位数字如324 324/100=4, 324-(4*100)/10=3,324%10=4

5.5作业五(20分钟)

5.5.1作业任务

从键盘输入三个整数,判断是否能构成三角形,若能构成三角形判断是直角三角形,等腰三角形还是等边三角形还是任意三角形。

#include<stdio.h>

int main(){

int a,b,c,d;

printf("请输入三个整数\n");

fflush(stdout);

scanf("%d",&a);

scanf("%d",&b);

scanf("%d",&c);

if(a>b){

d=a;

a=b;

b=d;

}

if(a>c){

d=a;

a=c;

c=d;

}

if(b>c){

d=b;

b=c;

c=d;

}

if(a+b>c){

printf("能构成三角形\n");

if(a*a+b*b==c*c){

printf("此三角形为直角三角形");

}

else if(a*a+b*b>c*c){

printf("此三角形为钝角三角形");

}

else if(a*a+b*b<c*c){

printf("此三角形为锐角三角形");

}

}

else{

printf("不能构成三角形");

}

return 0;

}

5.5.2任务要求

1)给出适当的提示信息和注释信息。

2)要求分别使用简单的if语句和在else中嵌套if-else语句的格式进行实现。

5.5.3任务难点提示

1)构成三角形条件(两边之和大于第三边)

2)直角三角形a*a=b*b+c*c,钝角三角形a*a>b*b+c*c,锐角三角形a*a<b*b+c*c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值