c语言基础教学

学习目标:

  • 两周掌握 c语言 入门知识

学习内容:

  1. 数据类型:了解C语言中的数据类型,包括整型、浮点型、字符型等,并学会如何声明和使用不同类型的变量。

  2. 运算符:掌握C语言中常用的运算符,包括算术运算符、关系运算符、逻辑运算符等,并了解它们的优先级和使用方法。

  3. 控制流程:学习C语言中的控制结构,包括条件语句(if-else语句)、循环语句(for循环、while循环)以及选择语句(switch语句),掌握条件判断和循环控制的基本用法。

     好了说了那么多我们开始了解c语言吧

1. c语言的关键字:

C语言仅有32个关键字,9种控制语句,34种运算符,却能完成无数的功能:

    C语言中的关键字有以下全部,我来分别介绍每个关键字的用法:


    auto、break、case、char、const、continue、default、do、double、else、enum、extern、

float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while


1. auto:auto关键字用于声明函数内部的局部变量,表示变量的存储类别为自动。

2. break:break关键字用于在循环或switch语句中终止当前循环或条件的执行,跳出循环体或switch块。

3. case:case关键字用于在switch语句中定义不同的情况,与switch后的表达式进行匹配。

4. char:char关键字用于声明字符类型的变量,通常用于表示一个字符。

5. const:const关键字用于声明常量,表示该变量的值在程序中不可修改。

6. continue:continue关键字用于在循环语句中跳过当前迭代,直接进入下一次迭代。

7. default:default关键字用于在switch语句中定义默认情况,当没有任何case匹配时执行default块中的代码。

8. do:do关键字用于构建do-while循环语句,表示先执行循环体,再根据条件判断是否继续执行循环。

9. double:double关键字用于声明双精度浮点数类型的变量,用于存储小数。

10. else:else关键字用于在if语句中定义条件不成立时要执行的代码块。

11. enum:enum关键字用于定义枚举类型,可以创建一个包含一组命名常量的新类型。

12. extern:extern关键字用于声明在其他文件中定义的全局变量或函数。

13. float:float关键字用于声明单精度浮点数类型的变量,用于存储小数。

14. for:for关键字用于构建for循环语句,用于重复执行一段代码多次,可设置循环变量的初始值、循环条件和每次循环后的操作。

15. goto:goto关键字用于跳转到程序中指定的标签位置,尽量避免使用,以免造成程序结构混乱。

16. if:if关键字用于根据条件在程序中执行不同的代码块。

17. int:int关键字用于声明整数类型的变量,用于存储整数。

18. long:long关键字用于声明长整型的变量,用于存储较大的整数。

19. register:register关键字用于声明寄存器变量,建议使用auto替代。

20. return:return关键字用于从函数中返回结果或值。

21. short:short关键字用于声明短整型的变量,用于存储较小的整数。

22. signed:signed关键字用于声明有符号类型的变量,表示可以表示正数、负数和零。

23. sizeof:sizeof关键字用于获取变量或类型的大小(以字节为单位)。

24. static:static关键字用于声明静态变量,其生命周期在整个程序执行期间保持不变。

25. struct:struct关键字用于定义结构体类型,允许组合多个不同类型的数据成员。

26. switch:switch关键字用于构建switch语句,根据不同的情况执行相应的代码块。

27. typedef:typedef关键字用于创建新的类型别名,便于使用较长或复杂的类型声明。

28. union:union关键字用于定义共用体类型,允许以相同的内存空间存储不同类型的变量。

29. unsigned:unsigned关键字用于声明无符号类型的变量,表示仅能表示非负数和零。

30. void:void关键字用于指示函数没有返回值或指定指针没有任何类型。

31. volatile:volatile关键字用于声明可能被意外修改的变量,提示编译器不要进行优化。

32. while:while关键字用于构建while循环语句,根据条件重复执行一段代码。


    学习是一件有趣的事情哦,万物起源,Hello World!😄💻 让我们一起开始这段轻松又有趣的学习之旅吧!🌟

2.hello world分析


