首页 > 其他分享 >5.流程控制语句

5.流程控制语句

时间:2023-06-29 17:11:16浏览次数:32  
标签:语句 控制 流程 printf while year total 表达式

流程控制语句

  • 顺序语句

特点:语句逐句执行

  • 选择语句

特点:出现了一种以上的情况时使用

  • 循环语句

在某个条件成立的情况下,循环执行某个语句、

关键字:
  • 选择:if-else, which-case;
  • 循环:while, do-while,for,if-goto;
  • 辅助控制:continue,break,and so on.

1.if-else语句

语句格式:

if(表达式)
    命令1;
[else
    命令2;
]
注意:使用该种表达式时,else默认与最近的if语句匹配。

if(表达式)
{
    命令1;
}
[else
{
    命令2;
}]

Example:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    while(1)
    {
		    float s;
      printf("Enter the Scores:");
        scanf("%f",&s);
        //首先规定分数必须0~100
        if(s < 0 || s > 100)
        {
            printf("请输入一个合理的分数!\n");
            //fprintf(stderr,"Input Error!\n");
            //break; 
			exit(1);
        }
        //判断scores属于哪个区间
        if(s >= 90 && s <= 100)
        {
            printf("分数等级为A!\n");
            //puts("A");字符专用输出语句
			continue;
		}
        if(s >= 80 && s < 90)
        {
            printf("分数等级为B!\n");
			continue;
        }
        if(s >= 70 && s < 80)
        {
            printf("分数等级为C!\n");
			continue;
        }
        if(s >= 60 && s < 70)
        {
            printf("分数等级为D!\n");
			continue;
        }
        else
        {
			printf("分数等级为E!\n");
			continue;
        }

	}

	exit(0);
}

输出结果:

tianxun@tianxun:~/Desktop/C-Language/progress$ ./if-else 
Enter the Scores:-1
请输入一个合理的分数!
tianxun@tianxun:~/Desktop/C-Language/progress$ ./if-else 
Enter the Scores:101
请输入一个合理的分数!
tianxun@tianxun:~/Desktop/C-Language/progress$ ./if-else 
Enter the Scores:99
分数等级为A!
Enter the Scores:87
分数等级为B!
Enter the Scores:78
分数等级为C!
Enter the Scores:65
分数等级为D!
Enter the Scores:59
分数等级为E!
Enter the Scores:105
请输入一个合理的分数!

Example2:判断闰年与平年

变量:year;
输入:year;
判断条件:year 可以被4整除且不能被100整除或者可以被400整除。

#include <stdio.h>
#include <stdlib.h>

int main()
{
  while(1)
  {
        int year;
        printf("Please Input Year : ");
        scanf("%d",&year);
    
        if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
        {
             printf("%d is leap year!\n",year);
        }
        else
        {
            printf("%d isn't leap year!\n",year);
            exit(1);
        }
  }

  exit(0);
}

输出结果:

xs@jxs-ubuntu:~/Desktop/c  language/if-else$ ./year 
Please Input Year : 2020
2020 is leap year!
Please Input Year : 2022
2022 isn't leap year!

2.switch-case语句

语句格式

switch(表达式)
{
    //常量表达式:字符、字符串、常量等,不能是表达式
    case 常量表达式:
    [CMD];
    break;
    case 常量表达式:
    [CMD];
    break;
    ···
    default:  //当表达式均不满足上述常量表达式时,默认执行此命令
    [CMD];
    break;
}

Example:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char ch;
    ch = getchar();
    
    switch(ch)
    {
        case 'A':
        case 'a':
        printf("Ahahahhahah\n");
        
        default:
        printf("Please Repeat Input Again!\n");
    }
    exit(0);
}

输出结果:


break表示退出当前switch语句,如果没有break,就会继续执行下一个case语句,出现程序执行达不到目的。

3.while ,do-while语句

语句格式

while:

while (表达式)   //满足该表达式时,开始循环
    {
       循环体语句;
    }
    
do-while:

do
{
    循环体语句;
} while(表达式);  //满足表达式时继续循环,不满足就只执行一次退出循环

while逻辑结构:

do-while逻辑结构:

两者的区别在于:

  • while 中的循环体至少执行的次数为0次,原因在于进入循环之前要先判断条件是否满足,不满足不会执行!
  • do-while中的循环体至少执行的次数为1次,原因在于终止条件在执行一次语句之后,因此是先执行循环体,在判断是否满足终止条件,无论什么情况下都要执行一次循环体。

4.for & if-goto循环语句

语句格式

//for由初始条件判断,因此至少执行0次
for(表达式1;表达式2;表达式3)  //先执行表达式1,在判断表达式2是否成立,成立的话就执行循环体,最后执行表达式3
{
    循环体;
}

if-goto  //无条件执行跳转,慎用,且不能跨函数执行。

for 逻辑结构:


Example:

for(i = LEFT; i <= RIGHT; i++)
{
    sum += i;
}
<==>
for( ; ; )  //分号不能少
{
    sum += i;
    i++;
    if(i > RIGHT)
        break;
}

