分支
IF
if
如果表达式的值为真,则执行其后的语句,否则不执行该语句
#include<stdio.h>
int main(){
int a,b,max;
printf("input two numbers: \n");
scanf("%d%d",&a,&b);
max = a;
if(max<b) max=b;
printf("max=%d",max);
}
if-else
如果表达式的值为真,则执行语句1,否则执行语句2
#include<stdio.h>
int main(){
int a,b;
printf("input two numbers: \n");
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%d\n",a);
else
printf("max=%d\n",b);
}
if_else_if
依次判断表达式的值,当出现某个值为真时,则执行对应的语句
#include<stdio.h>
int main(){
char c;
printf("input a character: \n");
c=getchar();
if(c<32)
printf("This is a control character \n");
else if(c>='0'&&c<='9')
printf("This is a digit \n");
else if(c>='A'&&c<='Z')
printf("This is a capital letter \n");
else if(c>='a'&&c<='z')
printf("This is a small letter \n");
else
printf("This is an other character \n");
}
if 语句嵌套
else
总是与他前面最近的if
配对
#include<stdio.h>
int main(){
int a,b;
printf("please input A,B: \n");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B \n");
else printf("A<B \n");
else
printf("A=B \n");
}
条件运算符 ?与:
为三目运算符,即有三个参与运算的量
表达式1?表达式2:表达式3
如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值
#include<stdio.h>
int main(){
int a,b,max;
printf("input two numbers: \n");
scanf("%d%d",&a,&b);
printf("max=%d",a>b?a:b);
}
switch
计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case
后的常量表达式不相等时,则执行default
后的语句。
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式1: 语句2;
...
case 常量表达式1: 语句n;
default: 语句n+1;
}
#include<stdio.h>
int main(){
int a;
printf("input integer number: \n");
scanf("%d",&a);
switch(a){
case 1: printf("Monday \n");
case 2: printf("Tuesday \n");
case 3: printf("Wednesday \n");
case 4: printf("Thursday \n");
case 5: printf("Friday \n");
case 6: printf("Saturday \n");
case 7: printf("Sunday \n");
default: printf("error \n");
}
}
break
#include<stdio.h>
int main(){
int a;
printf("input integer number: \n");
scanf("%d",&a);
switch(a){
case 1: printf("Monday \n");break;
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");
}
}
循环
goto
goto 语句标号;
其中标号是一个有效的标识符,这个标识符加上一个":"一起出现再函数内某处,
执行goto语句后,程序将跳转到该标号处并执行其后的语句
标号必须与goto语句同处于一个函数中,但可以不在一个循环层中
goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行
例:用goto语句和if语句构成循环,求 ∑ n = 1 100 n \sum_{n=1}^{100}n ∑n=1100n
#include<stdio.h>
int main(){
int i,sum=0;
i=1;
loop: if(i<=100)
{
sum = sum + i;
i++;
goto loop;
}
printf("sum=%d\n",sum);
}
while
while(表达式) 语句
计算表达式的值,当值为真(非0)时,执行循环体语句
用while语句,求
∑
n
=
1
100
n
\sum_{n=1}^{100}n
∑n=1100n
#include<stdio.h>
int main(){
int i,sum=0;
i=1;
while(i<=100){
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
}
只有从键盘输入的字符不是回车就继续循环
#include<stdio.h>
int main(){
int n = 0;
printf("input a string: \n");
while(getchar()!='\n'){
n++;
}
printf("%d\n",n);
}
do-while
do
语句
while(表达式):
它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。
do-while循环至少执行一次循环语句
#include<stdio.h>
int main(){
int i,sum=0;
i=1;
do{
sum=sum+i;
i++;
}
while(i<=100);
printf("sum=%d\n",sum);
}
for
for(循环遍历赋初值;循环条件;循环变量增量) 语句
先给i赋初值1,判断i是否小于等于100,若是则执行语句,之后值增加1.再重新判断,直到条件为假,即i>100时,结束循环.
#include<stdio.h>
int main(){
int i,sum=0;
for(i=1;i<=100;i++){
sum=sum+i;
}
printf("sum=%d\n",sum);
}
break
break
与 if
语句联在一起,即满足条件便跳出循环
#include<stdio.h>
int main(){
int i=0;
char c;
while(1){
c='\0'; // 变量赋初值
while(c!=13&&c!=27) //键盘接收字符直到按回车或ESC键
{
c=getch();
printf("%c\n",c);
}
if(c==27)
break; //判断若按ESC键则退出循环
i++;
printf("The No. is %d:\n",i);
}
printf("The end");
}
continue
continue
语句的作用时跳过循环本种剩余的语句而强行执行下一次循环
#include<stdio.h>
int main(){
char c;
while(c!=13){ // 不是回车符则循环
c=getch();
//printf("按动ESC后继续循环");
if(c==0X1B)
continue; // 若按ESC键不输出便进行下次循环
printf("%c\n",c);
}
}