NOI题解(1.4编程基础之逻辑表达式与条件分支)

来源:互联网 发布:三菱plc计时器编程实例 编辑:程序博客网 时间:2024/05/16 15:49



01:判断数正负

#include "iostream"#include "math.h"#include "iomanip"/**/using namespace std;int main(){    long N;    cin>>N;    if(N>0)    {        cout<<"positive"<<endl;    }else if(N==0)    {        cout<<"zero"<<endl;    }else{        cout<<"negative"<<endl;    }    return 0;}

02:输出绝对值

#include "iostream"#include "math.h"#include "iomanip"/**/using namespace std;int main(){    float N;    cin>>N;    if(N>=0)    {        cout<<fixed<<setprecision(2)<<N;    }else{        cout<<fixed<<setprecision(2)<<-N;    }    return 0;}

03:奇偶数判断

#include "iostream"#include "math.h"#include "iomanip"/**/using namespace std;int main(){    unsigned int N;    cin>>N;    if(N%2==0)    {        cout<<"even";    }else{        cout<<"odd";    }    return 0;}

04:奇偶ASCII值判断

#include "iostream"#include "math.h"#include "iomanip"/**/using namespace std;int main(){    char N;    N=getchar();//不能cin,否则没有考虑到空格    if((N+0)%2==0)    {        cout<<"NO";    }else{        cout<<"YES";    }    return 0;}

05:整数大小比较

#include "iostream"#include "math.h"#include "iomanip"/* 对于无符号数,根据占用的位数可以直接计算: unsigned short 16位 0~2的16次方-1(即65535) unsigned int 16位 0~2的16次方-1(即65535) unsigned long 32位 0~2的32次方-1(即4294967295)  对于有符号数,由于0也占用一个位置,导致负数的边界值与正数的边界值不一样: short 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767) int 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767) long 32位 - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483647) */using namespace std;int main(){    unsigned long x;    long y;    cin>>x>>y;    long long N=(long long)x-y;    if (N>0) {        cout<<">";    }else if(N==0)        cout<<"=";    else        cout<<"<";    return 0;}

06:判断是否为两位数

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    unsigned short x;    cin>>x;    if (x>=10&&x<=99) {        cout<<"1";    }    else        cout<<"0";    return 0;}

07:收集瓶盖赢大奖


#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int a,b;    cin>>a>>b;    if(a>=10||b>=20)        cout<<"1";    else        cout<<"0";    return 0;}

08:判断一个数能否同时被3和5整除

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    long num;    cin>>num;    if(num%3==0&&num%5==0)        cout<<"YES";    else        cout<<"NO";    return 0;}

09:判断能否被3,5,7整除

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    long num;    cin>>num;    int count=0;    if(num%3==0)    {        cout<<"3";        count++;    }    if(num%5==0)    {        if(count)            cout<<" ";        cout<<"5";        count++;    }    if(num%7==0)    {        if(count)            cout<<" ";        cout<<"7";        count++;    }    if(count==0)        cout<<"n";    return 0;}

10:有一门课不及格的学生

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int math,english;    cin>>math>>english;    int count=0;    if(math<60)        count++;    if(english<60)        count++;    if(count==1)        cout<<"1";    else        cout<<"0";    return 0;}

11:晶晶赴约会

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int N;    cin>>N;    switch (N) {        case 1:            cout<<"NO";            break;        case 3:            cout<<"NO";            break;        case 5:            cout<<"NO";            break;        default:            cout<<"YES";    }    return 0;}

12:骑车与走路

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    float N;    cin>>N;//    cout<<23+25+N/3.0;    if(23+27+N/3.0>N/1.2)        cout<<"Walk";    else if(23+27+N/3.0<N/1.2)        cout<<"Bike";    else        cout<<"All";    return 0;}

13:分段函数

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    float x,y;    cin>>x;    if(x>=0&&x<5)        y=-x+2.5;    else if(x>=5&&x<10)        y=2-1.5*(x-3)*(x-3);    else if(x>=10&&x<20)        y=x/2-1.5;    cout<<fixed<<setprecision(3)<<y;    return 0;}

