C语言入门(5)——控制语句扩展
1. switch-case
省略break
实现输入年和月,返回该月的天数的函数。
int days_of_mouth(int year,int mouth){
int days;
switch(mouth){
case 1:
days = 31;
break;
case 2:
days = (year%4==0&&year%100||year%400==0)?29:28;
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
case 1:
days = 31;
break;
default:
days = -1; // 表示错误
}
return days;
}
省略break
:
int days_of_mouth(int year,int mouth){
int days;
switch(mouth){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
days = (year%4==0&&year%100||year%400==0)?29:28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = -1; // 表示错误
}
return days;
}
2. for
嵌套
1.打印*
组成的n*m
的长方形矩阵
例如:
输入
4 5
输出
*****
*****
*****
*****
#include<stdio.h>
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
printf("*");
}
printf("\n");
}
return 0;
}
2.打印*
组成n*n
的三角形
例如:
输入
4
输出
*
**
***
****
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
printf("*");
}
printf("\n");
}
return 0;
}
3.打印*
组成n*(2*n-1)
的三角形
例如:
输入
4
输出
*
***
*****
*******
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=2*i-1;j++){
printf("*");
}
printf("\n");
}
return 0;
}
3. 无限循环/死循环
无限循环/死循环是指判断条件永远为真的循环。
例如:
while(1){
/* 如果条件为真将重复执行的语句 */
}
或者
for(;;){
/* 如果条件为真将重复执行的语句 */
}
通常程序中要避免出现无限循环/死循环,特殊情况也会适当使用无限循环/死循环,这时可通过方式break
方式退出。