首页 > 其他分享 >酸奶配面包的c语言世界(3)

酸奶配面包的c语言世界(3)

时间:2024-08-01 20:56:59浏览次数:11  
标签:case 面包 main 语言 int 语句 printf include 酸奶

第三讲:分支与循环(上)

写自己的东西 不要做留声机 不要做写满字的纸 要做孤天的鹤                                       ——24.7.29


1.if语句

if语句的语法形式:

if(表达式)
    语句

c语言中,0表示假,非0表示真

表达式为非0(真),那么语句执行,表达式为0(假),则语句不执行 

举个例子 

//输入整数,判断是否为奇数
#include <stdio.h>
int main()
{
    int num=0;
    scanf("%d",&num);
    if(num%2==1)
        printf("%d是奇数\n",num);
    return 0;
}

else的用法 即if...else...语句 (非黑即白 不是if的 那就是else)

if(表达式)
    语句1
else
    语句2

 举个例子

#include <stdio.h>
int main()
{
     int num=0;
     scanf("%d",&num);
     if(num%2==1)
        printf("%d是奇数\n",num);
     else
        printf("%d是偶数\n",num);
     return 0;
}





又或者

//输入一个年龄,>=18岁就成年;否则就未成年
#include <stdio.h>

int main()
{
    int age=0;
    scanf("%d",&age);
    if(age>=18)
         printf("成年\n");
    else
         printf("未成年\n");
    return 0;
}

如分支中包含多条语句 可用{}

举个例子

#include <stdio.h>
int main()
{
    int age=0;
    scanf("%d",&age);
    if(age>=18)
    {
        printf("成年了\n");
        printf("可以谈恋爱了\n");
    }
    else
    {
        printf("未成年\n");
        printf("不可以早恋哦\n");
}
    return 0;
}

嵌套if 即if...else...连环使用

//输入一个整数, 判断是正数还是负数还是0
#include <stdio.h>

int main()
{
    int num=0;
    scanf("%d",&num);
    if(num==0)
         printf("输入的数字是0\n");
    else if(num>0)
         printf("输入的数字是正数\n");
    else 
         printf("输入的数字是负数\n");

   return 0;
}

 做个小练习吧

//输⼊⼀个⼈的年龄
//如果年龄 < 18岁,打印"少年"
//    如果年龄在18岁⾄44岁打印"⻘年"
//    如果年龄在45岁⾄59岁打印"中⽼年"
//    如果90岁及以上打印"⽼寿星

#include <stdio.h>

    int main()
{
    int age = 0;
    scanf("%d",&age);
    if (age < 18)
         printf("少年");
    
   else if (age <=44)
         printf("青年");
    
   else if (age <=59)
   printf("中老年");
    
   else if (age <=89)
   printf("老年");
    
   else
       printf("老寿星");
    
    return 0;
}

如果有多个if和else,那么else总是和最接近的if匹配

2.关系操作符

  • >大于运算符
  • <小于运算符
  • >=大于等于运算符
  • <=小于等于运算符
  • ==相等运算符
  • !=不相等运算符

注意x==3与x=3的含义不一样 为了防止错误 可以写成3==x

另外 多个关系运算符不宜连用 即i<j<k 应写为i<j &&j<k

3.条件操作符

条件操作符也叫三目操作符 其格式如下

exp1 ? exp2 : exp3

如果exp1为真,那么exp2就是表达式的结果

如果exp1为假,那么跳过exp2,exp3是表达式的结果

练习一下

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a,& b);
	int m = a > b ? a : b;
	printf("%d\n", m);

	return 0;
}

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

  • && 并且的意思 两侧的表达式都为真才为真 否则为假(可以理解为任意)
aba&&b
非0

非0

1
非000
0非00
000
  • || 或者的意思 两侧表达式只要有一个为真 就为真 否则为假(可以理解为存在)
aba||b
非0非01
非001
0非01
000
  • !改变表达式的真假

如果“flag”为真,那么“!flag”为假;如果flag为假,那么“!flag”为真


练习一下吧

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

//判断规则为:
//1.能被4整除且不能被100乘除
//2.能被400整除
//两个条件满足其一就可

#include <stdio.h>

int main()
{
    int year = 0;
    scanf("%d", &year);
    if ((year % 4 == 0 && year % 100 != 0) ||( year % 400 == 0))
    printf("是闰年\n");

    return 0;
}

