D4控制语句
如果出现图片无法查看可能是网络问题,我用的GitHub+图床保存的图片,用uu加速器说不定能解决,可以参考我另外一篇文章GitHub的使用方法
GitHub使用教程含网络问题_github加速器_肉丸子QAQ的博客-CSDN博客
控制语句
if
一般格式:
if()
{
}else
{
}
if的嵌套
-
else总是与它上面的最近的if配对,与书写格式无关。
-
要实行强行的配对关系可以利用{ }分割关系
if()
{if() 语句块1}
else 语句块2
思考
-
如何判断一个年份是否是闰年?
-
能被4整除,但不能被100整除的年份;
-
能被100整除,又能被400整除的年份;
#include <stdio.h> int main() { int a; printf("请输入年份:"); scanf("%d", &a); getchar();//垃圾字符处理 if( ((a%4==0) && (a%100)) || ((!(a%100)) && (a%400==0)) )//这里对100取余没有等号,是因为100取余只有0/1的结果 { printf("%d年为闰年\n", a); }else{ printf("不是闰年\n"); } return 0; }
-
switch
格式:
switch(表达式)
{
case 常量1:语句1 break;//常量1就是表达式的值
case 常量2:语句2 break;
default:语句n
break;
}
switch语句的使用:
-
每个常量表达式的值必须各不相同,否则将会出现矛盾。
-
当表达式的值与case后面的常量表达式值相等时,就执行此case后面的语句。
-
switch中的表达式可以是整型、字符型表达式或枚举。
-
case 常量:只起语句标号的作用。
-
break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支后的break可以省略。
-
多个case可以执行一组语句。
思考:
- switch语句中的default起什么作用,是否可以省略?
在C语言中,switch语句用于根据不同的情况执行不同的代码块。default是switch语句中的一个可选标签,表示当没有任何一个case匹配时,执行default后面的代码块。如果没有default标签,则当没有任何一个case匹配时,程序不会执行任何代码,直接跳出switch语句。
因此,default的作用是提供一个备选方案,以确保程序在所有情况下都有一个合理的执行路径。但是,default标签并非必须存在,如果确信所有情况都已经覆盖到了,也可以省略default标签。
循环语句
go to
#include <stdio.h>
int main(int argc, const char * argv[])
{
int i = 1;
int sum = 0;
_loop:
if (i <= 100) {
sum += i;
i++;
goto _loop;//这个_loop可以随意换名字
}
printf("1+2+...+%d=%d\n", i, sum);
return 0;
}
-
当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。
-
无条件跳转易于理解
-
可以减少嵌套
-
可以避免那种忘记更新某一个出口点的问题
-
算是帮助编译器做了代码优化
-
while
格式:
while(表达式)
{
}
思考题
打印出所有的“水仙花”数。所谓“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。
水仙花
#include <stdio.h>
int main()
{
int ge, shi, bai;
int sum,a = 100;
while(a<1000)
{
bai = a/100;
shi = a%100/10;
ge = a%10;
sum = bai*bai*bai+shi*shi*shi+ge*ge*ge;
if(sum == a)
{
printf("%d\n",a);
}
a++;
}
return 0;
}
do while
do-while语句构成循环
基本形式
do
{
}while()
注意do while语句一定会执行一次循环
for
格式
for( 表达式1;表达式2 ;表达式3 )
{
}
-
括号里面不一定都需要填写
- 表达式1可省略,但循环之前应给循环变量赋值
- 表达式2可省略,将陷入死循环
- 表达式3可省略,但在循环体中增加使循环变量值改变的语句
-
-
先求解表达式1;
-
求解表达式2,若为真,则执行循环体,然后执行步骤3;若为假,则执行步骤5;
-
求解表达式3;
-
转回执行步骤2;
-
执行for下面的语句。
-
思考
利用for循环打印九九乘法表
#include <stdio.h>
int main()
{
int i,j;
for(i = 1; i < 10; i++)
{
for(j = 1; j < 10; j++)
{
if(i > j)//通过这个判断,将每行的多余的部分忽视打印
{
printf("%dx%d=%d\t", j, i, i*j);//\t这里将打印的内容对齐
}
}
printf("\n");
}
return 0;
}
实验现象:
辅助循环语句
break
用于从循环体内跳出循环体,即提前结束循环。
break
只能用在循环语句和switch语句中。
continue
结束本次循环,接着判定下一次是否执行循环
注意continue直结束本次循环,而break终止本层循环
return
-
return语句的一般形式: return ( <表达式> )
-
主要用于终止包含它的函数的执行
-
若终止的为主函数,则主程序结束
作业
1.打印九九乘法表(结果要三角形的九九乘法表)
2.打印出所有的“水仙花”数。所谓“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。
(编程题要注意代码规范,基本的代码规范:1.运算符前后要加空格,2.一条语句要放在一行,花括号同样单独放一行;3.代码要进行缩进对齐,可以在命令行模式下按gg=G来让代码自动对齐。)
参考文中的思考题,目录可快速查阅