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

目录

1. 结构体

2.分支语句

2.1. 什么是语句?

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

后记:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!                                                               ——By 作者:新晓·故知 


1. 结构体

结构体是 C 语言中特别重要的知识点,结构体使得 C 语言有能力描述复杂类型。
比如描述学生,学生包含: 名字 + 年龄 + 性别 + 学号 这几项信息。
这里只能使用结构体来描述了。

例如:

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

 

 结构体的初始化:

//打印结构体信息
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);
比

 例题:


#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;
}




 

 

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

#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;
}
//.
//结构体成员访问的操作符
//结构体变量.结构体成员
//
//-> 
//结构体成员访问的操作符
//结构体指针->结构体成员
//

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;
#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;
}

#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;
}
//可读性不好

#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");
	}
}

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

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

未打印任何字符 

代码优化:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#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;
}

 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;
}

 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;
}

 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;
}

switch(整型表达式)

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

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

总结:

break在while循环中的作用:

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

continue在while循环中的作用:

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

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

                                                               ——By 作者:新晓·故知 

  • 18
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值