讲讲短路吧

逻辑运算符有一个特点 就是从左往右算 

那么当&&语句中 表达式左边为假 那么右边也没有计算意义了(整条语句不成立) 就停止运算了 这就是短路

当||语句中 表达式左边为真 那么右边也没有计算意义了(整条语句已成立)就停止运算了 这也是短路

5.switch语句

switch是一种特殊形式的if...else...结构 属于修改后的更好用 更易用的else if

switch (expression)
{
    case value1:statement
    case value2:statement
    default:statement
}

如果找不到对应的case 就执行default

switch后的expression必须是整型

case后的值 必须是整型常量表达式


对比一下if语句和switch

//if语句
//输入任意一个整数值,计算除3之后的余数

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    if (n % 3 == 0)
        printf("整除,余数是0\n");
    else if (n % 3 == 1)
        printf("余数是1\n");
    else
        printf("余数是2\n");

    return 0;
}
//while语句

#include <stdio.h>

int main()
{
    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;
    }

    return 0;
}

需要注意 case和后面的数字之间得有空格

每一个case执行完成后 需要加上break 才能跳出这个switch语句 

但是是否使用break 要灵活判断 

举个例子

//输入1-5,输出“工作日”
//输入6-7,输出“休息日”

#include <stdio.h>

int main()
{
    int m = 0;
    scanf("%d", &m);
    switch (m)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
            printf("工作日");
            break;
    
    
    case 6:
    case 7:
            printf("休息日");
            break;
    }
    return 0;
}

关于default 当switch后的表达式与每一个case都不适配 那么就使用default语句

通常把default放最后 但是无硬性要求

举个例子

//输入1-5,输出“工作日”
//输入6-7,输出“休息日”
//如果输入其他,输出“输入错误”

#include <stdio.h>

int main()
{
    int m = 0;
    scanf("%d", &m);
    switch (m)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日");
        break;


    case 6:
    case 7:
        printf("休息日");
        break;
    default:
        printf("输入错误");
            break;
    }
    return 0;
}

6.while循环

while的语法结构与if相似

if(表达式)
    语句;

while(表达式)
       语句;

对比一下吧

//if语句
#include <stdio.h>

int main()
{
    if(1)
         printf("hehe\n");//if后的条件满足,打印一次hehe

    return 0;
}
//while语句

#include <stdio.h>

int main()
{
    while(1)
    printf("hehe\n");//while后的条件满足,循环打印hehe

    return 0;
}

 区别就是 while是循环 而if只是语句


练习一下吧

//在屏幕上打印1-10的值
#include <stdio.h>
int main()
{
   int i=1;
   while(i<10)
   {
       printf("%d",i);
       i=i+1;
   }
   return 0;
}

7.for循环

 for循环是三种循环用得最多的 格式如下

for(表达式1;表达式2;表达式3)
     语句;

表达式1用于变量初始化

表达式2用于结束条件的判断

表达式3用于循环变量的调整 


举个例子

//在屏幕上上打印1-10的值
#include <stdio.h>

int main()
{
    int i=0;
    for(i=1;i<10;i++)
    {
        printf("%d",i);
    }
  return 0;
}

再练习一下吧

//计算1-100之间3的倍数的数字之和
#include <stdio.h>

int main()
{
    int i=0;
    int sum=0;
    for(i=1;i<=100;i++)
    {
       if(i % 3 ==0)
           sum +=i;
    }
    printf("%d",sum);
    return  0;
}

8.do-while循环 

用得最少 格式如下

do
     语句;
while(表达式);

 do while循环先执行一次 再判断表达式真假 为真则继续往下执行

举个例子

//打印1-10
#include <stdio.h>

int main()
{
    int i = 1;
    do
    {
         printf("%d",i);
         i=i+1;
    }while(i<=10);

    return 0;
}

9.break和continue语句

break就是停止循环

continue就是跳过本次循环中 continue以后的代码 进行下一次循环

10.循环的嵌套

即while,do while以及for三种循环嵌套一起

练习一下吧

//找出100~200之间的质数 并打印在屏幕上

//解析:
//1.首先得有100~200之间的数,这里可以用循环解决
//2.假设为质数,然后拿2~(i-1)之间的数去试除,这里需要有2~(i-1)之间的数,也可用循环解决
//3.如果可以整除,那就不是质数,反之为质数

