当前位置: 首页 > news >正文

3分钟快速掌握——c语言【流程控制】if else选择语句,for while循环,goto语句

流程控制

在程序设计中,流程控制一共有三种:顺序结构、选择结构、循环结构

顺序结构:程序从上到下顺序执行

选择结构:根据选择条件的不同,执行不同语句的结构

循环结构:根据条件控制,重复执行某些代码的结构

1.  选择语句

1. if 语句

  • 基本功能:根据条件的真假执行不同的代码。
  • 解释:如果 a > 5,打印输出 "a is greater than 5"。
    int a = 10;
    if (a > 5) {printf("a is greater than 5\n");
    }

2.if-else 语句

  • 基本功能:当条件为真时执行一部分代码,为假时执行另一部分代码。
  • 解释:如果 a > 5,打印第一句;否则打印第二句
int a = 3;
if (a > 5) {printf("a is greater than 5\n");
} else {printf("a is not greater than 5\n");
}

3.多分支的 if-else if-else 语句

  • 基本功能:当有多个条件需要判断时,根据满足的条件执行对应代码。

 if (条件1) {
    // 条件1为真时执行的代码
} else if (条件2) {
    // 条件2为真时执行的代码
} else {
    // 上述条件都不成立时执行的代码
}

4. switch 语句

  • 基本功能:根据表达式的值选择多个分支之一执行,常用于简单的等值判断。

 switch (表达式) {
    case 值1:
        // 表达式等于值1时执行
        break;
    case 值2:
        // 表达式等于值2时执行
        break;
    default:
        // 表达式不等于上述任何值时执行
        break;
}

//如果 a == 1,执行第一个分支。
//如果 a == 2,执行第二个分支。
//如果 a 不等于 1 或 2,执行默认分支。int a = 2;
switch (a) {case 1:printf("a is 1\n");break;case 2:printf("a is 2\n");break;default:printf("a is not 1 or 2\n");break;
}

2.循环语句

1.while 循环

  • 功能:只要条件成立,就重复执行循环体,先判断条件再执行循环体。
  • 特点:条件为真时执行循环体;如果条件一开始为假,循环体可能一次都不执行。

 while (条件)  {
    // 循环体
 }

int i = 1;
while (i <= 5) {printf("%d\n", i);i++;
}

while打印九九乘法表 :

#include <stdio.h>
int main(int argc, const char *argv[])
{int h=1;while (h<=9){int l=1;while (l<=h){printf("%d*%d=%-2d  ",h,l,h*l);l++;}printf("\n");h++;}return 0;
}

2. do-while 循环

  • 功能:先执行一次循环体,然后判断条件是否成立,条件为真则继续循环。
  • 特点至少执行一次循环体,无论条件是否成立。

 do {
    // 循环体
} while (条件);

int i = 1;
do {printf("%d\n", i);i++;
} while (i <= 5);

3. for 循环

  • 功能:用于循环次数已知的情况,通过初始化、条件判断、增量(或减量)控制循环。
  • 特点:适合用于已知循环次数的场景。