#include <stdio.h>
int main(void)
{
    
       printf("hello world\n);
       return 0;
}

代码解析

1. `#include <stdio.h>`

是一个预处理指令,它告诉编译器在编译之前包含stdio.h头文件。

include是应用stdio.h这个头文件

stdio.h是标准输入/输出库的头文件,包含一些输入和输出函数的定义。

2. `int main(void)`

是一个函数声明,表示定义了一个名为main的函数,该函数没有参数(void表示无参数),返回类型为整数(int)。

3. '{' 和 '}'

是代码块的开始和结束标记,用于将一组语句组织在一起,形成一个逻辑上的整体。

4. `printf("hello world\n);`

是一个函数调用语句,调用了标准库函数printf来输出字符串"hello world"到控制台。

'\n'表示换行符。

5. `return 0;`

是一个语句,将整数值0返回给调用该函数的地方。在main函数中,返回值0通常表示程序成功执行。

整体来说,这段代码的作用是输出"hello world"到控制台,并且表示程序成功执行。

2.1数据类型

上面我们大致了解一下就可以了,我们开始先从整型 int开始了解

2.1.1 整型 int

    嘿,没问题!来,我给你来个超级简单明了的C语言整型变量的定义和输出。

首先,我们要定义一个整型变量,就是给一个变量起一个名字,并且告诉编译器它的类型是整型(整数)。比如说,我们可以这样定义一个叫做"age"的整型变量:

int age;
 

然后,我们可以给这个变量赋一个具体的值,表示年龄。

比如,我们把年龄设置成18岁:

age = 18;
 

现在,我们可以用printf函数来输出这个整型变量的值,让我们看看年龄到底是多少:

printf("我的年龄是:%d岁\n", age);

这里,%d是一个占位符,表示将要输出的内容是一个整数。而变量age会替换掉%d的位置,所以我们可以看到具体的年龄值。

那么,如果我们想在定义的同时给变量赋值怎么办?也很简单,可以结合起来写:

int age = 18;

这样,定义和赋值就一气呵成啦!

希望我这么轻松的口语解释,让你一目了然地明白了C语言整型变量的定义和输出哦!有其他问题就随时问我哈!

下面是完整代码

#inlcude <stdio.h>
int main(void)
{

int = age;
age =18;
printf("我的年龄是:%d岁\n", age);
return 0;
}

%d

%d是C语言中的格式控制符,用于输出整数(十进制表示)。

%o(字母o)

%o是C语言中的格式控制符,用于输出整数的八进制表示。

%x

%x是C语言中的格式控制符,用于输出整数的十六进制表示(小写字母a~f)。

%X

%X是C语言中的格式控制符,用于输出整数的十六进制表示(大写字母A~F)。

%u

%u是C语言中的格式控制符,用于输出无符号整数的十进制表示。

2.1.2 短整型 short

    嘿!要讲述C语言中定义和输出短整型变量(short)的话,就好比是在打游戏时描述角色的血量一样。

简单说,短整型就像是角色的小心脏,记录的数值范围比较小,但也足够用来表示一些中等大小的数字。

接下来,让我们看看具体的操作吧!

要定义一个短整型变量,可以这样写:

short hp = 200;

这里的hp就是我们角色的“血量”,初始值为200。

如果要输出短整型变量的话,可以使用printf函数来实现:

printf("当前血量:%hd\n", hp);


这个printf函数,类似于角色向屏幕显示自己的血量信息。

%hd是用来格式化输出短整型变量的占位符。

总而言之,短整型变量就是用来表示中等大小数字的,在C语言中使用起来和描述游戏角色的血量一样简单明了。希望这个解答能够帮到你!如果还有其他问题,随时告诉我哦![微笑]

下面是完整代码

#inlcude <stdio.h>
int main(void)
{

int = hp;
hp = 200;
printf("当前血量:%hd\n", hp);
return 0;
}

2.1.3 长整型 long

    哟!到学习 C 语言长整型呀,没问题!来来来,我用小辰老师的口语给你讲解一下。

咱们先说说整型变量,就像是游戏里的血量一样。

我们要定义一个长整型变量,就用 long 来表示。

它的作用就是可以存储更大范围的整数值,比普通的整型变量要大一些。

要定义一个长整型变量,在 C 语言里面,我们需要在变量名前面加上关键字 long,然后再给变量起个名字,这个名字可以是任何你喜欢的,比如叫做 blood,来表示血量。

好了,现在我们要给这个变量赋值,也就是给它血量加满!

可以直接使用赋值运算符 = 来进行赋值操作,比如 blood = 99999。

接下来,我们要把血量显示出来,也就是输出变量的值。在 C 语言里,可以使用 printf 函数进行输出。我们可以这样写代码:

#include <stdio.h>

int main() {
    long blood = 99999;
    printf("我的血量是:%ld\n", blood);
    
    return 0;
}

这段代码的意思是,首先引入了标准输入输出库,然后定义了一个长整型变量 blood,赋值为 99999。最后通过 printf 函数来输出血量的值,使用了格式占位符 %ld 来表示长整型。

运行这段代码,你会看到控制台输出的内容就是:我的血量是:99999。

哎呀,感觉这样描述起来挺有趣的,希望能让你一目了然哦!如果还有其他问题,随时来找我哈~ 😄💪


2.1.4 长长整型 long long

    嘿!好的,让我用老师口语来轻松描述一下C语言中整型变量`long long`的定义和输出,还加上游戏血量的形象描述,让你一目了然!😄

首先,我们来定义一个`long long`整型变量,假设我们要表示一个英雄的血量,可以起个酷炫的名字,比如`heroHp`。这样的定义可以使用关键字`long long`和变量名称来完成:
 

long long heroHp;
 

好啦,现在我们已经定义了一个`long long`类型的变量`heroHp`。接下来,我们想要给英雄一个初始的血量值,比如100000。


heroHp = 100000;
 

太棒了!我们已经成功给英雄的血量赋值了。现在,让我们把英雄的血量输出出来,让大家都能看到。这里我们使用`printf`函数来完成输出,可以加上一个表情包来更生动地描述血量的情况:


printf("英雄当前的血量为:%lld ❤️\n", heroHp);
 

这段代 ** 把`heroHp`的值输出到屏幕上,显示为"英雄当前的血量为:100000 ❤️"。

其中,`%lld`是用来格式化输出`long long`类型变量的占位符,`❤️`是为了增加一些可爱的表情。

说起来简直就像是在游戏中看到英雄血量嘚瑟飙升一样啊!

希望这样的描述让你更加轻松地理解了`long long`类型的定义和输出。如果还有其他问题,随时问我哦!😊

以下是完整的代码:
 

#include <stdio.h>

int main() {
    long long heroHp;
    heroHp = 100000;
    
    printf("英雄当前的血量为:%lld ❤️\n", heroHp);
    
    return 0;
}

2.1.5 字符类型 char

    嘿,亲,来聊聊C语言里整型变量和字符类型char的定义和输出吧!

想象一下,你在一个超级酷炫的游戏中冒险,面对各种挑战。

有时候你需要记住关键信息,比如击败怪物的数量或者道具的名称。

这时候,整型变量就派上用场了。

它可以让你存储和操作整数数据,如分数、金币数量等等。

而字符类型char则是用来存储单个字符的,就像你在游戏中见到的NPC的名字或者你自己的角色昵称。想看完整代码是吧?

那我马上给你展示一下:
 

#include <stdio.h>

int main() {
    int monsterCount = 10;  // 怪物的数量
    char playerName[20] = "SuperHero";  // 玩家名字

    printf("恭喜%s,你击败了%d只怪物!\n", playerName, monsterCount);

    return 0;
}



哈哈,看到了吧!这段代码简直太简单了。

我们定义了一个整型变量monsterCount来表示怪物的数量,初始值是10。

另外,我们使用了字符数组playerName来存储玩家的名字,初始值是"SuperHero"。

最后,我们使用printf函数来输出玩家名字和击败怪物数量的信息。

嘿,注意了哦,printf函数里面的%s是用来输出字符串(字符数组)的,%d则是用来输出整数的。

这样一来,打印出来的信息就会非常直观和有趣啦!

希望这样的解释对你有帮助哦!如果还有其他问题,尽管问我,我随时为你效劳!


2.1.6 单精度浮点类型 float

    嘿!在编程的世界里,我们有各种各样的变量类型,就像游戏里角色的不同属性一样。现在我们来介绍一下C语言中的整型变量和单精度浮点数float。

整型变量就像是你在游戏中拿着的硬币,用来表示整数值。在C语言中定义它非常简单,你只需要选择一个合适的名称,比如coin,然后告诉编译器它是整型变量。像这样:

int coin;
 

而单精度浮点数float就像是你在游戏中攻击敌人造成的伤害值,可以包含小数部分。同样,定义它也很简单。比如,我们用damage表示攻击伤害值:

float damage;
 

当我们想要输出这些变量的时候,就像把它们展示给其他玩家看一样,我们可以使用printf函数。比如,我们想要展示coin和damage的值:

printf("当前硬币数量:%d\n", coin);
printf("攻击伤害值:%.2f\n", damage);

 

这样就能够像游戏中一样,在屏幕上显示出来了。记得加上表情包,让玩家们更好理解哦!完整代码如下:
 

#include <stdio.h>

int main() {
    int coin = 10;
    float damage = 5.7;

    printf("当前硬币数量:%d\n", coin);
    printf("攻击伤害值:%.2f\n", damage);

    return 0;
}

希望这样的解释让你轻松地理解了C语言中整型变量和单精度浮点数float的定义和输出。如果还有其他问题,随时找我哦!😊


2.1.7 双精度浮点类型 double

    嗨!准备好进入编程的游戏世界了吗?那就来学习一下C语言中整型变量和双精度浮点数(double)的定义和输出吧!

首先,我们需要定义一个整型变量,就像是在游戏中创建一个角色角色一样。我们给它起一个名字,比如"level",然后赋予一个整数值,比如10。代码看起来像这样:

int level = 10;

接下来,让我们来定义一个双精度浮点数(double),这就像是给角色装备一套闪亮的护甲,保证精度更高哦。我们给它起一个名字,比如"score",然后赋予一个小数值,比如99.9(因为你太厉害了!)。代码看起来像这样:

double score = 99.9;

现在,让我们来展示一下这些变量的值。就像在游戏中查看角色属性一样,我们打印出来看看。使用以下代码可以实现:

printf("当前等级是:%d\n", level);
printf("当前分数是:%.2f\n", score);

开心的时刻到了!我们来运行并查看结果吧!你会看到类似这样的输出:

当前等级是:10
当前分数是:99.90

像是在游戏中展现拔地而起的表情包一样,我们看到了角色的等级和分数!简单明了,是不是很轻松愉快呢?

那么,完整的代码就是这样了:

#include <stdio.h>

int main() {
    int level = 10;
    double score = 99.9;

    printf("当前等级是:%d\n", level);
    printf("当前分数是:%.2f\n", score);

    return 0;
}

快去试试吧,祝你编程之旅愉快!如果还有其他问题,随时交互哦。


2.1.8 扩展精度浮点类型  long double

    哟,兄弟!来,我给你介绍一下关于C语言里整型变量和扩展精度浮点数long double的定义和输出。

这个故事我们就用Game of Thrones做背景吧!

首先,我们的主角是一个整型变量,就是像Jon Snow那样勇猛而稳定的战士。

他拥有了整个七国的力量,也就是能够表示的范围很广,从小小的-2147483648到强大的2147483647。

接下来,我们有一位扩展精度浮点数long double,就像Daenerys Targaryen的龙一样,威力非凡!它能够存储更多的小数位数,有更高的精度。

听说它的取值范围是从3.4E-4932到1.1E+4932,简直史诗级的!🐉好了,让我们来看看代码怎么写:

 

#include <stdio.h>

int main() {
    int warrior = 2024;
    long double dragon = 3.14159265358979323846264338327950288419716939937510;

    printf("我是勇猛的战士,我的力量值是 %d!\n", warrior);
    printf("我是威武无比的龙,我的火焰值是 %.50Lf!\n", dragon);

    return 0;
}


 

代码中,我们首先定义了一个整型变量`warrior`,并赋值为2024。

然后,我们定义了一个龙般威武的扩展精度浮点数`dragon`,并赋值为3.14159265358979323846264338327950288419716939937510。

在输出部分,我们使用printf函数来打印出战士和龙的信息。

通过格式化字符串,我们可以把整型变量和浮点数输出出来。

这样,当我们运行程序时,就能看到屏幕上显示出战士和龙的值了。

有木有感觉像是在玩游戏一样,对吧?而且这段代码完整到让你一目了然,不会再迷茫啦!


2.2 运算符与表达式 

    C语言中的运算符和表达式是其程序设计中非常基础且重要的部分,它们用来执行各种数学、逻辑和位操作。

1. **算术运算符**:
   - `+`:加法运算符
   - `-`:减法运算符
   - `*`:乘法运算符
   - `/`:除法运算符
   - `%`:取模(求余数)运算符

2. **关系运算符**:
   - `>`:大于
   - `<`:小于
   - `>=`:大于等于
   - `<=`:小于等于
   - `==`:等于
   - `!=`:不等于

3. **逻辑运算符**:
   - `&&`:逻辑与(两边条件都为真时结果才为真)
   - `||`:逻辑或(两边任意一边为真时结果就为真)
   - `!`:逻辑非(对表达式的布尔值进行否定)

4. **位运算符**:
   - `&`:按位与
   - `|`:按位或
   - `^`:按位异或
   - `~`:按位取反
   - `<<`:左移运算符
   - `>>`:右移运算符

5. **赋值运算符**:
   - `=`:基本的赋值运算符
   - `+=`,`-=`,`*=`,`/=`,`%=`:复合赋值运算符,如 `a += b` 相当于 `a = a + b`

6. **其他运算符**:
   - `sizeof`:计算变量或数据类型的大小
   - `()`:括号用于改变运算优先级或者构成函数调用和类型转换
   - `[]`:数组下标运算符
 


以上就是在C语言中常见的运算符和表达式的基本介绍。在实际编程中,根据运算符的优先级和结合性规则,不同的运算符和操作数会组成不同含义的表达式。


2.2.1 算术运算符

    行啊,老师亲自动手轻松给你介绍C语言中的算术运算符!

我们用英雄联盟游戏来形象地描述一下,让你一看就明白。

这里给你详细解释并附上代码和注释哦,最后还有完整的代码总结。准备好啦!

首先来看加法运算符(+)。

就像在英雄联盟中,你可以把英雄们的攻击力和技能伤害叠加起来,造成更大的伤害。

在C语言中,我们用加法运算符来进行数字相加。

比如,我们有两个数字 a 和 b,我们想计算它们的和,我们可以这样写代码:

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int sum = a + b;  // 计算 a 和 b 的和

    printf("英雄A的攻击力是 %d,英雄B的攻击力是 %d,他们合体后的攻击力是 %d!", a, b, sum);

    return 0;
}


 

