初识C语言第二话之选择、循环、函数、数组与操作符

简介: 初识C语言第二话之选择、循环、函数、数组与操作符

本节目标

初步认识C语言中的选择语句、循环语句、函数、数组与操作符。

本节目标

初步认识C语言中的选择语句、循环语句、函数、数组与操作符。

#include<stdio.h>
int main()
{
  int a = 0;
  printf("1:好好学习,拿大厂offer     2、宿舍摆烂,毕业即失业\n\n");
  printf("请选择 1 或者 0 :->");
  scanf("%d", &a);
  if (a == 1)
  {
    printf("加油,为你点赞!\n");
  }
  else
  {
    printf("回家卖红薯!\n");
  }
  return 0;
}

2020062310470442.png

2、循环语句

C语言中有三种循环,分别是:for循环、while循环、do while循环,下面我用例子来演示。

for循环

#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 0; i < 10; i++)
  {
    printf("%d ", i);
  }
  return 0;
}

while循环

#include<stdio.h>
int main()
{
  int i = 0;
  while (i < 10)
  {
    printf("%d ", i);
    i++;
  }
  return 0;
}

do while循环

#include<stdio.h>
int main()
{
  int i = 0;
  do {
    printf("%d ", i);
    i++;
  } while (i < 10);
  return 0;
}

2020062310470442.png

其中 i 为循环变量,i++ 为循环变量增值,i<10 为循环结束条件。

3、函数

函数就是一个具有特定功能的代码块,其作用是将代码进行封装,以提高代码的重用性,提高开发效率。

#include<stdio.h>
//Add就是一个函数,用来计算两个参数的和
int Add(int x, int y)   // 开头的int:函数的返回值  中间的int:参数的类型   x、y:函数的参数
{
  return x + y;
}
int main()
{
  int a = 0;
  int b = 0;
  int ret = Add(a, b);  //调用Add函数
  printf("%d\n", ret);
  return 0;
}

4、数组

数组的概念

数组是具有相同元素类型的集合。

数组的定义方式

#include<stdio.h>
int main()
{
  //第一种定义方式:指定大小,并对其进行初识化
  int a1[10] = { 1,2,3,4,5,6,7,8,9,10 };
  //第二种定义方式:指定大小,但不初识化
  char a2[10];
  //第三种定义方式:不指定大小,但必须得初始化,它会根据你初始化元素个个数自动计算数组的大小
  float a3[] = { 1.0,2.0,3.0 };
  return 0;
}

数组的下标

C语言规定:数组的每个元素都有一个下标,且数组下标是从0开始的。数组可以通过下标来访问数组元素。

2020062310470442.png