14:计算邮资

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int weight;    char c;    int charge;    cin>>weight>>c;    if(weight<=1000)        charge=8;    else{        //ceil()向上取整,头文件math.h        charge=8+ceil(((double)weight-1000)/500)*4;    }    if(c=='y')        charge+=5;    cout<<charge;}

15:最大数输出

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int num[3];    cin>>num[0]>>num[1]>>num[2];    int max=num[0];    for(int i=0;i<3;i++)    {        if(max<num[i])            max=num[i];    }    cout<<max;}

16:三角形判断

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int a,b,c;    cin>>a>>b>>c;    if((a+b)>c&&(a+c)>b&&(b+c)>a)        cout<<"yes";    else        cout<<"no";}

17:判断闰年

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int num;    cin>>num;    if(num%4!=0||((num%100==0)&&(num%400!=0))||(num%3200==0))    {        cout<<"N";    }else{        cout<<"Y";    }}

18:点和正方形的关系

#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){    int x,y;    cin>>x>>y;    if(x>=-1&&x<=1&&y>=-1&&y<=1)        cout<<"yes";    else        cout<<"no";    return 0;}


19:简单计算器

#include "iostream"using namespace std;/* RuntimeError常见出错的原因可能有以下几种:  1、数组开得太小了,导致访问到了不该访问的内存区域  2、发生除零错误  3、大数组定义在函数内,导致程序栈区耗尽  4、指针用错了,导致访问到不该访问的内存区域  5、还有可能是程序抛出了未接收的异常 */int main(){    int x,y;    char c;    cin>>x>>y>>c;    if(c=='/'&&y==0)    {        cout<<"Divided by zero!";        return 0;//return 1NOI会runtime error,但是实际上我觉得没有问题    }    if(c!='/'&&c!='+'&&c!='-'&&c!='*')    {        cout<<"Invalid operator!";        return 0;    }    switch (c) {        case '+':            cout<<x+y;            break;        case '-':            cout<<x-y;            break;        case '*':            cout<<x*y;            break;        case '/':            cout<<x/y;            break;        default:            break;    }    return 0;}

20:求一元二次方程的根

#include "iostream"#include "math.h"#include "iomanip"using namespace std;/* sqrt函数有三种形式  double sqrt(double x); float sqrtf(float x); long double sqrtl(long double x);  三种形式的区别只是参数和返回值的精度不同,float精度最低,double较高,long double精度最高 */int main(){    float a,b,c;    cin>>a>>b>>c;    /*cout<<sizeof(float)<<endl;    cout<<sizeof(double)<<endl;    cout<<sizeof(b*b-4*a*c);    cout<<sizeof(b*b);     4     8     4     4    加减乘除都是float    即使溢出了也还是float    本身不会改变类型的*/    if(b*b==4*a*c)    {        if(b==0)            cout<<fixed<<setprecision(5)<<"x1=x2="<<b/(2*a);        else            cout<<fixed<<setprecision(5)<<"x1=x2="<<(-b)/(2*a);    }    else if(b*b>4*a*c)        cout<<fixed<<setprecision(5)<<"x1="<<(-b+sqrtf((b*b-4*a*c)))/(2*a)<<";"<<"x2="<<(-b-sqrtf(b*b-4*a*c))/(2*a);    else    {        if(b==0){            cout<<fixed<<setprecision(5)<<"x1="<<b/(2*a)<<"+"<<sqrtf(4*a*c-b*b)/(2*a)<<"i;"<<"x2="<<b/(2*a)<<"-"<<sqrtf(4*a*c-b*b)/(2*a)<<"i";        }else{            cout<<fixed<<setprecision(5)<<"x1="<<-b/(2*a)<<"+"<<sqrtf(4*a*c-b*b)/(2*a)<<"i;"<<"x2="<<-b/(2*a)<<"-"<<sqrtf(4*a*c-b*b)/(2*a)<<"i";        }    }    return 0;}


21:苹果和虫子2

#include "iostream"#include "math.h"using namespace std;int main(){    int n,x,y;    cin>>n>>x>>y;    if(y>=0)    {        if(y<=n*x)//考虑虫子待的时间很长的情况            cout<<n-ceil(y/(float)x);        else            cout<<"0";    }else//考虑时间为负数的情况    {        cout<<n;    }    return 0;}


0 0
原创粉丝点击