影者东升 发表于 2021-7-22 13:22:31

C语言编程学习笔记(鹏版)2021/7/13

结构体
自己创造出来的一种类型
创造一个结构体类型
struct Book
{
char name;                                               //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);
return 0;
}
struct Book
{
char name;                                                     //C语言程序设计
short price;                                                          //55
};
int main()
{
struct Book b1={"C语言程序设计",55};
struct Book* pb=&b1;                                       //利用pb打印出来我的书名和价格
printf("%s\n",pb->name);
printf("%d\n",pb->price);
return 0;
}
.      结构体变量.成员
->     结构体指针->成员
修改数组名(数组名本质是地址)
#include<stdio.h>
#include<string.h>                                          //strcpy的头文件
struct Book
{
char name;                                                //C语言程序设计
short price;                                                      //55
};
int main()
{
struct Book b1={"C语言程序设计",55};
strcpy(b1.name,"C++");                                  //strcpy是库函数指字符串拷贝,此处指把后面那个拷贝放到前面里
printf("%s\n",b1.name);                                 //结果为C++
return 0;
}
顺序结构,选择结构,循环结构
分支和循环语句
在C语言中由分号;隔开的就是一条语句(空语句也是语句)
if分支语句的语法结构:
if(表达式1)
语句1
if(表达式1)
语句1
else
语句2
if(表达式1)
语句1
else if(表达式2)
语句2
else
语句3
谁真谁执行,且各个条件互异。
int main()
{
int age=10
if(age<18)
printf("未成年\n");
else if(age>=18&&age<28)
printf("青年\n");
else(age>=28)
printf("老年\n");
return 0;
}
要执行多条语句,需要使用代码块即花括号{}括起来
if套if是可以的,但要加花括号{}用以区分,因为要注意else的就近匹配原则
常量与变量判断时,将常量放前面可预防错误为赋值
switch语句
往往用于多分支情况
int main()
{
int day=0;
scanf("%d",&day);
switch(day)                            //day是要判断的东西且要是整形表达式
{
case 1:                                  //1是判断的条件且要是整型常量表达式
printf("星期一\n");
break;                           //break用于跳出循环
case 1:
printf("星期二\n");
break;
case 1:
printf("星期三\n");
break;
case 1:
printf("星期四\n");
break;
case 1:
printf("星期五\n");
break;
case 1:
printf("星期六\n");
break;
case 1:
printf("星期日\n");
break;
}
return 0;
}
int main()
{
int day=0;
scanf("%d",&day);
switch(day)     
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:                              //用于输入不属于上述情况时的反应
printf("输入错误\n");
break;                  
}
while循环语句

(1)break循环分路
只要遇到break,就停止后期的所有的循环,直接永久终止循环
int main()
{
int i=1
while(i<=10)                 //i<=10是循环的条件
{
if(i==5)
break;                         //跳出while循环
printf("%d\t",i);
i++;
}
return 0;
}
最后结果为1  2  3  4  5  6  7  8  9  10
(2)continue循环分路
用于终止本次循环的,也就是本次循环中continue后面的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断
int main()
{
int i=1
while(i<=10)                 //i<=10是循环的条件
{
if(i==5)
continue;                    //continue指继续,是跳过了后续程序的返回,此时的程序是到i=5时前半部分无限循环了
printf("%d\t",i);
i++;
}
return 0;
}
最后只显示1  2  3  4  _
int main()
{
int ch=0;
while ((ch=getchar())!=EOF)        //getchar指输入字符,EOF指文件结束标志,本质为-1
putchar(ch);                                //putchar指输出字符与printf输出字符的效果一样
return 0;
}
结果是只要不输入Ctrl+Z(getchar会输入EOF)输入任何值输出的还是本身
int main()
{
int ret=0;
char password={0};
printf("请输入密码:");            
scanf("%s",password);                 //scanf只会读取空格之前的东西,密码会存放在password数组中,进入输入缓冲区被读走,但是留下了空格之后的东西和\n
while((ch=getchar())!=’\n’);        //用于读走空格之后的东西和\n
{
;                                               //空代码,只要循环的那部分功能
}
printf("请确认(Y/N):");        //所以此处直接读取了空格之后的东西和\n
ret=getchar();
if(ret==’Y’)
{
printf("确认成功\n");
}
else
{
printff("放弃确认\n");
}
return 0;
}
for循环
for(表达式1;表达式2,;表达式3)
循环语句;
表达式1为初始化部分,用于初始化循环变量;表达式2为条件判断部分,用于判断循环时候终止;表达式3为调整部分,用于循环条件的调整
int main()
{
int i=0;
for(i=1;i<=10;i++)
printf("%d",i);
return 0;
}

for中breeak循环分路
int main()
{
int i=0;
for(i=1;i<=10;i++)
{
if(i==5)
break;
printf("%d",i);
}
return 0;
}
结果为1234
for中contiune循环分路
int main()
{
int i=0;
for(i=1;i<=10;i++)
{
if(i==5)
continue;                  //跳到调整表达式了
printf("%d",i);
}
return 0;
}
结果为1234678910
注意:1.不可以在for循环体内修改循环变量,防止for循环失去控制。
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法
i=0;i<10;i++
3,for循环可以省略初始化,判断,调整
for(;;)
判断条件省略会死循环
4.for中表达式可以用多个式子
int x,y;
for(x=0,y=0;x<2&&y<5;x++,y++)
printf("hello\n");
return 0;
例题:
int main()
{
int i=0,k=0;
for(i=0,k=0;k=0;i++,k++)     //因为k直接赋值为0,0为假,所以直接结束循环,结果为循环0次
k++;
return 0;
}
do...while()循环
do
循环语句;
while(表达式);

int main()
{
int i=1;
do
{
printf("%d",i);
i++
}
while(i<=10);
return 0;
}
do...while()循环语句中continue分路
int main()
{
int i=1;
do
{
if(i==5)
continue;
printf("%d",i);
}
while(i<=10);
return 0;
}
结果为1234_      死循环了


文档来源:51CTO技术博客https://blog.51cto.com/u_15293084/3162852
页: [1]
查看完整版本: C语言编程学习笔记(鹏版)2021/7/13