数组的简单使用

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    for (i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

2020062310470442.png

5、操作符

C语言的操作符涉及到的细节以及知识面都比较广,在这里我只是简单的介绍一部分操作符的基本使用,更多的细节我会在后面的文章中进行讲解。

1、算术操作符

+ - * / %

2、移位操作符

>> <<

3、位操作符

& ^ |

4、赋值操作符

= += -= *= /= &= ^= |= >>= <<=

#include<stdio.h>
int main()
{
  int a = 10;
  if (a == 20)  // ==:判断语句,判断 a 与 20 是否相等
  {
    printf("判断:%d\n", a);
  }
  if (a = 20)  // =:赋值语句,把 10 赋给 a,这条语句始终为真
  {
    printf("赋值:%d\n", a);
  }
  return 0;
}

2020062310470442.png

5、单目操作符

! 逻辑反操作

- 负值

+ 正值

& 取地址

sizeof 操作数的类型长度(以字节为单位)

~ 对一个数的二进制按位取反

– 前置、后置–

++ 前置、后置++

* 间接访问操作符(解引用操作符)

(类型) 强制类型转换

#include<stdio.h>
int main()
{
  int a = 10;
  int b = a++;    //后置++,先使用,再++,即先把 a = 10 赋给 b ,a 再++,执行后 b=10,a=11
  int c = ++a;    //前置++,先++,再使用,即先让 a++ 变成 12,再把 a 赋给 c ,执行后 c=12,a=12;
  printf("a = %d\nb = %d\nc = %d", a, b, c);
  return 0;
}

2020062310470442.png

6、关系操作

> >= < <= != ==

7、逻辑操作符

&& 逻辑与

|| 逻辑或

#include<stdio.h>
int main()
{
  int a = 10;
  int b = 20;
  if (a == 10 && b == 20)   //逻辑与,必须两个条件都为真if语句才会执行
  {
    printf("a && b\n");
  }
  if (a == 10 || b == 30)   //逻辑或,只有两个条件都为假时if语句才不会执行
  {
    printf("a || b\n");
  }
  return 0;
}

2020062310470442.png

8、条件操作符

exp1 ? exp2 : exp3

#include<stdio.h>
int main()
{
  int a = 10;
  int b = 20;
  int max = a > b ? a : b;  //条件操作符,如果 a>b 条件成立,就把 a 赋给 max,否则 b 赋给 max
  printf("max = %d\n", max);
  return 0;
}

2020062310470442.png

9、逗号表达式

exp1, exp2, exp3, …expN

#include<stdio.h>
main()
{
  int x, y, z;
  x = y = 1;
  //逗号表达式,从左向右依次执行每个运算,但是只取最后一个逗号的结果
  z = (x++, y++, ++y);    //先执行前面两个逗号,x++ -> x = 2, y++ -> y=2, 再最后一个逗号,z=++y,前置++,所以z=y=3
  printf("x = %d\ny = %d\nz = %d\n", x, y, z);
  return 0;
}

2020062310470442.png

这里要特别注意:赋值运算符的优先级是高于逗号表达式的,也就是说,如果这里 z 后面没有括号,那么编译器会最先将 x 的值赋给 z,再执行后面的逗号表达式。

#include<stdio.h>
main()
{
  int x, y, z;
  x = y = 1;
  //逗号表达式,从左向右依次执行每个运算,但是只取最后一个逗号的结果
  //赋值运算符优先级高于逗号表达式,先将 x 赋给 z,那么 z = 1;
  //再执行前面两个逗号,x++ -> x = 2, y++ -> y=2, 再最后一个逗号,++y -> y = 3
  z = x++, y++, ++y;
  printf("x = %d\ny = %d\nz = %d\n", x, y, z);
  return 0;
}

2020062310470442.png

10、下标引用、函数调用和结构成员

[] () . ->

#include<stdio.h>
struct Stu {         //定义一个结构体类型
  char name[15];
  int age;
  char sex[6];
};
int main()
{
  struct Stu s = { "张三",20,"男" };   //用结构体类型定义一个结构体变量 s 并对其初始化
  printf("%s\t%d\t%s\n", s.name, s.age, s.sex);  //用 . 操作符对结构体成员进行访问
  return 0;
}

2020062310470442.png

相关文章
|
2月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
233 15
|
5月前
|
C语言
C语言中条件操作符的应用
最后,条件操作符是个超级英雄,但不是每个代码问题都需要一个超级英雄来解决。一定要在适当的时候适度的使用它,那么它将成为你的编程工具箱中的一件强力工具。
302 75
|
7月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
171 1
一文彻底搞清楚C语言的函数
|
7月前
|
存储 人工智能 程序员
一文彻底搞明白C语言的数组
本文详细介绍了C语言中的数组,包括定义、初始化(静态与动态)、存储方式、访问方法及常用操作,如遍历、修改元素和作为函数参数传递。数组是C语言中最基本的数据结构之一,掌握它对编程至关重要。下篇将介绍二维数组,敬请期待!
299 0
一文彻底搞明白C语言的数组
|
7月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的循环语句
本文介绍了C语言中的三种循环语句:`while`、`do-while`和`for`,并详细解释了它们的语法格式、执行流程及应用场景。此外,还讲解了循环控制语句`break`和`continue`的使用方法。希望这些内容能帮助你在编程道路上不断进步,共同成长!
411 0
一文彻底搞清楚C语言的循环语句
|
8月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
358 16
|
8月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
196 3
|
8月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
167 2
|
存储 安全 编译器
【 c 语言 】赋值操作符详解
【 c 语言 】赋值操作符详解
437 0
|
存储 算法 C语言
【C语言初阶】带你轻松玩转所有常用操作符(2) ——赋值操作符,单目操作符
【C语言初阶】带你轻松玩转所有常用操作符(2) ——赋值操作符,单目操作符
223 0