赞
踩
目录
写法1:
while(表达式)
{
//语句组
}
写法2:
while(表达式); //其中的表达式可以是数值、运算语句、比较语句等
例如
while(1); //死循环
while(a++); //运算语句
while(a++>3); //运算+比较
执行逻辑:先判断表达式是否成立,成立则执行具体语句组
(一般情况下‘;’和‘{}’属于互斥状态)
写法:
for(表达式1;表达式2;表达式3;)
{
//语句组
}
表达式1:赋值表达式,用来对参与循环的变量进行赋值
表达式2:循环条件表达式,用来判断循环是否能够执行
表达式3:算术表达式,用来改变参与循环判断的变量
(for循环中所有表达式都可以被省略,但是内部的三个分号不行)
例如以下四种写法
- int i;
- for(i = 0;i < 5;i++)
- {
- printf("i = %d\t",i);
- }
- printf("\n");
- //循环执行5次
- i = 0;
- for(;i < 5;i++)
- {
- printf("i = %d\t",i);
- }
- printf("\n");
- //省略了赋值表达式,循环执行5次
- for(i = 0;;i++)
- {
- printf("i = %d\t",i);
- if(i == 4)
- break;
- }
- printf("\n");
- //省略了条件表达式,循环执行5次
- for(i = 0;i < 5;)
- {
- printf("i = %d\t",i++);
- }
- printf("\n");
- //省略了算术表达式,循环执行5次
写法
do
{
//语句组
}while(表达式);
执行逻辑:先执行语句组,在判断循环是否成立
- a = 3;
- do
- {
- printf("a = %d\n",a);
- }while(a-->1);
- //循环了三次
if(表达式)
{
//语句组
}
执行逻辑:如果表达式成立,那么执行语句组,否则跳过语句组
- int a = -5;
- int b = 6;
- if(a < b) //如果a<b输出下面的语句,反则跳过该句
- {
- printf("a<b\n");
- }
- if(a)
- {
- printf("a = %d\n",a);
- }
if(表达式1)
{
//语句组1
}
else
{
//语句组2
}
执行逻辑:如果表达式1成立,那么执行语句组1,反则跳过语句组1执行语句组2
- if(a)
- {
- printf("a = %d\n",a);
- }
- else
- {
- printf("b = %d\n",b);
- }
if(表达式1)
{
//语句组1
}
else if(表达式2)
{
//语句组2
}
...
else
{
//语句组n
}
其中每个if匹配后面最近未匹配的else
break和continue用在循环中
break的作用是直接退出循环
continue的作用是跳过本次循环,执行下一次循环
(注意break语句可以用在switch语句中,但continue不行)
- #include<stdio.h>
-
- int main()
- {
- int i;
- for(i = 0;i < 4;i++)
- {
- if(i == 2)
- {
- break; //直接退出循环
- }
- printf("break:i = %d\n",i);
- }
-
- for(i = 0;i < 4;i++0
- {
- if(i ==2)
- {
- continue;
- //跳过本次循环,执行下一次循环。注意i++还是有执行
- }
- printf("continue:i = %d\n",i);
- }
-
- return 0;
- }
写法
switch(表达式)
{
case常量:
//语句组1
default:
//语句组2
}
常量:无法修改的数据(系统内部)
变量:可以随意修改的数据(由程序员定义)
表达式:只能是整型常量表达式
(整型数据、字符型、枚举型)
其中字符类型因为字符在计算机中按照ASCII码来储存
执行逻辑:与if-else类似,根据常量的数值来执行相应的语句
- #include<stdio.h>
-
- int main()
- {
- int num
- scanf("%d",&num);
-
- switch(num)
- {
- case 0:
- printf("num == 0\n");
- break;
-
- default:
- printf("num != 0\n");
- break;
- }
- //此处一共输出一次打印
-
- switch(num)
- {
- case 0:
- printf("num == 0\n");
-
- default:
- printf("num != 0\n");
- }
- //此处输出两次打印
-
- return 0;
- }
- //上述switch相当于if-else语句
-
- if(num == 常量)
- {
- //语句组1
- }
- else
- {
- //语句组2
- }
注意一般来说case语句需要配合break语句使用,如果没有break语句程序会一直往下运行 直到遇到break语句或者结束switch语句
例如从键盘中输入字符数据,然后输出相应的ASCII码数值,遇到‘#’退出循环:
- #include<stdio.h>
-
- int main()
- {
- char str;
- int flag = 0;
-
- while(1)
- {
- scanf("%c",&str);
- //getchar(); 此语句可以将缓冲区\n清除,或在下面用case语句跳过
- switch(str)
- {
- case'#':
- printf("遇到#,退出程序\n");
- flag = 1; //此处为转变标志位
- break;
-
- case'\n': //因为空格\n会占字符,所以跳过\n
- break; //也可以在scanf语句下面添加getchar()
-
- default:
- printf("%c对应的ASCII码数值为:%d\n",str,(int)str);
- printf("请输入一个字符:\n");
- break;
- }
-
- if(flag == 1) //此处判断是否遇到‘#’,如果遇到,那么标志位变为1
- {
- break;
- }
- }
-
- return 0;
- }
如果需要用case来表示取值范围,需要有空格
错误示范:case 0...8:
正确示范:case 0 ...8:
写法
goto 标签名;
标签名:
语句组;
作用:用于语句的跳转,但注意该语句容易破坏程序逻辑性,常用于系统内核开发
- #include<stdio.h>
-
- int main()
- {
- goto exam; //开始进行语句跳转
- return 0;
-
- exam: //标签名
- printf("语句\n");
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。