下一个是减法运算符(-)。就像在英雄联盟中,你可以从敌人的血量中减去你的攻击伤害,得到剩余的血量。

在C语言中,我们用减法运算符来进行数字相减。

我们假设敌人的血量是 x,你的攻击伤害是 y,我们可以这样写代码:

#include <stdio.h>

int main() {
    int x = 100;
    int y = 20;
    int remainder = x - y;  // 计算剩余的血量

    printf("敌人原本有 %d 的血量,经过你的一次攻击后,剩下 %d 的血量!", x, remainder);

    return 0;
}

接下来是乘法运算符(*)。就像在英雄联盟中,你可以通过增加攻击力的倍数来造成更多的伤害。

在C语言中,我们用乘法运算符来进行数字相乘。

我们以你的基础攻击力是 a,倍数是 b,为例,可以这样写代码:

#include <stdio.h>

int main() {
    int a = 50;
    int b = 2;
    int damage = a * b;  // 计算伤害

    printf("你的基础攻击力是 %d,加上倍数 %d 后,造成的伤害是 %d!", a, b, damage);

    return 0;
}


 

最后是除法运算符(/)。

就像在英雄联盟中,你可以将剩余的敌人血量平均分给你的队友。

在C语言中,我们用除法运算符来进行数字相除。

