一、选择结构:
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");
}