一、选择结构:
1、if 语句
if — else 语句
if — else if — else 语句
2、switch
语句、穿透
注意:
(1)switch后面的小括号中的表达式只能为char, int, short, long, 枚举类型,且不能为空。
(2)case语句表达式的值只能为:
char, int, short, long, 枚举类型,且只能是常量。
(3)若无break,则会穿透,//当执行switch语句时,若没有遇到break,则自动进入下一个case继续执行。
(4)若条件较多,且数据类型为整型,switch语句比if语句效率高。
//输入成绩,判断等级
float score = 0;
printf("enter your score:");
scanf("%f", &score);
if (score < 0 || score > 100) {
printf(" 输入错误");
return 0;
}
int result = score / 10;
switch (result) {
case 10:
case 9:
printf(" 优秀\n");
break;
case 8:
printf(" 良好\n");
break;
case 6:
case 7:
printf(" 中等\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
printf(" 差\n");
break;
default:
printf(" 人才\n");
break;
printf("enter your score:");
scanf("%f", &score);
if (score < 0 || score > 100) {
printf(" 输入错误");
return 0;
}
int result = score / 10;
switch (result) {
case 10:
case 9:
printf(" 优秀\n");
break;
case 8:
printf(" 良好\n");
break;
case 6:
case 7:
printf(" 中等\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
printf(" 差\n");
break;
default:
printf(" 人才\n");
break;
}
二、循环结构
1、while
循环
while ( 条件 ) {
} //先判断,在执行
2、do---while
do {
} while ( 条件 );
// 先执行,在判断
while循环与do---while
初始条件不符合时,do——while
也会循环一次,而while
循环一次也不会执行
3、for 循环
/*******for
循环*********/
for (
int i = 1
;
i < 100
;
i++)
(1) (2) (4)
{
(3)
}
注意:
1)
、for
循环的顺序 //执行步骤:(1),(2),(3),(4)
2)
、小括号中一定要有两个分号
三、跳转语句
1、break
跳出当前循环
break
语句用于switch
语句和循环语句
2、continue
作用,忽略此次循环剩下的操作,直接进入下一次的循环
3、goto 无条件跳转
/*1
、一球从
100
米高度自由落下,每次落地后反跳回原高度的一半;在落下,
求它在第三次落地时,共经过多少米?第三次反弹多高?
求它在第三次落地时,共经过多少米?第三次反弹多高?
*/
float
h =
100
,sum =
0
;
for
(
int
i =
1
; i <=
3
; i++) {
sum += h; //=== 》 sum = sum + 第 i 次落下高度
h = h / 2 ; // 第 i 次反弹高度
sum += h; //=== 》 sum = sum + 第 i 次反弹高度
}
printf ( " 它在第三次落地时,共经过 %.2f 米 , 第三次反弹的高度是 %.2f 米。 \n" ,sum-h,h);
sum += h; //=== 》 sum = sum + 第 i 次落下高度
h = h / 2 ; // 第 i 次反弹高度
sum += h; //=== 》 sum = sum + 第 i 次反弹高度
}
printf ( " 它在第三次落地时,共经过 %.2f 米 , 第三次反弹的高度是 %.2f 米。 \n" ,sum-h,h);
//2 、打印两幅图案
/*
输出图案:
*
***
*****
*******
*****
***
*
*/
方法一:
int
i =
0
, j =
0
,k =
0
;
//i
控制行数,
k
控制一行
*
的数量
for (i = 1 ; i <= 4 ; i++) { // 输出上面 4 行的 *
for (k= 1 ; k < 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
for (i = 1 ; i <= 3 ; i++) { // 输出第 5 、 6 、 7 行的 *
for (k= 1 ; k <= 7 - 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
for (i = 1 ; i <= 4 ; i++) { // 输出上面 4 行的 *
for (k= 1 ; k < 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
for (i = 1 ; i <= 3 ; i++) { // 输出第 5 、 6 、 7 行的 *
for (k= 1 ; k <= 7 - 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
方法二:
int
max =
7
;
for
(
int
i =
0
; i < max; i++) {
for
(
int
j =
0
; j <
2
* i +
1
&& j <
2
* (max -
1
- i) +
1
; j++) {
printf ( "*" );
}
printf ( "\n" );
printf ( "*" );
}
printf ( "\n" );
}
/*
3、 输出图案:
*
***
*****
*******
*****
***
*
*/
3、 输出图案:
*
***
*****
*******
*****
***
*
*/
方法一:
int i = 0 , j = 0 ,k = 0 ; //i 控制行数, j 控制空格, k 控制一行 * 的数量
for (i = 1 ; i <= 4 ; i++) { // 输出上面 4 行的 *
for (j= 1 ; j<= 4 -i; j++) {
printf ( " " ); // 输出 * 前面的空格
}
for (k= 1 ; k < 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
for (i = 1 ; i <= 3 ; i++) { // 输出第 5 、 6 、 7 行的 *
for (j= 1 ; j<=i; j++) {
printf ( " " ); // 输出 * 前面的空格 }
}
for (k= 1 ; k <= 7 - 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
int i = 0 , j = 0 ,k = 0 ; //i 控制行数, j 控制空格, k 控制一行 * 的数量
for (i = 1 ; i <= 4 ; i++) { // 输出上面 4 行的 *
for (j= 1 ; j<= 4 -i; j++) {
printf ( " " ); // 输出 * 前面的空格
}
for (k= 1 ; k < 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
for (i = 1 ; i <= 3 ; i++) { // 输出第 5 、 6 、 7 行的 *
for (j= 1 ; j<=i; j++) {
printf ( " " ); // 输出 * 前面的空格 }
}
for (k= 1 ; k <= 7 - 2 * i; k++) {
printf ( "*" ); // 输出一行的 *
}
printf ( "\n" ); // 输完一行后换行
}
方法二:
int
max =
7
;
for
(
int
i =
0
; i < max; i ++) {
// 打印空格 0-3 1-2 2-1 3-0 4-1 5-2 6-3
for ( int j = 0 ; j < (max - 1 )/ 2 - i || j < i - (max - 1 )/ 2 ; j++) {
printf ( " " );
}
// 打印 *
for ( int j = 0 ; j < 2 * i + 1 && j < 2 * (max - 1 - i) + 1 ; j++) {
printf ( "*" );
}
printf ( "\n" );
// 打印空格 0-3 1-2 2-1 3-0 4-1 5-2 6-3
for ( int j = 0 ; j < (max - 1 )/ 2 - i || j < i - (max - 1 )/ 2 ; j++) {
printf ( " " );
}
// 打印 *
for ( int j = 0 ; j < 2 * i + 1 && j < 2 * (max - 1 - i) + 1 ; j++) {
printf ( "*" );
}
printf ( "\n" );
}