abs()绝对值函数,头文件为stdlib.h
sqrt()开根号函数,头文件为math.h,并且在编译时-lm链接数学库
判断一个年份是否是润年
1、能被4整除,但不能被100整除的年份是润年
2、能被4整除,能被100整除,又能被400整除的年份
switch中表达式的变量必须是整形、字符型、枚举类型
以下是一个整形和一个枚举类型的例子,其中枚举类型默认从0开始
当函数有很多个出口,使用goto把这些出口几种到一处是很方便的,特别是函数中有许多重复的清理工作时:
可无理由跳转
可以减少嵌套
可以避免忘记更新某一个出口点的问题
帮助编译器做了代码优化
要注意:
1、变量初值
2、终止条件
3、变量变化
pow(x,y)表示x的y次方,需引入头文件
for(expression1;expression2;expression3) {statements;}
执行过程:
1、先求解表达式1;
2、求解表达式2,若为真,则执行循环体,然后执行步骤3,若为假,则执行步骤5
3、求解表达式3;
4、转回执行步骤2;
5、执行for下面的语句
表达式1可省略,但循环前应给循环变量赋值
表达式2可省略,将陷入死循环
表达式3可省略,但在循环体中增加使循环变量值改变的语句
for(;;)相当于while(1)
例子:利用for循环打印下面的图案
break只能用于循环语句和switch语句中
素数:在一个大于1的自然数中,除了1和此整数自身外,没有其他自然数整除的数。(1和0都不是素数,也不是合数)
continue:结束本次循环,接着判断下一次是否执行循环
continue不能在单独的switch中使用,因为switch是分支语句。可以在有for外层循环中使用,用于结束当前循环
例子:对判断素数的程序进行完善,若用户输入的不是整数,重新输入
判断用户输入是不是整数是通过scanf的返回值,ret=scanf("%d",&n),如果返回值是0,就不是整数
下图中,用户和scanf之间有一个输入缓冲区,用户输入是先放入到缓冲区中,如果输入的是w,接着就放到了缓冲区中,此时scanf看到是w,而不是一个整形,就不从缓冲区取值,导致了下面程序的不断循环,可以在goto loop上面写getchar()