目录
编辑练习 输⼊⼀个正的整数,逆序打印这个整数的每⼀位 例如:
1.switch 语句(分支语句)
也可以是字符型 因为字符型也被加入整形组了,他计算的是ASCLL码值
#include <stdio.h>
int main()
{
char ch = 'c';
scanf("%c", &ch);
switch (ch)
{
case 'a':
printf("字符是a\n");
break;
case 'b ':
printf("字符是b\n");
break;
}
return 0;
}
练习: 输⼊⼀个1~7的数字,打印对应的星期⼏ 例如:
输⼊:1 输出:星期⼀ 输⼊:
2 输出:星期⼆ 输⼊:
3 输出:星期三 输⼊:
4 输出:星期四 输⼊:
5 输出:星期五 输⼊:
6 输出:星期六 输⼊:
7 输出:星期天
#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;
default:
printf("输入错误,请重新输入\n");
break;
}
return 0;
}
如果需求发⽣变化,变为:
1. 输⼊1~5,输出的是“⼯作⽇”;
2. 输⼊6~7,输出“休息⽇”
#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;
default:
printf("输入错误,请重新输入\n");
break;
}
return 0;
}
当然我们还可以把这个代码更优化一下
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1: //case也可以不加break ,如果不加break
//那么语句就会一直向下执行直到找到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;
}
上⾯的练习中,我们发现应该根据实际的情况,来在代码中觉得是否使⽤ break ,或者在哪⾥使⽤ break ,才能正确完成实际的需求。
2.while 语句(循环语句)
2.1while 循环的实践
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语 句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。
练习:在屏幕上打印 1~10 的值
#include <stdio.h>
//练习:在屏幕上打印 1~10 的值
int main()
{
int a = 1;
while (a<=10)// 条件 如果a大于 10 了,那么条件为假 ,语句就会结束。
{
printf("%d ", a);//打印a 1 2 3 ....
a++;//a打印完每次都加一 就会回到条件
}
return 0;
}
练习 输⼊⼀个正的整数,逆序打印这个整数的每⼀位 例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
while (num)
{
printf("%d ", num % 10);//先把num % 10 的余数打印出来。
num = num / 10;在用num /10 消除位数
}
return 0;
}
3 for循环
for(表达式1; 表达式2; 表达式3)
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0 ; i < 10; i++)//表达式1 初始化 表达式2 条件判断 表达式3 变量调整
{
printf("%d ", i);
}
return 0;
}
⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果 ==0,则循环结束; 表达式2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式 3 ,调整循环变量,然后再去 表达式2 的地⽅执⾏判断, 表达式2 的结果是否为0,决定循环是否继 续。 整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循 环。
计算1~100之间3的倍数的数字之和
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 0; i < 100; i++)//打印从1-100数字范围
{
if (i % 3 == 0) //如果i % 3==0 那么i就能整除3
{
count += i; //把能整除3的数都加在一起。
printf("%d ", i);//可以打印出被3整除的数
}
}
printf("%d ", count);//打印被3整除的数的和
return 0;
代码优化
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 0; i < 100; i+=3)//这里的i++ 可以简化为i+=3 就是i=i+3。那么if就可省略不写。
{
count += i;
}
printf("%d ", count);
return 0;
}
4.do while 循环
do 语句;
while(表达式);
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1;//初始化
do
{
printf("%d ", i);
i++; //调整
} while (i <=10);//条件判断
return 0;
}
输⼊⼀个正整数,计算这个整数是⼏位数?
例如: 输⼊:1234 输出:4
#include <swtdio.h>
int main()
{
int i = 0;
int count = 0;
scanf("%d", &i);
do
{
int ret = i % 10;//余数为1位
i = i / 10;//为的是去掉1位
count++;//执行了几次就代表有几位数
} while (i);
printf("%d ", count);
return 0;
}
5. break和continue语句
在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C语⾔中 提供了 break 和 continue 两个关键字,就是应⽤到循环中的。
• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执 ⾏。 • continue 的作⽤是跳过本次循环中 continue 后边的代码,在 for 循环和 while 循环中有 所差异的
for 循环中的break
#inmclude <stdio.h>
int main()
{
int i = 1;
for (i = 1; i < 10; i++)
{
if (i == 5)//当i等于5时break会跳出循环 结果就是 1 2 3 4
break;
printf("%d ", i);
}
}
for 循环中的continue
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i < 10; i++)
{
if (i == 5)
continue;//这里的continue会跳过后面语句也就是5不会打印出来,
//回到i++变成6程序继续直到结束。
printf("%d ", i);
}
}
while 循环中的break
# include <stdio.h>
int main()
{
int i = 0;
while (i < 10)
{
if (i == 5)
break;//当i=5 的时候break执行 循环结束。
printf("%d ", i);
i++;
}
return 0;
}
while 循环中的continue
#include <stdio.h>
int main()
{
int i = 0;
while (i < 10)
{
if (i == 5)
continue;//在这里continue会跳过后面的语句,i++一直无法被执行就无法将5变成6跳出循
printf("%d ", i);
i++;
}
return 0;
}
好累写了一天 下班