人们在人生中需要做出许多选择,小到考虑晚上吃什么,大到决定高考志愿填报的学校。只有一次次选择后才能带来无限可能,我们要根据自己掌握的情况,做出最佳的选择。

程序的执行也不是一成不变的,往往会要求程序能够在不同的场合下有不同的动作。这时就需要在代码中使用条件语句来做出不同的选择。比如说,登录洛谷网时,网站后台会将你提交的用户名和密码在后台数据库中看看是否匹配,如果能够匹配就登陆成功,否则就登陆失败。这一章就来介绍如何让程序做出选择。

https://www.luogu.com.cn/training/101#problems

P2433 【深基1-2】小学数学 N 合一

#include<bits/stdc++.h>
using namespace std;
void solve1() {cout<<"I love Luogu!";}
void solve2() {cout<<6<<" "<<4;}
void solve3() {cout<<3<<'\n'<<12<<'\n'<<2;}
void solve4() {printf("%6.3lf",500.0/3);}
void solve5() {cout<<480/32;}
void solve6() {cout<<sqrt(6*6+9*9)<<endl;}
void solve7() 
{
	cout<<110<<'\n';
	cout<<90<<'\n';
	cout<<0<<'\n';
}
void solve8()
{
	double pi=3.141593;
	cout<<pi*5*2<<endl;
	cout<<pi*5*5<<endl;
	cout<<4.0/3.0*pi*5*5*5<<endl;
}
void solve9(){cout<<22<<endl;}
void solve10(){cout<<9;}
void solve11(){cout<<100.0/3;}
void solve12()
{
	cout<<'M'-'A'+1<<endl;
	printf("%c\n",'A'+17);
}
void solve13()
{
	double pi=3.141593;
    double sum=4.0/3*pi*4*4*4+4.0/3*pi*10*10*10;
	for(int i=1;i<=300;i++)
	{
		if(i*i*i>sum)
		{
			cout<<i-1;
			break;
		}
	}
}
void solve14(){cout<<50;}
int main(void)
{
	int t; cin>>t;
	switch(t)
	{
		case 1:solve1();break;
		case 2:solve2();break;
		case 3:solve3();break;
		case 4:solve4();break;
		case 5:solve5();break;
		case 6:solve6();break;
		case 7:solve7();break;
		case 8:solve8();break;
		case 9:solve9();break;
		case 10:solve10();break;
		case 11:solve11();break;
		case 12:solve12();break;
		case 13:solve13();break;
		case 14:solve14();break;
	}
	return 0;
}

P5709 【深基2.习6】Apples Prologue / 苹果和虫子

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int m,t,s; cin>>m>>t>>s;
	if(t==0)
	{
		cout<<0;
		return 0;
	}
	int temp=s/t;
	if(s%t) temp++;
	cout<<max(m-temp,0);
	return 0;
}

P5710 【深基3.例2】数的性质

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n; cin>>n;
	int cnt=0;
	if(n%2==0) cnt++;
	if(n>=4&&n<=12) cnt++;
	if(cnt==2) cout<<"1 ";
	else cout<<"0 ";
	if(cnt>=1) cout<<"1 ";
	else cout<<"0 ";
	if(cnt==1) cout<<"1 ";
	else cout<<"0 ";
	if(cnt==0) cout<<"1 ";
	else cout<<"0 ";
	return 0;
}

P5711 【深基3.例3】闰年判断

#include<bits/stdc++.h>
using namespace std;
int check(int x)
{
	if(x%400==0||(x%4==0&&x%100!=0)) return 1;
	else return 0;
}
int main(void)
{
	int n; cin>>n;
	cout<<check(n);
	return 0;
}

P5712 【深基3.例4】Apples

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n; cin>>n;
	if(n==1) puts("Today, I ate 1 apple.");
	else if(n==0) puts("Today, I ate 0 apple.");
	else printf("Today, I ate %d apples.",n);
	return 0;
}

P5713 【深基3.例5】洛谷团队系统

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n; cin>>n;
	int a1=n*5,a2=n*3+11;
	if(a1<=a2) puts("Local");
	else puts("Luogu");
	return 0;
}

P5714 【深基3.例7】肥胖问题

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	double m,h; cin>>m>>h;
	double ans=m/(h*h);
	if(ans<18.5) puts("Underweight");
	else if(ans>=18.5&&ans<24) puts("Normal");
	else cout<<ans<<'\n'<<"Overweight";
	return 0;
}

P5715 【深基3.例8】三位数排序

