目录
一、分支语句
1、if语句
?语法
?例子
2、switch语句
语法
例子
二、循环语句
1、while循环
语法
例子
getchar()、putchar()
2、for循环
语法
例子
3、do……while()循环
语法
例子
一、分支语句
1、if语句
if(表达式1)
????????语句1;
else if(表达式2)
????????语句2;
else
????????语句3;
//else悬空
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else //else与最近的if匹配,打印结果为空
printf("haha\n");
return 0;
}
//练习1判断一个数是否为奇数
#include <stdio.h>
int main()
{
int num = 15;
if (num % 2 == 1)
printf("奇数\n");
return 0;
}
//练习2输出1-100之间的奇数
#include <stdio.h>
int main ()
{
int i = 1;
while (i <= 100)
{
printf("%d ",i);
i += 2;
}
return 0;
}
2、switch语句
- 多用于分支多的情况
- break语句跳出switch语句
- 没有break语句将从进入的case语句开始依次向下执行
- default语句是其他选项的出口,且不用考虑顺序
switch(表达式)
{
????????case 常量表达式1: 语句序列1;
????????case 常量表达式2: 语句序列2;
????????default: 语句序列3;
}
//打印输入数字对应的星期
#include <stdio.h>
int main ()
{
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;
}
//break语句的作用
#include <stdio.h>
int main ()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1: //没有break依次向下滑
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
//default子句
#include <stdio.h>
int main ()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1: //没有break依次向下滑
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default: //其他选项的出口,且不用考虑顺序
printf("输入错误\n");
break;
}
return 0;
}
//练习
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n) //n=1,从case 1进入
{
case 1:m++; //n=1,m=3
case 2:n++; //n=2,m=3
case 3:
switch (n) //n=2,从case 2进入
{
case 1:n++;
case 2:n++;m++; //n=3,m=4
break; //跳出所在switch语句
}
case 4:m++; //进入case 4,n=3,m=5;
break; //跳出所在switch语句
default:
break;
}
printf("m = %d, n = %d", m, n);
return 0;
}
二、循环语句
1、while循环
while(表达式)
{
????????循环语句;
}
//打印1~10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("% d ", i);
i++;
}
return 0;
}
- 在while循环中,break永久的终止循环
- 在while循环中,continue跳过本次循环continue后边的代码,直接去判断部分,看是否执行下一次循环
#include <stdio.h>
//在while循环中,break永久的终止循环
//在while循环中,continue跳过本次循环continue后边的代码,直接去判断部分,看是否执行下一次循环
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("% d ", i);
i++;
}
return 0;
}
- int c = getchar()可以读入一个输入的字符,整型变量将c包含输入字符的ascii码值
- putchar(c)可以将整型变量c的内容以字符的形式打印出来
- 输入crtl+z相当于没有输入,getchar()返回一个特殊值EOF(end of file结束获取字符)
- 不将c声明为char类型的原因:c必须不仅可以存储任何字符,还要可以存储EOF
- EOF定义在中,是一个整型数,具体数值不重要,只有与所有的char类型的值都不相同即可,本质是-1,没有字符的ascii值是-1
- getchar()会无视语句顺序拿走缓冲区的字符,需注意提前用清除缓冲区
#include <stdio.h>
//getchar()获取标准输入字符
//正确返回字符的ascii码值,是整型int,错误返回EOF(end of file文件结束标志)
int main()
{
int ch = getchar();
//printf("%c\n", ch);
putchar(ch);//输出一个字符
return 0;
}
#include <stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)//获取的字符正确
//EOF本质是-1不可能有这个ascii码值
{
putchar(ch);
}
//crtl+z——getchar结束读取,相当于没有输入返回EOF
reutrn 0;
}
#define #define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password); //输入123456\n,
//scanf取走123456,剩下\n被getchar()直接取走没有等待
getchar(); //故需要前置一个getchar()清除缓冲区
printf("请确认密码(Y/N):");
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
?
#define #define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password); //输入123456 abcd
//scanf()读入123456
int temp = 0; //清除所有所有字符
while((temp = getchar()) != '\n')
{
;
}
printf("请确认密码(Y/N):");
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
2、for循环
建议
- 不可在for循环体内修改循环变量,防止for循环失去控制
- 建议for语句的循环控制变量的取值采用“前闭后开区间”的写法
for(表达式1; 表达式2; 表达式3)
{
????????循环语句;
}
- 表达式1:初始化部分,用于初始化循环变量
- 表达式2:条件判断部分,用于判断循环是否终止
- 表达式3:调整部分,用于循环条件的调整
#include <stdio.h>
//打印1~10
int main()
{
int i = 0;
for(i=1; i<=10; i++)
printf("%d", i);
return 0;
}
//break语句作用
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ", i);
}
//结果:1 2 3 4
return 0;
}
//continue语句作用
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ", i);
}
//结果:1 2 3 4 6 7 8 9 10
return 0;
}
#include <stdio.h>
int main()
{
//判断部分省略,判断部分恒为真
for(;;)
{
printf("haha\n");
}
//haha死循环
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for(; i<3; i++)
{
for(; j<3; j++) //i=1时j依然=3,故只打印3个haha
{
printf("haha\t");
}
}
//haha haha haha
return 0;
}
- 判断条件可以多个
- 判断部分y=0结果为0为假,循环0次
#include <stdio.h>
int main()
{
int x, y;
for (x = 0, y = 0; y=0; ++x, y++)
{
printf("hehe\n"); //判断部分y=0结果为0为假,循环0次
}
return 0;
}
3、do……while()循环
do
{
????????循环语句;
}while(表达式);
#include <stdio.h>
//打印1 2 3 4
int main ()
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d ", i);
i++;
} while (i<=10);
return 0;
}
|