顺序选择
顺序结构
所谓顺序结构就是按照从上到下依次执行的顺序。
选择(if语句 / switch语句)
语法结构
[!Warning] if注意点
![]
- else语句的匹配,else总是和最近的那个if相匹配。
- 缩进格式不能意味着else的匹配;
[!Note] tips
- 在if else的后面总是用{}-养成良好的编程习惯,便于我/他人/编译器理解。
- 即使只有一条语句的时候。-养成良好编程习惯;
注意
if如果没有大括号,那么if后面只会嵌套一条语句-带“;”的语句
#include <stdio.h> /*包含头文件*/
int main() /*主函数main*/
{
int a=2,b=1;
if(a<b)
printf("alsjdfla");
//
printf("adsfasdf");
//结果是:adsfasdf 说明缩进没有让第二个printf嵌套在if语句中
return 0;
}
if 后面如果有两条语句 然后后面再跟一个else那么,else会标红。原因是if 后面如果没有大括号,那么只会嵌套一条语句;
if
if(条件语句){
语句...;
}
if()else
还有一种是:
//这种形式的话只有()后的一句话可以执行。
if()
语句...;
else
语句...;//到第一条语句else结束,而不是想python一样一缩进就是{}
if()else if{}
if(){
语句1;
}else if(){
语句2;
}else{
语句3;
}
switch case
[!Warning] 注意
//语法结构
//type必须是整数或者是枚举类型
switch(type){
//这个1也可以转化成有define定义的常数
case 1:
语句1;
break;
case 2:
语句2;
break;
case 3:
语句3;
break;
default:
语句4;
}
```C
//分数等级
int score;
scanf("%d",&score);
score/=10;
//不过这样的缺点是不是单一出口,无法后续计算或者调用。
switch(score){
case 9:
printf("等级为A");
break;
case 8:
printf("等级为B");
break;
case 7:
printf("等级为C");
break;
...
}
用switch写出分段函数
#include<stdio.h>
#include<math.h>
int main()
{
int x,flag;
double y=0;
scanf("%d",&x);
flag=(x<2)?1:(x<6)?2:(x<10)?3:4;
switch(flag)
{
case 1:y=x;break;
case 2:y=pow(x,2)+1;break;
case 3:y=sqrt(x+1);break;
default:y=1*1.00/(x+1);break;
}
printf("y=%.2lf\n",y);
return 0;
}
时间差代码
#include <stdio.h>
int main()
{ //下面需要解决的是,时差之间的分钟借位问题。
int hour1, minute1;
int hour2, minute2;
//值得注意的是:如果int ih ,im;这条语句在不同的编译器中有不同的结果,vs2010C++会报错,vs2022则不会
int ih , im;
scanf_s("%d%d", &hour1, &minute1);
scanf_s("%d%d", &hour2, &minute2);
ih = hour2 - hour1;
im = minute2 - minute1;
if (im < 0) {
im = 60 + im;
ih--;
}
printf("时间差是%d小时%d分钟", ih, im);
//需要测试的情况:
//12:00 13:30 | 13:00 12:00
//
return 0;
}
找零程序(if else)
#include <stdio.h>
int main()
{
//找零计算器
int price, change, balance;
printf("请输入你的商品价格:");
scanf_s("%d", &price);
printf("请输入你的余额:");
scanf_s("%d", &balance);
change = balance - price;
if (change >= 0) {
printf("谢谢惠顾,找零%d元,欢迎下次光临", change);
}
else {
printf("抱歉,余额不足,还应再付%d元", -change);
}
return 0;
}
两个数最大值程序(MAX/MIN)if / if else 解决方案
#include <stdio.h>
int main(){
//请找出这两个数中的最大一个数;
int a,b,max;
scanf("%d",&a);
scanf("%d",&b);
if(a>b){
max=a;
}else{
max=b;
}
printf("最大值是:%d",max)
}
求三个数的最大值/最小值
#include <stdio.h>
int main() {
//给出任意的三个数,然后算出最大的数
int a , b, c;
int max;
printf("请输入三个整数:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b){
if(a>c){
max=a;
}else{
max=c;
}
}else{
if(b>c){
max=b;
}else{
max=c;
}
}
printf("max为%d",max);
return 0;
}
if ()else if{}
//编写一个数学分段函数;
/*
*f(x)=-1;x<0
0;x=0
2x;x>0
*/
#include <stdio.h>
int main() {
//这样把f写在if语句中的好处是:方便后期的计算和或者函数调用;
int x,f;
scanf("%d",&x);
if(x<0){
printf("f=-1");
f=-1;
}else if(x==0){
printf("f=0");
f=0;
}else{
printf("f=2x");
f=2*x;
}
return 0;
}
判断的条件

优先级
算数运算符的优先级>关系运算符
//测试优先级(算数运算符和关系运算符)
printf("%d",7>=3+4);
关系运算符的优先级>赋值语句
#include <stdio.h>
int main()
{
int r,a;
r=10;
a=r>0;
printf("%d",a);
return 0;
}
//结果是 1 ,验证了r>0优先进行,而不是一开始就把r值赋值给a,如果那样结果就是10。
判断是否相等的 == 和 !=的优先级比其他的低,而连续的关系运算符是从左到右进行的,
5>3==6>4 结果为1
6>5>4 结果为0 , 说明在同关系运算符的情况,是从左到右的运行。
a==b==6
a==b>0 / 2==2>0 (这个式子能够判断出那个优先) 结果是:0 说明是>优先运行。
本文来自博客园,作者:Development_UP,转载请注明原文链接:https://www.cnblogs.com/develop-up/articles/16475166.html




浙公网安备 33010602011771号