#define _CRT_SECURE_NO_WARNINGS 1
//1、struct 结构体关键字 --描述复杂对象--我们自己创造出来的类型
#include <string.h>
#include <stdio.h>
//struct Book //创建一个结构体类型 --- {}描述结构体内在属性 -- "." 结构体变量.成员 -- "->"结构体指针 -> 成员
//{
// char name[20]; //C语言程序设计
// short price; //55
//
//};
//
//int main()
//{
// struct Book b1 = { "C语言程序设计" ,55}; //利用结构体类型--创建一个该类型的结构体变量
// printf("书名: %s\n", b1.name);
// printf("价格: %d元\n", b1.price);
// b1.price = 15;
// printf("修改后的价格:%d元\n", b1.price);
// strcpy(b1.name,"C++"); //strcpy-string copy--字符串拷贝--库函数--string.h
// printf("修改后的书名: %s\n", b1.name);
// return 0;
//}
//int main()
//{
// struct Book b1 = { "C语言程序设计", 55 };
// struct Book* pb = &b1; //struct Book*的指针类型指向b1赋值给变量pb;
// //利用pb打印出书名和价格
// printf("书名: %s\n", (*pb).name);
// printf("价格: %d\n", (*pb).price);
// printf("书名: %s\n", pb->name);
// printf("价格: %d\n", pb->price);
// return 0;
//}
//2、分支语句和循环语句 --C语言中由一个分号“;”隔开的就是一条语句。比如 :printf("hehe");
//C语言是一门结构化的程序设计语言
//1、顺序结构
//2、选择结构
//3、循环结构
//2.1 分支语句 if
//if语法结构 1:
/* if(表达式) ---表达式为真,执行语句,否则不执行
语句;
if(表达式) ---表达式为真,执行语句1,否则不执行
语句1;
else ---以上都为假,执行语句2
语句2;
*/
//if语法结构 2:
/* if(表达式) ---表达式为真,执行语句,否则不执行
语句;
else if(表达式) ---表达式为真,执行语句1,否则不执行
语句1;
else ---以上都为假,执行语句2
语句2;
*/
//例:
//int main()
//{
// int age = 9;
// if (age < 18)
// { //---大括号表示一个代码块,可以执行多行语句
// printf("未成年\n");
// printf("不能谈恋爱\n");
// }
// else if (age<28 && age>=18)
// printf("青年\n");
// else if (age >= 28 && age < 50)
// printf("壮年\n");
// else if (age >= 50 && age < 90)
// printf("老年\n");
// else
// printf("老不死\n");
// return 0;
//}
//int main()
//{
// int a = 0;
// int b = 2;
// if (a == 1) // = 赋值 == 判断相等
// if (b==2)
// printf("hehe\n");
// else
// printf("haha\n"); //无输出内容,else就近匹配原则
// return 0;
//}
//练习:判断一个数是否为奇数
//练习:输出1-100之前的奇数
//#include <stdio.h>
//int main()
//{
// int a=0;
// /*scanf("%d",&a);*/
//
// /*printf("a = %d\n", a);*/
// while (a < 100)
// {
// a++;
// int b = a % 2;
// if (b == 1)
// printf("%d是奇数\n", a);
// else
// printf("%d不是奇数\n", a);
// }
//
// return 0;
//}
//2.2 分支语句 switch 常用于多分支语句
//switch(整形表达式)
/*
{
语句项 -- case 整型常量表达式
}
*/
//int main()
//{
// int day = 0; //必须整型类型的变量
// scanf("%d", &day);
// switch (day)
// {
// case 1: //case 整型常量表达式 --case后面不能为变量
// 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;
// default:
// printf("输入有误!\n");
// break;
// }
// return 0;
//}
//
//int main()
//{
// int day = 0; //必须整型类型的变量
// scanf("%d", &day);
// switch (day)
// {
// case 1: //case 整型常量表达式 --case后面不能为变量
// case 2:
// case 3:
// case 4:
// case 5:
// printf("工作日\n");
// break;
// case 6:
// case 7:
// printf("休息日\n");
// break;
// default: //default位置没有严格控制,可出现在语句列表中的任何位置.每个switch语句中只能出现一条default子句
// printf("输入有误!\n");
// break;
// }
// return 0;
//}
//练习
//int main()
//{
//
// int n = 1;
// int m = 2;
// switch (n)
// {
// case 1:m++; //m = 3
// case 2:n++; //n = 2
// case 3:
// switch (n){
// case 1:n++;
// case 2:m++; n++;
// break;//m = 4,n =3
// }
// case 4:m++; //m = 5
// break;
// default:
// break;
// }
// printf("m=%d,n=%d\n", m, n);
// return 0;
//}
//3.循环语句
//3.1 while
/*
while(表达式) 表达式为真,执行循环语句
循环语句;
*/
//3.1.1 break ---while中的break是用于永久终止循环
//int main()
//{
// int i = 1;
//
// while (i < 11)
// {
// if (i == 5)
// break; //不执行后循环内后面语句,直接停止后期的所有循环,终止循环
// printf("%d\n", i);
// i++; // 1,2,3,4
// }
// return 0;
//}
//3.1.2 continute --用于终止本次循环,本次循环中continute后面的代码不会再执行,
// 直接跳转到while语句的判断部分,进行下一次循环的入口判断。
//int main()
//{
// int i = 0;
//
// while (i < 10)
// {
// i++;
// if (i == 5)
// continue; //不执行后面语句,直接跳到while循环再判断
// printf("%d\n", i); //1,2,3,4,6,7,8,9,10
// }
// return 0;
//}
//练习
//int main()
//{
// int ch = 0;
// //ctrl + z
// //EOF --end of file -> -1
// while((ch=getchar()) != EOF) //getchar()是获取输入字符的函数
// {
// putchar(ch); //打印getchaer()输入的字符 ,等同于printf("%c\n,ch);
// }
// return 0;
//}