【C语言】三大程序结构(顺序、选择、循环)

一、顺序结构

 顺序结构的程序设计是最简单的,起包含的语句按照书写的顺序执行,且每条语句都将被执行。其他的结构可以包括顺序结构,也可以作为顺序结构的组成部分。


 它的执行顺序是自上而下,依次执行。
在这里插入图片描述
例如:输入三个字符,将他们反向输出

#include <stdio.h>
int main()
{
	char ch1, ch2 ,ch3;
	printf("请输入三个字符:")
	ch1 = getchar();
	ch2 = getchar();
	ch3 = getchar();	//依次输入三个字符
	putchar(ch3);
	putchar(ch2);
	putchar(ch1);	//反向输出三个字符
	return 0;
}

运行结果:

请输入三个字符:ABC
CBA

注释:
 在输入三个字符的时候要连续输入,不要用空格符隔开。


二、选择结构

1. if语句

 语法格式

if (条件表达式)
{
	//条件表达式为 ture 时执行的代码
}

条件为真, 执行if中的语句, 然后再执行if条件之外的语句, 反之则不执行if中的语句, 直接执行if条件之后的语句


 根据年龄判断是否已经成年

int age = 20;
if( age > 18 )
{
	printf("年龄达到18周岁,已经成年了");
}

 判断一个数是否在5到10之间

int num = 8 ;
if( num > 5 && num < 10 )
{
	printf("num是5到10之间的数");
}

2. if…else 语句

 简单的 if 语句用于实现单分支的选择结构。C语言还提供了 if else 语句,用于实现双分支的选择结构。


 语法格式

if (条件表达式)
{	
	//条件表达式为 true 时执行的代码
}
else 
{
	//条件表达式为 false 时执行的代码
}

条件为真,执行if中的语句,然后再执行if…else之后的语句;反之执行else中的语句,然后再执行if…else之后的语句。
在这里插入图片描述


 输入两个实数,输出最大值
#include <stdio.h>
int main()
{
	double a, b, t;
	printf("请输入两个实数");
	scanf("%lf,%lf",&a,&b);
	if(a>b)
		printf("max= %.4f\n",a);
	else
		printf("max= %.4f\n",b);
	return 0;
}

运行结果

第一次运行:

输入两个实数:3 . 54,2 . 34
max = 3 . 5400

第二次运行:

输入两个实数:2 . 34, 3 . 54
max = 3 . 5400


3.多分支选择结构(if…else if…else语句)

语法格式

if( 条件表达式一)
{
	//当条件一为 true 时执行的代码
}
else if (条件表达式二)
{
	//当条件二为 true 时执行的代码
}
else
{
	//当条件一 和 条件二 都不为 true 时执行的代码
}

如果条件表达式一为真,执行if中的语句;如果表达式二为真,执行if…else中的语句;如果条件都不满足执行else中的语句,最后再执行if … else if … else之后的语句。
在这里插入图片描述


接收一个人的成绩, 如果成绩为: 90(包含)到100(包含)输出优秀, 70(包含)到90输出良好, 60(包含)到70输出及格, 60分以下输出不及格。
#include <stdio.h>
int main()
{
	flaot score;
	printf("请输入你的成绩:");
	scanf(" % f, &score);
	if(score < 0 || score > 100 )
		printf("输入有误!\n");
	else if(score < 60)
		printf("不合格");
	else if(score < 70)
		printf("及格\n");
	else if (score < 90)
		printf("良好\n");
	else 
	printf("优秀");
	return 0;
}	

运行结果

第一次运行

输入你的成绩:56
不合格

第二次运行

输入你的成绩:103
输入有误 !


## 4.switch 语句 语句格式
switch (表达式) {
    case 表达式1:
        语句序列;
        break;
    case 表达式2:
        语句序列;
        break;
    case 表达式3:
        语句序列;
        break;
       ……
    default:
        默认语句;
        break;
}

switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果存在default语句的情况)。
在这里插入图片描述
给定一个成绩等级,输入成绩提示

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   char grade = 'B';
 
   switch(grade)
   {
   case 'A' :
      printf("很棒!\n" );
      break;
   case 'B' :
   case 'C' :
      printf("做得好\n" );
      break;
   case 'D' :
      printf("您通过了\n" );
      break;
   case 'F' :
      printf("最好再试一下\n" );
      break;
   default :
      printf("无效的成绩\n" );
   }
   printf("您的成绩是 %c\n", grade );
 
   return 0;
}

