C语言学习笔记—P5(结构体<提要>+分支语句<提要>+图解+题例)

简介: C语言学习笔记(结构体<提要>+分支语句<提要>+图解+题例)

 1. 结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。

比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。

这里只能使用结构体来描述了。

例如:

struct Stu
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[15]; //学号
};
image.gif

image.gif编辑

结构体的初始化:

//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);
image.gif

例题:

#include <stdio.h>
#include <string.h>
//代码3
//结构体类型的定义
struct Stu
{
  //结构体的成员
  char name[20];
  int age;
  char sex[10];
};
int main()
{
  //创建结构体变量,并且初始化
  struct Stu zhangsan = {"张三", 30, "男"};
  struct Stu lisi = {"李四", 24, "保密"};
  //->这个操作符
  struct Stu * pl = &lisi;
  printf("%s %d %s\n", (*pl).name, (*pl).age, (*pl).sex);
  printf("%s %d %s\n", pl->name, pl->age, pl->sex);
  //打印结构体的数据
  printf("%s %d %s\n", zhangsan.name, zhangsan.age, zhangsan.sex);
  printf("%s %d %s\n", lisi.name, lisi.age, lisi.sex);
  return 0;
}
image.gif

image.gif编辑

image.gif编辑

结构体也有全局变量和局部变量

#include <stdio.h>
#include <string.h>
//结构体类型的定义
struct Stu
{
  //结构体的成员
  char name[20];
  int age;
  char sex[10];
};
int main()
{
  //创建结构体变量,并且初始化
  struct Stu zhangsan = {"张三", 30, "男"};
  struct Stu lisi = {"李四", 24, "保密"};
  //->这个操作符
  struct Stu * pl = &lisi;
  printf("%s %d %s\n", (*pl).name, (*pl).age, (*pl).sex);
  printf("%s %d %s\n", pl->name, pl->age, pl->sex);
  //打印结构体的数据
  printf("%s %d %s\n", zhangsan.name, zhangsan.age, zhangsan.sex);
  printf("%s %d %s\n", lisi.name, lisi.age, lisi.sex);
  return 0;
}
//.
//结构体成员访问的操作符
//结构体变量.结构体成员
//
//-> 
//结构体成员访问的操作符
//结构体指针->结构体成员
//
image.gif

2.分支语句

2.1. 什么是语句?

C语句可分为以下五类:

1. 表达式语句

2. 函数调用语句

3. 控制语句

4. 复合语句

5. 空语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语 言有九种控制语句。

可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;

2. 循环执行语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

2.2. 分支语句(选择结构)

如果你好好学习,校招时拿一个好offer,走上人生巅峰。

如果你不学习,毕业等于失业,回家卖红薯。

这就是选择!

2.2.1 if语句

那if语句的语法结构是怎么样的呢?

语法结构:
if(表达式)
    语句;
if(表达式)
    语句1;
else
    语句2;
//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;

image.gif

#include <stdio.h>
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
    printf("少年\n");
  else if (age >= 18 && age < 40)
    printf("青年\n");
  else if (age >= 40 && age < 60)
    printf("壮年\n");
  else if (age >= 60 && age < 90)
    printf("老年\n");
  else
    printf("老寿星\n");
  //代码块1
    /*if (age >= 18)
  printf("成年\n");
  else
    printf("未成年\n");*/
    //代码块2
    /*if (age >= 18)
    printf("成年\n");*/
  return 0;
}
image.gif
#include <stdio.h>
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
    printf("少年\n");
  else if ( age < 40)
    printf("青年\n");
  else if ( age < 60)
    printf("壮年\n");
  else if (age < 90)
    printf("老年\n");
  else
    printf("老寿星\n");
  /*if (age >= 18)
  printf("成年\n");
  else
    printf("未成年\n");*/
    /*if (age >= 18)
      printf("成年\n");*/
  return 0;
}
//可读性不好
image.gif
#include <stdio.h>
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age >= 18 && age < 40)
  {
    printf("1:呵呵\n");
  }
  //2 - 语法可以编译,但逻辑上是不满足要求的
  if (18 <= age < 40) //——运算是先和age左边比较真为1,假为0,得到的0或1再和age右边比较
  {
    printf("2: 哈哈\n");
  }
}
image.gif

image.gif编辑

else不知和谁匹配,原因在于if后有两条语句,但默认if后只跟一条语句 ,但加上大括号就不会报错

image.gif编辑

如果条件成立,要执行多条语句,怎应该使用代码块,这里的一对 { } 就是一个代码块。

image.gif编辑未打印任何字符

image.gif编辑

代码优化:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }      
    return 0;
}
image.gif

1. 判断一个数是否为奇数

代码9
#include <stdio.h>
int main()
{
  int a = 0;
  scanf("%d", &a);
  //if (a % 2 == 1)
  if (a % 2 != 0)
  {
    printf("奇数\n");
  }
  return 0;
}
image.gif

2. 输出1-100之间的奇数

代码10
 方法1
#include <stdio.h>
int main()
{
  int i = 1;
  while (i <= 100)
  {
    printf("%d ", i);
    i += 2;
  }
  return 0;
}
方法2
#include <stdio.h>
int main()
{
  int i = 1;
  while (i <= 100)
  {
    if (i % 2 == 1)
      printf("%d ", i);
    i++;
  }
  return 0;
}
方法3
#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 0; i <=100;i++)
  {
    if (i % 2 == 1)
      printf("%d  \t", i);
  }
  return 0;
}
image.gif

3.输入1-7的整数,输入几就打印星期几

方案一
#include<stdio.h> //1. 输入1-5,输出的是“weekday”;
          //2. 输入6 - 7,输出“weekend”
int main()
{
  int day = 0;
  scanf("%d", &day);//9
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("weekday\n");
    break;
  case 6:
  case 7:
    printf("weekend\n");
    break;
  default:
    printf("输入错误,请输入1~7的数字\n");
    break;
  }
}
方案二
#include <stdio.h>
int main()      //输入1-7的整数,输入几就打印星期几
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");
            break;
    }
    return 0;
}
image.gif

switch(整型表达式)

switch语句也是一种分支语句。 常常用于多分支的情况。

break语句 的实际效果是把语句列表划分为不同的分支部分。

image.gif编辑

总结:

break在while循环中的作用:

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

continue在while循环中的作用:

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

后记:

●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!


                                            ——By 作者:新晓·故知

相关文章
|
1天前
|
存储 编译器 Linux
C语言(12)----结构体
C语言(12)----结构体
9 1
|
1天前
|
编译器 C语言
C语言(3)----分支和循坏以及操作符
C语言(3)----分支和循坏以及操作符
8 1
|
1天前
|
编译器 C语言 C++
C语言进阶:结构体的声明
C语言进阶:结构体的声明
|
1天前
|
C语言
初识C语言结构体
初识C语言结构体
|
1天前
|
C语言
C语言分支与循环
C语言分支与循环
|
2天前
|
C语言
【初阶】C语言初识结构体
【初阶】C语言初识结构体
|
2天前
|
机器学习/深度学习 C语言
C语言的起点——分支和循环
C语言的起点——分支和循环
5 0
|
2天前
|
编译器 Linux C语言
C语言——结构体
C语言——结构体
10 2
|
4天前
|
存储 程序员 数据处理
C语言中的结构体:深入解析与应用
C语言中的结构体:深入解析与应用
|
5天前
|
存储 编译器 C语言
【C语言】自定义类型 -- -- 结构体、位段、枚举、联合体
【C语言】自定义类型 -- -- 结构体、位段、枚举、联合体
8 0