人们在人生中需要做出许多选择,小到考虑晚上吃什么,大到决定高考志愿填报的学校。只有一次次选择后才能带来无限可能,我们要根据自己掌握的情况,做出最佳的选择。
程序的执行也不是一成不变的,往往会要求程序能够在不同的场合下有不同的动作。这时就需要在代码中使用条件语句来做出不同的选择。比如说,登录洛谷网时,网站后台会将你提交的用户名和密码在后台数据库中看看是否匹配,如果能够匹配就登陆成功,否则就登陆失败。这一章就来介绍如何让程序做出选择。
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;
}