分支与循环

C语言基本程序结构

|------|-------|--------|----------|
| 顺序结构 | | | |
| 选择结构 | if | switch | |
| 循环结构 | while | for | do while |

if语句

注意:if里有两句及以上的要带花括号,例如if(条件){语句}

非0表示真,0表示假

复制代码
if(1 == 2)
    printf("hello\n");
没有结果

输入一个整数,判断是否为奇数

复制代码
int num = 0;
scanf("%d".&num);
if(num % 2 == 1)
    printf("%d为奇数\n",num);
else
    printf("%d为偶数\n",num);

嵌套if

复制代码
int num = 0;
scanf("%d",&num);
if(num == 0)
    printf("输入的值是0\n");
else{
    if(num > 0)
        printf("输入的值是正数\n");
    else
        printf("输入的值是负数\n");
}

或者简化版嵌套if

复制代码
int num = 0;
scanf("%d",&num);
if(num == 0)
    printf("输入的值是0\n");
else if (num > 0)
    printf("输入的值是正数\n");
else
    printf("输入的值是负数\n");

练习题

复制代码
int edge = 0
scanf("%d",&edge);
if(edge < 18)
    printf("少年\n");
else if(edge <=44)
        printf("青年\n");
else if(edge <=59)
        printf("中老年\n");
else if(edge <=89)
        printf("老年\n");
else 
        printf("老寿星\n");

关系操作符

>、<、>=、<=、==、!=

条件操作符

也叫三目操作符。表达式为 exp1 ? exp2 : exp3

用法:使用条件表达式实现找另个数中的较大值

复制代码
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
int m = (a > b ? a : b);
printf("m = %d\n",m);

逻辑操作符:&&,||,!

逻辑与:&&

两边同时为真时,整个表达式才为真。

如果左边为假那就不用算右边的了,这叫短路

逻辑或:||

两边同时为假时,整个表达式才为假。

如果左边为真的时候,右边就不用算了。

逻辑取反运算符:!

|----|----|
| a | !a |
| 非0 | 0 |
| 0 | 1 |

复制代码
int flag = 5;
scanf("%d",&flag);
if(!flag)    //flag为假那要做什么的事
{
    printf("hello\n");
}

练习:

输入一个年份year,判断year是否为闰年

闰年判断规则:

1.能被4整除并且不能被100整除

2.能被400整除

复制代码
int year = 0;
scanf("%d",&year);
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
    printf("%d 是闰年",year);

switch语句

实现分支结构。是一种特殊的if...else结构,用于判断条件有多个结果的情况。

所有的case里面要加break,不然不会跳出结果。有特殊情况也可以不加。

default语句可有可无,用于处理case处理不了的情况。

复制代码
switch(){
    case valuel:statemant;
                break;
    case vasuel:statemant;
                break;
    default:statemant;
}

输入任意一个整数值,计算除3以后的余数

复制代码
int n = 0;
scanf("%d",&n);
switch(n % 3){
    case 0:
        printf("余数是0\n");
        break;
    case 1:
        printf("余数是1\n");
        break;
    case 2:
        printf("余数是2\n");
        break;
}

字符类型也可以用这个语句。

复制代码
char ch = 0;
scanf("%c",&ch);
switch(ch){
    case 'a':
        break;
    case 'b':
        break;
}

练习题:周一到周五输出工作日,周六、日输出休息日

复制代码
int day = 0;
scanf("%d",&day);
switch(day){
case 1:
case 2:
case 3:
case 4:
case 5:
    printf("工作日\n");
    break;
case 6:
case 7:
    printf("休息日\n");
    break;
default:
    printf("请输入1~7以内的数字\n");
    break;

while循环

复制代码
while(表达式)
    语句;

练习题:在屏幕上打印1~10的值

复制代码
int i = 1;
while(i <= 10)
{
    printf("%d",i);
    i = i + 1;
}

练习题:输入一个正整数,逆序打印这个整数的每一位

例如:输入1234,输出4 3 2 1

%是取余数

复制代码
int n = 0;
scanf("%d",n);

while(n){
    printf("%d",n % 10);
    n = n / 10;
}

for循环

初始化部分只被执行一次

注意:中间是封号;

复制代码
for(表达式1; 表达式2; 表达式3)
{
    语句
}

例题:打印1~10的值

复制代码
int i = 0;
for(i = 1; i <= 10; i++)
{
    printf("%d",i);
}

例题:计算1~100之间3的倍数的数字之和

复制代码
int i = 0;
int sum = 0;
for(i = 1; i <= 100; i++)
{
    if(i % 3 == 0)
        sum += i;
}
printf("%d\n",sum);

do-while循环(循环体至少被执行一次)

先执行再判断

复制代码
do{
    语句;
}while(表达式);

判断表达式为真再执行第二次

例题:打印1~10的值

复制代码
int i = 1;
do{
    printf("%d",i);
    i++;
}while(i<=10);

例题:输入一个正整数,计算这个整数是几位数

复制代码
int n = 0;
scanf("%d",&n); //123
int count = 0;

do{
    count++;
    n = n / 10;
}while(n);

printf("%d",count);

break和continue语句

break用于永久的终止循环,跳出循环

continue用于跳过本次循环中continue后的代码。在while和for循环中不一样

例题:打印1 2 3 4 6 7 8 9 10

只用跳过打印5就可以了

复制代码
int i = 0;
while(i <= 10){
    i++;
    if(i == 5)
        continue;
    printf("%d",i);
}

int i = 0;
for(i = 1; i <= 10; i++)
{
    if(i == 5)
        continue;

    printf("%d",i);
}

int i = 1;
do{
    i++;
    if(i == 5)
        continue;
    printf("%d",i);
}while(i<=10);
相关推荐
神仙别闹1 小时前
基于C语言处理机调度算法的实现
服务器·c语言·算法
中屹指纹浏览器1 小时前
2026住宅代理IP纯度检测、链路溯源与指纹浏览器适配调优方案
经验分享·笔记
xskukuku8 小时前
使用VSCode配置C语言运行环境
c语言·ide·vscode
xuhaoyu_cpp_java10 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
Cloud_Shy61813 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
做cv的小昊13 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风13 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
努力努力再努力wz16 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
J2虾虾16 小时前
C 语言 void 完全用法
c语言·开发语言