假设剩余血量是 x,你有 y 个队友,我们可以这样写代码:
 

#include <stdio.h>

int main() {
    int a = 50;
    int b = 2;
    int damage = a * b;  // 计算伤害

    printf("你的基础攻击力是 %d,加上倍数 %d 后,造成的伤害是 %d!", a, b, damage);

    return 0;
}

嗯哼!我们一起来总结一下各个算术运算符和表达式的完整代码吧:
 

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int sum = a + b;  // 加法运算符

    int x = 100;
    int y = 20;
    int remainder = x - y;  // 减法运算符

    int c = 50;
    int d = 2;
    int damage = c * d;  // 乘法运算符

    int e = 100;
    int f = 4;
    int average = e / f;  // 除法运算符

    printf("英雄A的攻击力是 %d,英雄B的攻击力是 %d,他们合体后的攻击力是 %d!\n", a, b, sum);
    printf("敌人原本有 %d 的血量,经过你的一次攻击后,剩下 %d 的血量!\n", x, remainder);
    printf("你的基础攻击力是 %d,加上倍数 %d 后,造成的伤害是 %d!\n", c, d, damage);
    printf("敌人剩余的血量是 %d,平均分给你和你的 %d 个队友后,每个人获得 %d 的血量!\n", e, f, average);

    return 0;
}