#include <stdio.h>
int main()
{
    int i = 0;
    //循环产生100~200的数字
    for (i = 100; i <= 200; i++)
    {
        //判断i是否为质数
        //循环产生2~(i-1)之间的数字
        int j = 0;
        int flag = 1;//假设i是质数
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
            printf("%d", i);
    }
    return 0;
}

11.goto语句

goto语句的作用是跳转 但尽量不要过度使用

#include <stdio.h>
int main()
{
     printf("hehe\n");
     goto next;
     printf("haha\n");

next: 
     printf("跳过了haha的打印\n");
     return 0;
}

标签:case,面包,main,语言,int,语句,printf,include,酸奶
From: https://blog.csdn.net/2402_86305533/article/details/140705216

相关文章

  • 嵌入式开发C语言学习day26-华清作业8.1
    思维导图作业//使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源#include<myhead.h>#defineMAX1024structBuf{charfile1[20];charfile2[20];intsize;};//进程1拷贝前半内容void*copy......
  • Self-Instruct:将语言模型与自我生成的指令对齐
    论文:SELF-INSTRUCT:AligningLanguageModelswithSelf-GeneratedInstructionsArxiv:https://arxiv.org/abs/2212.10560论文背景        大型“指令调整”语言模型(即微调以响应指令)已经证明了将零样本泛化到新任务的显着能力。然而,它们在很大程度上依赖于人类编......
  • 分词算法:自然语言处理中的关键技术
    分词算法:自然语言处理中的关键技术大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!分词(Tokenization)是自然语言处理(NLP)中的一项基础技术,旨在将文本拆分成有意义的单位,如单词或词组。分词在文本分析、信息检索、机器翻译等应用中发挥着重要作用。本文将介......
  • 图的遍历及其C语言实现
    目录1.为什么需要两种遍历方法?2.深度优先搜索(DeepthFirstSearch,DFS)思想:具体过程:伪代码:时间复杂度:3.广度优先搜索(BreadthFirstSearch,BFS) 思想:具体过程: 伪代码: 时间复杂度:图示: ​编辑 C语言代码演示1.为什么需要两种遍历方法?解决不同问题:DFS适用......
  • [240801] 类 C 语言 C3 是一种进化,而不是一场革命 | 趣文: find + mkdir 是图灵完备
    目录类C语言C3是一种进化,而不是一场革命C3编程语言特征C3设计原则安装C3编程语言第一个C3项目趣文:find+mkdir是图灵完备类C语言C3是一种进化,而不是一场革命C3是基于C的编程语言,它是C的一种演变,其目标是在尽可能保留C相同语法情况下进行改......
  • 论文写作遇到AIGC检测难题?笔灵AI去痕,让你的论文更贴近自然语言
    在当今时代,AI在学术写作中的应用日益普及,但这也引发了关于学术诚信和原创性的讨论。尽管使用AI撰写论文可能在一定程度上简化了写作过程,但学术界已经对这种趋势做出了回应,引入了AI生成内容(AIGC)检测机制,以识别和处理那些完全依赖AI生成的论文。一、论文AI检测与对策学术界已经......
  • 三种语言实现计算二进制中1的个数(C++/Python/Java)
    题目给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。输入格式第一行包含整数n。第二行包含n个整数,表示整个数列。输出格式共一行,包含n个整数,其中的第i个数表示数列中的第i个数的二进制表示中1的个数。数据范围1≤n≤100000,0≤数列中......
  • 三种语言实现双指针判断子序列(C++/Python/Java)
    题目给定一个长度为n的整数序列a1,a2,…,an以及一个长度为m的整数序列b1,b2,…,bm。请你判断a序列是否为b序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列{a1,a3,a5}是序列{a1,a2,a3,a4,a5}的一个子序列。输入格式第一行包含两个整数......
  • 三种语言实现双指针解决数组元素的目标和(C++/Python/Java)
    题目给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i]+B[j]=x的数对(i,j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数......
  • C语言——循环语句
            C语言是结构化的程序设计语言,这里的结构是指:顺序结构、循环结构、选择结构。在C语言中,有三种循环语句,下文将一一介绍如何在C语言编程时使用。1.while语句        while语句的语法形式如下:1while(表达式);2{    语句;    }   ......