目录
一、分支语句
1、if语句
-
语法
-
例子
//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语句
-
语法
-
例子
//打印输入数字对应的星期
#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循环
-
语法
-
例子
//打印1~10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("% d ", i);
i++;
}
return 0;
}
- break、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;
}
-
getchar()、putchar()
#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循环
-
语法
-
例子
#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;
}
- 变式1
#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;
}
- 变式2
#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()循环
-
语法
-
例子
#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;
}