5.Quiz

A以每年10%的单利息投资了100美元,B以每年5%的复合利息投资了100美元,使用程序计算需要多少年B的投资总额才会超过A,并显示该时刻两个人各自的资产总额为多少?
利不生利本利 = 本金 + 单利息 =本金 + (本金 * 利率 * 期限)= 本金 * (1 + 利率 * 期限)
利滚利本利 = 本金 + 复利息 =本金 + 本金 * 利率 ^期限 = 本金 * (1 + 利率 ^期限)

A的总金额 : 100 \times (1 + 10\% \times n)\\
B的总金额 : 100 \times (1 + 5\% ^{n})

待求解,即需要定义的两个变量:n 和 总金额total,
针对两个变量的操作:打印输出total;
逻辑:循环判断total_A 与 total_B的值,直到两者相等,并打印输出总金额。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int year;
    float total_A = 0,total_B = 0;

        for(year = 1; year > 0; year++)
        {
                total_A = 100 * (1 + 0.1 * year);
                total_B = 100 * pow((1 + 0.05),year);

                if(total_A == total_B)
                {
                        float total = total_A;

                        printf("The total investment of A and B is equal when n = %d ,the investment is %f",year, total);
                        break;
                }

        }
        exit(0);
}

标签:语句,控制,流程,printf,while,year,total,表达式
From: https://www.cnblogs.com/jxsme/p/17514686.html

相关文章

  • 如何优化生鲜配送系统开发流程?
    为了满足人们对食品的安全和快速配送的需求,如何优化生鲜配送系统开发流程是一个值得开发者们去思考的问题。一个高效的生鲜配送系统不仅提高配送效率,还能减少成本、提升客户满意度,并为企业带来竞争优势。接下来,名锐讯动MRT将介绍一些开发的关键策略,助力优化生鲜配送系统的开发流程......
  • Kafka核心总控制器Controller主要作用
    https://www.yisu.com/zixun/586556.html1简介1)更新集群元数据信息2)创建Topic3)删除Topic4)分区重分配5)preferredleader副本选举6)Topic分区扩展7)Broker加入集群8)Broker崩溃9)受控关闭10)controllerleader选举 2更新集群元数据信息Client可以从......
  • 【后端面经-Java】公平锁和加锁流程
    目录1.公平锁和非公平锁1.1基本概念1.2ReentrantLock的公平锁和非公平锁2.加锁流程2.1ReentrantLock和AQS的关系2.2公平锁-加锁流程2.3非公平锁-加锁流程2.4加锁流程和性能的关系3.面试问题模拟参考文献1.公平锁和非公平锁1.1基本概念公平锁:线程按照到来的先后......
  • PLC触摸屏高低温控制系统如何远程监控并在故障时自动报警?
    随着工业经济与技术的飞速发展,目前自动化已经应用在工业的多个场景内,PLC的推广应用是工业自动化的重要动力。在工业生产中,温度是一项关键工艺参数,事关设备运行状态、产品工艺品质、现场生产环境等,需要将温度数据采集起来进行监控,以便于对生产进行更精准、更及时的管理与控制。结合P......
  • Python控制鼠标操作神器
    我们以前讲过怎样使用Python在浏览器中实现页面自动化操作,不管用哪种方式实现,都是通过定位页面中的元素来进行相应的操作。今天我们来聊一聊如何在桌面实现自动化操作。与浏览器页面自动化操作类似,桌面自动化操作也是需要定位鼠标在桌面的位置,然后根据定位的位置执行对应的操作。......
  • Java流程控制——Scanner对象
    Scanner对象java.until.Scanner是Java5的新特性,可以通过Scanner类来获取用户的输入,实现计算机与人的交互。基础语法:Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串在读取之前一般需要使用hasNext()和hasNextLine()判断是否还有输......
  • VulnHub-DC-7渗透流程
    DC-7kali:192.168.157.131靶机:192.168.157.151信息收集nmap-sV-A-p-192.168.157.151虽然有robots.txt等敏感文件泄露但是用处不大,但在网页底部有@dc7user搜索一番,在github找到了他的项目,在config.php内得到了登录用户与密码$username="dc7user";$password="Md......
  • arduino控制电机
    https://howtomechatronics.com/tutorials/arduino/how-to-control-stepper-motor-with-a4988-driver-and-arduino/A4988步进驱动器引脚分配现在让我们仔细看看驱动器的引脚排列,并将其与步进电机和控制器连接起来。因此,我们将从按钮右侧的2个引脚开始为驱动器供电,我们需要将......
  • 客户端在HDFS上读、写数据的流程
      ......
  • VulnHub_DC-6渗透流程
    DC-6kali:192.168.157.131靶机:192.168.157.150修改host文件,添加192.168.157.150wordy不然解析不了域名信息收集发现是WordPress5.1.1,探测一下用户,使用wpscan对其用户进行枚举wpscan--urlhttp://wordy/--enumerateu另存为user.txt扫一下目录找到登录界面访问http......