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语句的判断部分。进行下一次循环的入口判断。