for (初始化; 条件; 更新) {
    // 循环体

for (int i = 1; i <= 5; i++) {printf("%d\n", i);
}

例题:

         有一堆桃子,猴子每天会吃去当前的桃子数量的一半再多一个,如此往复十天,只剩一个桃子,问第一天的桃子数量是 多少

4. 跳转控制语句

  • break:跳出当前循环,终止循环的执行。
  • continue:跳过当前循环的剩余部分,直接进入下一次循环。

3.循环的嵌套

概念

在使用循环时一个循环的循环体内部还包含另一个循环

int i,j;
for(i=0;i<10;i++)
{
    for(j=0;j<15;j++)
    {            
    }
}
解释:外层循环执行一次,内层循环则执行一轮
循环执行的总次数:10*15

练习:打印99乘法表

#include<stdio.h>
int main( int argc, const char * argv[ ])
{int i,j;//定义两个循环变量,第一个变量表示行号,第二个变量表示这一行的第几个表达式//通过观察,每一行表达式的数量就是行号,所以j的值最大就是i的数值for(i=1;i<10;i++){for(j=1;j<=i;j++){printf("%d*%d=%d\t",j,i,i*j);//  \t制表符}putchar('\n');//换行}return 0;
}

4.死循环

5.goto语句

概念

goto语句是跳转语句,我们可以通过goto语句跳转到指定位置去执行代码

格式

标签:
         代码段

          ......
        go 标签名;//跳转到指定的标签下执行

注意:一般不要用,因为goto会打破语句的正常执行顺序 

6.循环练习

练习1:编写一个程序,要求用户输入一个整数n,然后使用while循环计算n!(即n的阶乘)。阶乘是一个正整数的所有小于等于它的正整数的积,并且输入的该数只能在1到20之间

练习2 : 编写一个C程序,输入三个整数,判断并输出这三个数中的最大值

练习3: 猜数字游戏

描述:设计一个猜数字游戏,程序随机生成一个1到100之间的数字,用户需要在指定的次数内猜对这个数字。如果用户猜对,

输出恭喜消息并结束游戏。如果用户猜错,提示数字是“大”还是“小”,并允许继续猜。用户最多只能猜10次。

要求:

· 使用while循环实现游戏的循环结构。

· 生成随机数,并限制用户的猜测次数。

· 提示用户数字大小,并且计算猜测次数。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, const char *argv[])
{srand(time(NULL));int n=rand()%100+1;//生成1-100的随机数int js=10,a=1,x;while(js>0){  printf("输入数字:");
loop:	scanf("%d",&x);if (x<0||x>100){printf("不符合规定重新输入:");goto loop;}else if (x==n){printf("猜对了\n");break;}else{if (x<n){printf("第%d次小了\n",a);}else{printf("第%d次大了\n",a);}}a++;js--;}printf ("猜测次数:%d\n",--a);printf("随机数是:%d\n",n);return 0;
}

作业:

1.打印菱形

描述:*组成的菱形图案,用户输入一个奇数 n,表示菱形的最大宽度(即中间一行的星号数)。程序应该使用 while 循环生成这个菱形图案。

  • 外层循环控制菱形的行数。
  • 内层循环分别控制每行的空格和星号的数量。
  • 程序从上半部分逐行增加星号数,再从下半部分逐行减少星号数,形成对称的菱形结构。

n=5
  *         2空格      1*      n/2-0      2*i+1            循环次数:
 ***       1空格      3*      n/2-1                    上半部分:n/2+1
*****     0空格      5*      n/2-2                     下半部分:n/2
 ***       1空格      3*       0+1      n-2*i-2
  *         2空格      1*       1+1 

  #include<stdio.h>#include <stdlib.h>#include <time.h>int main( int argc, const char * argv[ ]){int input,i=0;int space;//保存这一行空格的数量int star;//保存这一行*的数量printf("请输入一个奇数>");scanf("%d",&input);while(i<input/2+1)//打印菱形上半部分  i这个循环变量可以表示行{//先去打印空格space=input/2-i;while(space--){printf(" ");//输出空格}//再打印*star=2*i+1;while(star--){printf("*");}putchar(10);i++;}i=0;//c重置循环变量的数值为0while(i<input/2){//先打印空格space=i+1;while(space--){printf(" ");}star=input-2*i-2;while(star--)//再打印*{printf("*");}i++;putchar(10);}return 0;}


http://www.mrgr.cn/news/78892.html

相关文章:

  • 大模型安全科技发展仍处在起步阶段
  • Linux 各个目录作用
  • jupyter-lab 环境构建
  • Flink四大基石之CheckPoint(检查点) 的使用详解
  • https证书申请的流程
  • 【如何提升代码工程质量】日志篇
  • java基础概念46-数据结构1
  • Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,getent命令以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题
  • 爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略
  • 长安汽车嵌入式面试题及参考答案
  • 开源鸿蒙system ability manager关键属性解析
  • 爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析
  • linux网络抓包工具
  • PyQt6思维导图和实例(登录帝国时代)
  • Linux 35.6 + JetPack v5.1.4@DeepStream安装
  • echarts的双X轴,父级居中的相关配置
  • IDEA 配置鼠标悬浮后显示方法注释 javaDoc
  • EasyMedia播放rtsprtmp视频流(flvhls)
  • 运输层总结
  • Win10+Ubuntu20.04双系统重装Ubuntu22.04单系统
  • Hive学习基本概念
  • 在全志 T113-S3 开发板上运行 AWTK
  • Rust : 生成日历管理markdown文件的小工具
  • 人体热释电传感器
  • 从最浅层剖析C语言————第六节(深入了解数组传参、嵌套调用以及链式访问)
  • 2024.12.2工作复盘