#include<bits/stdc++.h>
using namespace std;
int a[15];
int main(void)
{
	for(int i=0;i<3;i++) cin>>a[i];
	sort(a,a+3);
	for(int i=0;i<3;i++) cout<<a[i]<<" ";
	return 0;
}

P5716 【深基3.例9】月份天数

#include<bits/stdc++.h>
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int check(int x)
{
	if(x%400==0||(x%4==0&&x%100!=0)) return 1;
	return 0;
}
int main(void)
{
	int a,b; cin>>a>>b;
	if(check(a)) m[2]=29;
	cout<<m[b];
	return 0; 
}

P1085 [NOIP2004 普及组] 不高兴的津津

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int ans=0,temp=8;
	for(int i=1;i<=7;i++)
	{
		int a,b; cin>>a>>b;
		if(a+b>temp)
		{
			temp=a+b;
			ans=i;
		}
	}
	cout<<ans;
	return 0; 
}

P1909 [NOIP2016 普及组] 买铅笔

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n,ans=1e9;
	cin>>n;
	for(int i=1;i<=3;i++)
	{
		int v,p; cin>>v>>p;
		ans=min(ans,((n/v)+(n%v!=0))*p);
	}
	cout<<ans;
	return 0; 
}

P5717 【深基3.习8】三角形分类

#include<bits/stdc++.h>
using namespace std;
long long int a[3];
int main(void)
{
	for(int i=0;i<3;i++) cin>>a[i];
	sort(a,a+3);
	if((a[0]+a[1])<=a[2])
	{
		puts("Not triangle");
		return 0;
	}
	if((a[0]*a[0]+a[1]*a[1]) == (a[2]*a[2]) ) puts("Right triangle");
	if((a[0]*a[0]+a[1]*a[1]) > (a[2]*a[2]) )  puts("Acute triangle");
	if((a[0]*a[0]+a[1]*a[1]) < (a[2]*a[2]) )  puts("Obtuse triangle");
	if( (a[0]==a[1]) || (a[1]==a[2]) )        puts("Isosceles triangle");
	if( (a[0]==a[1]) && (a[1]==a[2]) )        puts("Equilateral triangle");
	return 0; 
}

P1422 小玉家的电费

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n; cin>>n;
	if(n<=150) printf("%.1lf",n*0.4463);
	else if(n>150&&n<=400) printf("%.1lf",150*0.4463+(n-150)*0.4663);
	else printf("%.1lf",150*0.4463+250*0.4663+(n-400)*0.5663); 
	return 0; 
}

P1424 小鱼的航程(改进版)

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int cnt,n;
	cin>>cnt>>n;
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		if(cnt!=6&&cnt!=7) sum+=250;
		cnt++;
		if(cnt==8) cnt=1;
	}
	cout<<sum;
	return 0;
}

P1888 三角函数

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
	return b?gcd(b,a%b):a;
}
int main(void)
{
	int a[3]; cin>>a[0]>>a[1]>>a[2];
	sort(a,a+3);
	int temp=gcd(a[0],a[2]);
	cout<<a[0]/temp<<"/"<<a[2]/temp; 
	return 0;
}

P1046 [NOIP2005 普及组] 陶陶摘苹果

#include<bits/stdc++.h>
using namespace std;
int a[15],cnt,h;
int main(void)
{
	for(int i=0;i<10;i++) cin>>a[i];
	cin>>h;
	for(int i=0;i<10;i++) if(h+30>=a[i]) cnt++;
	cout<<cnt;
	return 0; 
}

P4414 [COCI2006-2007#2] ABC

#include<bits/stdc++.h>
using namespace std;
int a[15];
int main(void)
{
	for(int i=0;i<3;i++) cin>>a[i];
	sort(a,a+3);
	string s;cin>>s;
	for(int i=0;i<s.size();i++)
	{
		cout<<a[s[i]-'A']<<" ";
	}
	return 0;
}

P1055 [NOIP2008 普及组] ISBN 号码

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	string s; cin>>s;
	int sum=0;
	for(int i=0,j=1;i<s.size()-1;i++)
		if(s[i]>='0'&&s[i]<='9') sum=sum+(s[i]-'0')*j,j++;
	sum=sum%11;
	int temp=s[s.size()-1]-'0';
	if(sum==temp || sum==10 && s[s.size()-1]=='X' ) puts("Right");
	else 
	{
		for(int i=0;i<s.size()-1;i++) cout<<s[i];
		if(sum!=10) cout<<sum;
		else cout<<'X';
	}
	return 0;
}