分支与循环

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);
相关推荐
Rabitebla20 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖1 天前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
another heaven1 天前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
Code_Solitude1 天前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
YLCHUP1 天前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
Zwawa1 天前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
c语言·单片机·嵌入式
旖旎夜光1 天前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
꧁细听勿语情꧂1 天前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
星恒随风2 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
§ꦿCFོ༉2 天前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习