这样一来,以英雄联盟为背景,我们不仅轻松理解了C语言中的算术运算符,还提供了生动有趣的代码示例。

希望对你有帮助哦!


2.2.2 关系运算符

    嘿,准备好进入召唤师峡谷了吗?我们来探索一下C语言中的关系运算符!😄

首先,让我们来定义一下关系运算符。在英雄联盟中,我们经常需要判断英雄们之间的关系,比如谁是最强大的、谁拥有更高的等级,这就需要用到关系运算符。

关系运算符有以下几个:
- "==" (双等号):判断两个数值是否相等,就像判断你的英雄是否与敌方英雄等级相同。
- "!=" (不等号):判断两个数值是否不相等,就好像鲁班七号对阵不死鸟,他们彼此实力不同。
- ">" (大于号):判断左边的数值是否大于右边的数值,就像你的英雄是否能够打败对手。
- "<" (小于号):判断左边的数值是否小于右边的数值,就像你的英雄是否能在对手面前保持低调。
- ">=" (大于等于号):判断左边的数值是否大于或等于右边的数值,就像英雄试图超越自己的级别。
- "<=" (小于等于号):判断左边的数值是否小于或等于右边的数值,就像英雄是否能够应付困境。

现在,让我们来看一段用C语言写的小代码片段,配合一些注释和解释:

