April 02

一,初识结构体

代码

#include <stdio.h>
#include <string.h> //用于引用strcpy函数
//结构体 描述复杂对象,自己创造
struct Book
{
char name[20];//名字
char author[10];//作者
short price;//价格
};

int main()
{
/*struct结构体使用 April 01 */
struct Book B01 = { "C语言程序设计","小钟",55 };
printf("书名==%s\n", B01.name);
printf("作者==%s\n", B01.author);
printf("价格==%d\n", B01.price);

//修改结构体变量内容
B01.price = 155;
printf("价格==%d\n", B01.price);

//用指针修改内容修改
struct Book*Bp = &B01;
(*Bp).price = 50;// 解引用*
printf("价格==%d\n", B01.price);
printf("价格==%d\n", (*Bp).price);

//用->来打印结构体内容
printf("书名=%s\n",Bp->name);
printf("作者=%s\n", Bp->author);
printf("价格=%d\n", Bp->price);

//修改结构体的数组变量
strcpy(B01.author, "大钟");// string-copy 字符拷贝函数
printf("作者=%s\n", Bp->author);

return 0;
}

结果:

C语言-004_#include




二,分支和循环

21.分支语句

个人理解:if-else就是两条路径,按照条件走路径,elseif则是前者的推广

代码

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

/*分支语句 if--elseif--else April 02 */

int main()
{
int i = 0;
int num01 = 0;
int num02 = 0;
//判断一个数的奇偶
printf("请输入一个整数数据:\n");
scanf("%d", &num01); //不怎么会用
if (0 == num01%2)
{
printf("我能整除2,偶数==%d\n",num01);
}
else
{
printf("我是奇数:%d\n", num01);
}

return 0
}

结果

C语言-004_#include_02


2.2多分支语句

个人理解:按照case后面表达式选择,但判断条件单一,case后面只跟数字123....

代码

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
/*多分支switch语句 April 02
表达通式如下:
switch(表达式){
case 整型数值1: 语句 1;
case 整型数值2: 语句 2;
......
case 整型数值n: 语句 n;
default: 语句 n+1;
}

*/
int main()
{
int day = 0;
int i = 6;
printf("请输入一个整数数据:\n");
scanf("%d", &day);

switch (day)//多分支的入口,括号里面整型变量,与case后面数比较,相等就执行。7
{
case 1://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:
if (6 == i)
printf("switch语句可以出现if语句\n");
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
case 8:
printf("没有break,就都执行一遍,不跳出\n");
case 9:
printf("没有break,就都执行一遍,不跳出\n");
case 10:
printf("没有break,就都执行一遍,不跳出\n");
case 11:
printf("这里我加了break,执行完整个case情况,就跳出分支\n");
break;
case 12:
printf("case后面不一定要有语句,case后面无语句时,后面可以不加break\n");
break;
default://默认子句 用于错误提示
printf("数字不在case情况内,请输入一个更小的值\n");
break;
}

return 0;
}

结果:

(1)无break时

C语言-004_#include_03

(2)有break时

C语言-004_while循环_04

(3)if的嵌套

C语言-004_while循环_05

(4)default默认语句

C语言-004_struct结构体_06


2.3while循环语句

代码

注意continue和break在while循环语句的不同作用

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

/*while循环语句 April 02

表达通式如下:
while(表达式){
语句块;
}

*/
int main()
{
int i = 0;
int j = 0;

//输出0~10的数字

while (i <= 10)//先判断条件
{
printf("%d\n", i);
//i += 1;
if (5 == i)//变量放右边
{
printf("搞个死循环看看,用continue语句的特性\n");
continue;//只结束一次循环,不跳出整个循环
}

i++; //因为continue的存在 所以代码不可能执行到i++,所以死循环了
}

return 0;
}

结果

C语言-004_#include_07


2.4 for循环语句

代码

注:for循环括号里的3个表达式(初始化,判断,调整)都可以不写,但判断部分省略时,则判断条件恒为真,直接死循环。

建议三个表达式都写,增加代码可读性

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

/*for循环 April 02 输出一个数组的内容

表达通式如下:
for(表达式1; 表达式2; 表达式3){
语句块;
}
表达式1==初始化
表达式2==判断语句
表达式3==调整语句

*/

int main()
{
int arr[10] = {1,2,3,4,5,6,7,7,9};
int i;

for (i=0; i <= 9; i++)
{
printf("%d\n", arr[i]);
}

return 0;
}

结果

C语言-004_for循环_08

2.5 do while循环语句

代码

注:与while语句一样,不过do while先执行一次再判断,while语句先判断再执行。

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

/*do while循环 April 02
表达通式如下:
do{
语句块
}while(表达式);


*/
int main()
{
int i = 0;
do
{
printf("哈哈哈哈,先执行一次,再判断\n");
printf("i的值==%d\n", i);
i++;

} while (i < 5);

return 0;

}

do{
语句块
}while(表达式);

结果

C语言-004_for循环_09