C语言笔记7 - 顺序/选择/循环/代码风格

......

if

switch

while

for

do while

......

选择

switch语句:一个 switch 语句允许测试一个变量等于多个值时的情况

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
    int a;
    printf("input integer number: ");
    scanf("%d",&a);
    switch(a)
    {
        case 1:printf("Monday\n");
        break;    //必须要有break,否则会一直运行下去不会跳出switch语句
        case 2:printf("Tuesday\n");
        break;
        case 3:printf("Wednesday\n");
        break;
        case 4:printf("Thursday\n");
        break;
        case 5:printf("Friday\n");
        break;
        case 6:printf("Saturday\n");
        break;
        case 7:printf("Sunday\n");
        break;
        default:printf("error\n");
    }
}

if / if...else语句:一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
 
   /* 检查布尔条件 */
   if( a == 10 )
   {
       /* 如果 if 条件为真,则输出下面的语句 */
       printf("a 的值是 10\n" );
   }
   else if( a == 20 )
   {
       /* 如果 else if 条件为真,则输出下面的语句 */
       printf("a 的值是 20\n" );
   }
   else if( a == 30 )
   {
       /* 如果 else if 条件为真,则输出下面的语句 */
       printf("a 的值是 30\n" );
   }
   else
   {
       /* 如果上面条件都不为真,则输出下面的语句 */
       printf("没有匹配的值\n" );
   }
   printf("a 的准确值是 %d\n", a );
 
   return 0;
}

注意用 if 判断语句时,一定要用 == 而不是 =

    int num = 3;
    if(num = 5)//会进入后面的打印,失去了判断功能
    {
        printf("hehe\n");
    }

为了避免这种错误,可以把数字提前:

    int num = 3;
    if(5 == num)//少一个 = 就会报错
    {
        printf("hehe\n");
    }

if...else语句中else只和最近的if语句配对,例如:

    int a = 0;
    int b = 2;
	if (a == 1)
		if (b == 2) printf("hehe\n");
		else printf("haha\n");

上述代码输出为空

循环

while 循环:要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句

/*
    while(condition)
    {
      statement(s);
    }
*/

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* while 循环执行 */
   while( a < 20 )
   {
      printf("a 的值: %d\n", a);
      a++;
   }
 
   return 0;
}

for 循环:循环允许编写一个执行指定次数的循环控制结构

/*
    for ( init; condition; increment )
    {
       statement(s);
    }
*/

#include <stdio.h>
 
int main ()
{
   /* for 循环执行 */
   for( int a = 10; a < 20; a = a + 1 )
   {
      printf("a 的值: %d\n", a);
   }
 
   return 0;
}

关于for( int a = 10; a < 20; a = a + 1 )这种初始化,有些编译器运行上述语句时会报错,如下:

[Error] 'for' loop initial declarations are only allowed in C99 or C11 mode

意思是“不允许在for内部定义变量”

改为:

int a=10;
for(; a<20; a=a+1){
}

即可

do...while 循环:在循环的尾部检查它的条件,do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环

/*
    do
    {
       statement(s);
      
    }while( condition );
*/

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* do 循环执行,在条件被测试之前至少执行一次 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

循环控制语句:break, continue, goto

break 语句:终止循环或 switch 语句

  1. 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  2. 它可用于终止 switch 语句中的一个 case。
while 循环加 break:
while (testExpression)
{
    //codes
    if(condition to break){
        break;
    }
}
// jump here // break out of the loop

eg:

    int i = 0;
    while (i < 10) 
	{
        if (i  == 5) break;
		printf("%d ", i);
        i++;
	}

循环会在i==5时被终止,结果:

for循环加 break:
for (init; testExpression; update)
{
    //codes
    if (condition to break)
    {
        break;
    }
    //codes
}
//jump here, break out of the loop
do...while 循环加 break:
do
{
    if(condition to break){
        break;
    }
}
while (testExpression);
//jump here //breakout of the loop

continue 语句:continue 会跳过当前循环中的代码,强迫开始下一次循环

while 循环加入 continue
#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int i = 0;
	while (i < 10)
	{
		if (i == 5) continue;
		printf("%d ", i);
		i++;
	}
	return 0;
}  

结果:

 

这是因为continue会强制结束本次循环,在 i==5 之后会自动跳准到 i<10 的判断,再次进入 if 语句,陷入死循环

for 循环加入 continue
#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	
	for (int i = 0; i < 10; i++)
	{
		if (i == 5) continue;
		printf("%d ", i);
		
	}
	return 0;
}  

结果:

不会陷入死循环,因为 continue 之后进入下一次循环 i++ 不会再进入 if 语句

代码风格:另外代码风格很重要,要易读,方便理解

//代码1
if (condition){
    return x;
}
return y;

//代码2
if (condition)
{
    return x;
}
else
{
    return y;
}

代码1和2效果相等,虽然2看上去更繁琐,但是2更为直观

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值