#include<stdio.h>

int main() {
    int your_level = 10;  // 你的英雄等级
    int enemy_level = 8;  // 敌方英雄等级

    if (your_level > enemy_level) {
        printf("你的英雄比敌方英雄更强大!🔥\n");
    } else if (your_level < enemy_level) {
        printf("你的英雄比敌方英雄稍逊一筹。😢\n");
    } else {
        printf("你和敌方英雄的实力不相上下!💪\n");
    }
    
    return 0;
}



在这段代码中,我们首先定义了你的英雄等级和敌方英雄等级,然后使用关系运算符 ">" 和 "<" 来进行判断。

如果你的英雄等级大于敌方英雄等级,就会输出一句话表示你的英雄比敌方更强大;

如果你的英雄等级小于敌方英雄等级,就会输出一句话表示你的英雄稍逊一筹;

如果两者等级相同,则会输出一句话表示实力不相上下。

最后,总结一下完整的代码逻辑:
1. 定义你的英雄等级和敌方英雄等级。
2. 使用关系运算符 ">" 和 "<" 来进行判断,输出对应的结果。
3. 如果两者等级相同,则输出实力不相上下的结果。

希望通过这个有趣的英雄联盟比喻,你能更加轻松地理解关系运算符在C语言中的使用!

如果还有其他问题,就请告诉我哦!😊


2.2.3 逻辑运算符

    哟~欢迎来到我的英雄联盟世界!今天我们要来讲一讲C语言中的三种逻辑运算符,让你轻松掌握它们的定义和用法。废话不多说,咱们直接进入游戏吧!

首先,我们有一位名叫小明的英雄,他的技能可是非常强大的!现在我们给他设定一些条件,看看逻辑运算符如何发挥作用。第一个逻辑运算符是“与(&&)”。就好像小明需要同时具备攻击力高和防御力强才能打败敌方英雄一样。我们可以用代码表达出来:


#include <stdio.h>

int main() {
    int attack = 100; // 攻击力100
    int defense = 80; // 防御力80

    if (attack > 90 && defense > 70) {
        printf("小明可以无敌输出啦!\n");
    } else {
        printf("小明还需要继续加强自己!\n");
    }
    
    return 0;
}



解释一下,这里的`attack > 90`表示小明的攻击力是否大于90,

`defense > 70`代表小明的防御力是否大于70。

只有两个条件都满足时(即都为真),才会输出“小明可以无敌输出啦!”。

否则,我们会给出“小明还需要继续加强自己!”的提示。接下来,我们介绍第二个逻辑运算符——“或(||)”。这就像是小明需要至少掌握一门技能才能应对敌方不同的战术。代码如下:
 

#include <stdio.h>

int main() {
    int skill1 = 1; // 第一种技能
    int skill2 = 0; // 第二种技能

    if (skill1 || skill2) {
        printf("小明可以应付各种战术了!\n");
    } else {
        printf("小明还需要学习新的技能才行!\n");
    }
    
    return 0;
}



这里的`skill1`代表小明是否掌握了第一种技能,

