目录
4.1算法
算法:解决问题的方法(结构)
算法的三种基本结构:顺序结构、选择结构(分支结构)、循环结构
4.2顺序结构
按照语句书写的先后顺序依次执行的语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成
#include<stdio.h>
int main() {
int a = 0;
a = 10;
printf("%d\n",a);
return 0;
}
4.3选择结构
根据条件判断来选择执行哪一条语句
选择结构的语句有:if条件语句和switch多路分支语句
if语句
if(条件表达式)
语句1;
执行过程:如果条件表达式的值为真,则执行语句1,否则不执行语句1
#include<stdio.h>
int main() {
int a = 0;
int b = 0;
int max = 0;
printf("请依次输入a和b的值:");
scanf("%d%d", &a, &b);
max = a;
if (max < b)
max = b;
printf("max:%d\n", max);
return 0;
}
运行结果
if条件语句中的语句1不是只有一条语句的意思,可以是多条语句用{}括起来的复合语句
练习题:
1.定义一个变量a,写出判断a为奇数的表达式
if(a%2 !=0){
printf("a是奇数,a=%d",a);
}
2.定义一个变量b,写出判断b为偶数的表达式
if(b%2 ==0){
printf("b是偶数,b=%d",b);
}
3.定义一个变量c,写出判断c同时能被3和5整除的表达式
if(c%3 ==0&&c%5==0){
printf("c,c=%d",c);
}
4.定义一个变量d,写出判断d能够被3整除或者能够被5整除的表达式
if(d%3 ==0||d%5==0){
printf("d,d=%d",d);
}
else语句
if(条件表达式)
语句1;
else:
语句2;
执行过程:如果条件表达式的值为真,则执行语句1,否则执行语句2
#include<stdio.h>
int main() {
int a = 0;
int b = 0;
int max = 0;
printf("请依次输入ab的值:");
scanf_s("%d%d", &a, &b);
if (a < b)
max = b;
else
max = a;
printf("max:%d\n", max);return 0;
}
运行结果
if...else if语句
if(条件表达式1)
语句1;
else if(条件表达式2)
语句2;
...
else
语句n;
执行过程:依次判断条件表达式的值,当某个值为真时,则执行相应的语句,然后跳出整个if语句之外,继续执行后面的程序。如果所有的表达式都为假,则执行语句n,然后继续执行后面的程序。
#include<stdio.h>
int main() {
int score = 0;
scanf_s("%d", &score);
if (score >= 90 && score <= 100)
printf("等级:A\n");
else if (score >= 80 && score <= 89)
printf("等级:B\n");
else if (score >= 70 && score <= 79)
printf("等级:C\n");
else if (score >= 60 && score <= 69)
printf("等级:D\n");
else
printf("等级:不合格\n");
return 0;
}
运行结果
switch多路分支语句
switch(表达式)
{
case 常量表达式1:语句1(集合);
case 常量表达式2:语句2(集合);
...
case 常量表达式n:语句n(集合);
default:语句n+1;
}
执行过程:首先计算表达式的值,与常量表达式i进行比较,如果与其中一个常量表达式i的值相等,就执行其后面的语句直到遇到break语句才结束switch语句,如果case后无break语句,则继续执行随后所有的case后的语句。如果没有找到与表达式的值相匹配的常量表达式,则执行default后的语句n+1
#include<stdio.h>
int main() {
int week = 0;
printf("今天星期几:");
scanf_s("%d", &week);
switch (week)
{
case 1:printf("今天星期一\n"); break;
case 2:printf("今天星期二\n"); break;
case 3:printf("今天星期三\n"); break;
case 4:printf("今天星期四\n"); break;
case 5:printf("今天星期五\n"); break;
case 6:printf("今天星期六\n"); break;
case 7:printf("今天星期日\n"); break;
default:printf("输入数据有误!\n");
}
return 0;
}
运行结果
条件运算符和条件运算表达式:(?:)
表达式1?表达式2:表达式3
求值过程:如果表达式1的结果为真,则以表达式2的值作为条件表达式的值,否则以表达式3 的值作为条件表达式的值
#include<stdio.h>
int main() {
int a = 0;
int b = 0;
int max = 0;
printf("请依次输入ab的值:");
scanf_s("%d%d", &a, &b);
max = a > b ? a : b;
printf("max:%d\n", max);
return 0;
}
运行结果
4.4循环结构
处理复杂问题时用到循环结构
循环结构三大语句:while语句、do while语句、for语句
while语句
while(循环条件表达式){
循环体语句;
}
执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行
#include<stdio.h>
int main() {
int i = 0;
int n = 0;
printf("请输入n的值:");
scanf_s("%d", &n);
while (i <= n)
{
printf("%d\n", i);
i++;
}
return 0;
}
运行结果
do...while语句
do
{
循环体语句;
}while(循环条件表达式);
执行过程:先执行循环体语句,在检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环
#include<stdio.h>
int main() {
int i = 0;
int sum = 0;
do {
sum += i;
i++;
} while (i < 5);
printf("%d\n", sum);
return 0;
}
运行结果
for语句
for(表达式1;表达式2;表达式3)
循环体语句
表达式1:设置初始条件,只执行一次,为0个或多个变量设置初值。
表达式2:是循环条件的表达式,用来判定是否继续循环,在每次执行循环体之前要先执行表达式2,然后决定是否继续执行循环
表达式3:作为循环的调整,比如是循环体变量增值,他是执行循环体语句之后在执行
#include<stdio.h>
int main() {
int i;
int n = 10;
for (i = 1; i <= n; i++);
{
printf("%d\n", i);
}return 0;
}
运行结果
4.5中断语句
break语句:跳出本层循环,执行循环后的语句
continue语句:跳出本次循环,执行下一次循环
goto语句:跳到指定的标号位