运行结果

做得好
您的成绩是 B

三、循环结构

1.while循环

语法格式

while(表达式)
{
    语句;
    ………
}
语句;

  (1)首先判断while后边括号内的表达式是否为真,若为真即执行大括号内的语句,若为假,则跳过while循环结构执行大括号下方的第一条语句。
(2) 若为真,当执行完大括号内语句后,再次按照(1)去判断,执行。
(3) 直到while后小括号内表达式的表达式为假,结束循环。

注意:若在while的大括号内执行了
break语句,则立刻结束循环结构,开始执行大括号外下方的第一条语句。

 例子1:

#include <stdio.h>
int main()
{
    int a = 5, b = 10;
    while(b > a)       //即若b > a 为真就执行大括号内的语句,
    {                  //若为假则执行大括号下方语句
        printf("while looping a = %d, b = %d\n", a, b);
        a++;
    }
    printf("while loop over\n");

    return 0;
}

运行结果
在这里插入图片描述
即当,a的值等于10时,b>a 不成立,循环结束。

2. do…while循环

例子1:do…while循环

#include  <stdio.h>
int main()
{
    int a = 10, b = 10;
    do
    {
        printf("while looping a = %d, b = %d\n", a, b);
    }while(b > a);

    printf("while loop over\n");
    return 0;
}

运行结果

在这里插入图片描述
例子2:while循环

#include <stdio.h>
int main()
{
    int a = 10, b = 10;
    while(b > a)
    {
        printf("while looping a = %d, b = %d\n", a, b);
    }
    printf("while loop over\n");
    return 0;
}

运行结果
请添加图片描述
以上两个例子,while的表达式和 while循环体内的语句是一模一样的,执行后会产生不一样的结果,你会看到do…while…
的结构 会执行一次循环体内的打印输出语句,而while循环则,因b>a为假而没有执行。

即:do…while… 结构
先执行一次循环体内的语句然后再判断while后括号内的表达式的真假,除此之外跟上边的 while结构是一样的。

3.for 循环

for 循环是一种更为灵活的循环控制结构,完全可以替代上边的while循环

for(循环变量赋初值;循环条件判断;循环变量值变化)
{
    语句1;
    语句2;
    语句3;
    …………;
} 

执行流程
在这里插入图片描述

#include  <stdio.h>
int main()
{
    int i;
    for(i = 0; i < 3; i++)
    {
        printf("print the value of i =%d\n", i);
    }
    return 0;
}

运行结果
在这里插入图片描述
我们可以看到:
循环变量赋初值: 将 i 的初始值变成 0
循环条件判断: 判断 i 是否小于3,若小于3则为真,其它为假
循环变量值变化: i 的值自动加1


另外: 除了break 语句可以结束循环体外,这里再介绍一个continue语句,这个语句跟break语句一样,也可以结束循环体,但不同的是,它只是结束本次循环,循环体会跳过continue一下的语句,直接去再次判断循环条件,进行下一次的循环操作。

#include <stdio.h>
int main()
{
    int i;
    for(i = 0; i < 3; i++)
    {
        //即当i等于1的时候,执行 continue语句,结束本次循环
        //即当i等于1的时候不会打印信息,直接执行下一个循环
        if(i == 1) 
        { 
            continue;
        }
        printf(" print the value of i = %d\n", i);
    }
    return 0;
}

运行结果
在这里插入图片描述


这三大结构各有不同,希望大家把上述的例子都运行一遍,也可以根据自己的创意改一改,然后保存,编译运行,看看结果如何。这些结构的熟练掌握都是需要多多练习的,加油!!!

> 😜 相 见 就 是 【 猿 分 】 🐒
.
👀 感谢您阅读完此文章 👀
.
❓ 希望能够对你有所帮助 🎯
.
❌ 如果文章中有错误的地方请指正 ✔️
.
💪 感谢支持,一起加油,共同进步 🏃

  • 57
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值