`skill2`表示他是否掌握了第二种技能。

只要其中一项条件为真(即非零),就会输出“小明可以应付各种战术了!”;

如果两项条件都为假(即都为零),则会提示“小明还需要学习新的技能才行!”。

最后一个逻辑运算符是“非(!)”。

咱们通过小明的英勇表现,看看这个运算符的效果吧!代码如下:

#include <stdio.h>

int main() {
    int victory = 0; // 小明是否获胜

    if (!victory) {
        printf("小明需要再接再厉哦!\n");
    } else {
        printf("小明真是战无不胜的英雄啊!\n");
    }
    
    return 0;
}



这里的`victory`表示小明是否取得了胜利。

用“非(!)”运算符来判断,如果`victory`的值为假(即零),就会输出“小明需要再接再厉哦!”;

相反,如果`victory`的值为真(即非零),则会赞美小明是一个无敌的英雄,“小明真是战无不胜的英雄啊!”。综上所述,我们来看一下完整代码,让你更好地感受逻辑运算符的威力吧!
 

#include <stdio.h>

int main() {
    int attack = 100; // 攻击力
    int defense = 80; // 防御力
    int skill1 = 1;   // 第一种技能
    int skill2 = 0;   // 第二种技能
    int victory = 0;  // 小明是否获胜

    if (attack > 90 && defense > 70) {
        printf("小明可以无敌输出啦!\n");
    } else {
        printf("小明还需要继续加强自己!\n");
    }

    if (skill1 || skill2) {
        printf("小明可以应付各种战术了!\n");
    } else {
        printf("小明还需要学习新的技能才行!\n");
    }

    if (!victory) {
        printf("小明需要再接再厉哦!\n");
    } else {
        printf("小明真是战无不胜的英雄啊!\n");
    }
    
    return 0;
}


 

希望通过这个生动有趣的英雄联盟故事,你已经掌握了C语言中三种逻辑运算符的定义和用法。

如果还有其他问题,尽管问吧,我随时为您服务! 😊

2.2.4 位运算符

    嘿!让朕来给你讲解一下C语言的所有位运算符吧!希望我能让你一目了然、轻松明白,哦呼~🤩

首先,我们要知道位运算符是在二进制级别上操作的。那么,我们就需要了解二进制是如何运算的,因为它们太有意思啦,脑洞巨大!🚀

1. 按位与(&):这个操作符会将两个二进制数的对应位都变成1,只要有一个位是0,结果就是0。

2. 按位或(|):这个操作符会将两个二进制数的对应位中的至少一个位为1的位置成1,只有两个位都是0时,结果才是0。
    
3. 按位异或(^):这个操作符会将两个二进制数的对应位不同的位置成1,相同的位置成0。好像在玩找茬游戏!😆

4. 按位取反(~):这个操作符会将一个二进制数的每个位全部取反,0变成1,1变成0。就像有人给你提醒找茬游戏的茬在哪里!🤔

5. 左移(<<):这个操作符会将一个二进制数向左移动指定的位数,低位用0填充。就像坐过山车一样,兴奋地往前冲!🎢

6. 右移(>>):这个操作符会将一个二进制数向右移动指定的位数,高位用符号位填充(正数用0,负数用1)。就像织围巾,逐渐收敛回原点!🧶

好了,现在让我们来加上一些小例子和解释吧!
 

#include <stdio.h>

int main() {
    int a = 5; // 二进制表示为101
    int b = 3; // 二进制表示为011
   

    int result;

    // 按位与(&)
    result = a & b;  // 结果为1,二进制表示为001
    printf("按位与的结果:%d\n", result);

    // 按位或(|)
    result = a | b;  // 结果为7,二进制表示为111
    printf("按位或的结果:%d\n", result);

    // 按位异或(^)
    result = a ^ b;  // 结果为6,二进制表示为110
    printf("按位异或的结果:%d\n", result);

    // 按位取反(~)
    result = ~a;     // 结果为-6(根据系统不同可能会有差异)
    printf("按位取反的结果:%d\n", result);

    // 左移(<<)
    result = a << 1;  // 结果为10,二进制表示为1010
    printf("左移一位的结果:%d\n", result);

    // 右移(>>)
    result = a >> 1;  // 结果为2,二进制表示为10
    printf("右移一位的结果:%d\n", result);

    return 0;
}
按位与的结果:1
按位或的结果:7
按位异或的结果:6
按位取反的结果:-6
左移一位的结果:10
右移一位的结果:2

