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 作者:新晓·故知

相关文章
|
2天前
|
C语言
C语言结构体赋值的四种方式
本文总结了C语言结构体的四种赋值方式,并通过示例代码和编译运行结果展示了每种方式的特点和效果。
12 6
|
12天前
|
编译器 程序员 Linux
【C语言篇】结构体和位段详细介绍
跟结构相⽐,位段可以达到同样的效果,并且可以很好的节省空间,但是有跨平台的问题存在。
|
12天前
|
C语言
【C语言篇】分支语句详解(超详细)
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
|
17天前
|
存储 C语言
C语言------结构体和共用体
这篇文章是关于C语言中结构体和共用体的实训,通过示例代码演示了结构体的定义、赋值、使用,以及如何使用结构体变量进行数据的组织和操作,包括输入、排序、求平均分和查找学生信息等功能。
C语言------结构体和共用体
|
23天前
|
C语言
C语言分支语句
C语言分支语句
15 4
|
3月前
|
编译器 测试技术 C语言
【C语言】:自定义类型:结构体的使用及其内存对齐
【C语言】:自定义类型:结构体的使用及其内存对齐
47 7
|
3月前
|
C语言
C语言学习笔记之初识字符串
C语言学习笔记之初识字符串
32 5
|
3月前
|
C语言
C语言循环与分支
C语言循环与分支
34 5
|
3月前
|
文件存储 C语言
|
3月前
|
网络协议 编译器 Linux
结构体(C语言)
结构体(C语言)