最后,总结一下完整的代码,让我们看到绚丽的结果吧!

所以呢,位运算符很有意思哦!它们可以在二进制级别上进行各种操作,使用起来相当灵活,对我们来说都不难理解,小白也能看懂!💪😉


2.2.5 赋值运算符

    嘿,英雄联盟玩家!让我用游戏里的情境来解析C语言中的赋值运算符吧,轻松简单好理解!下面是一些常见的赋值运算符:

1. "=" 简单赋值符号:
   就像你在英雄联盟中为你的角色选择装备一样,使用"="符号可以将一个值赋给一个变量。
   比如:int kills = 10; // 给变量kills赋值为10

2. "+=" 加法赋值符号:
   当你在游戏中获取了一些额外的金币时,你可以使用"+="符号将这些金币添加到你已有的金币数量上。
   比如:gold += 100; // 将100个金币添加到当前金币数量上

3. "-=" 减法赋值符号:
   如果你在游戏中失去了一些生命值,你可以使用"-="符号减去相应的数值。
   比如:health -= 20; // 减去20点生命值

4. "*=" 乘法赋值符号:
   当你想将角色的攻击力提升一定倍数时,你可以使用"*="符号进行乘法操作。
   比如:attack *= 1.5; // 将攻击力增加50%

5. "/=" 除法赋值符号:
   如果你希望将某个数值分割成几等份,你可以使用"/="符号进行除法运算。
   比如:total /= 4; // 将总数除以4

这些赋值运算符可以简化你在游戏中对变量的操作。现在,让我来总结一下,并给出一个完整的代码示例:
 

#include <stdio.h>

int main() {
    int kills = 10;
    int gold = 500;
    int health = 100;
    float attack = 50.0;
    int total = 1000;

    // 使用赋值运算符进行操作
    kills += 2;      // 杀敌数增加2
    gold -= 200;     // 扣除200金币
    health -= 30;    // 生命值减少30
    attack *= 1.2;   // 攻击力增加20%
    total /= 5;      // 总数除以5

    // 输出结果
    printf("剩余杀敌数:%d\n", kills);
    printf("剩余金币:%d\n", gold);
    printf("剩余生命值:%d\n", health);
    printf("当前攻击力:%.1f\n", attack);
    printf("剩余总数:%d\n", total);

    return 0;
}

嗨,大功告成!玩得开心!如果还有其他的问题,尽管问哦!(*^▽^*)


2.2.6 其他运算符

    `sizeof`运算符是用来得到一个变量或者数据类型所占用的内存空间大小的。

对于`sizeof()`括号内的表达式,它会返回这个表达式所占用的字节数。

比如说,你可以用`sizeof`来获取一个整数类型的大小,如`sizeof(int)`。

这样就能知道一个整数所占用的字节数了。

而`[]`运算符是用来访问数组中的元素的。

你可以通过指定索引值来访问数组中的特定元素,比如`array[0]`表示数组的第一个元素。

这个运算符非常方便,因为它可以帮助我们迅速地访问数组中的数据。

现在,我们来看一个简单的例子:
 

#include<stdio.h>

int main() {
  int array[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组
  int size = sizeof(array) / sizeof(array[0]); // 计算数组的大小

  printf("数组的大小为:%d\n", size);

  for(int i = 0; i < size; i++) {
    printf("数组的第 %d 个元素是:%d\n", i, array[i]);
  }

  return 0;
}

上面的代码中,我们定义了一个有5个元素的整型数组`array`,然后使用`sizeof`运算符计算了数组的大小。

接着,我们通过遍历数组的方式,打印出了数组中每个元素的值。

如果你运行以上代码,你会得到如下输出:

数组的大小为:5
数组的第 0 个元素是:1
数组的第 1 个元素是:2
数组的第 2 个元素是:3
数组的第 3 个元素是:4
数组的第 4 个元素是:5

通过这个例子,你应该能够理解`sizeof`和`[]`运算符的基本使用方法了。

记住,`sizeof`可以帮助你确定数据类型或者变量所占用的内存空间大小,而`[]`运算符可以让你方便地访问数组中的元素。


学习时间:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点
  • 这个时间段大家应该不太忙可以抽空学习一下

学习产出:

学习还是要多动手才可以,前面这些慢慢看慢慢理解,争取早日成为代码人。

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值