OpenJudge1.4編程基礎之邏輯表達式與條件分支


01:判斷數正負

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

給定一個整數N,判斷其正負。

輸入

一個整數N(-109 <= N <= 109)

輸出

如果N > 0, 輸出positive;
如果N = 0, 輸出zero;
如果N < 0, 輸出negative

樣例輸入

1

樣例輸出

positive

參考程序

#include <iostream>
using namespace std;
int main()
{
	int a;
	cin>>a;
	if(a>0)
		cout<<"positive";
	else if(a==0)
		cout<<"zero";
	else
		cout<<"negative";
	return 0;
}

02:輸出絕對值

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

輸入一個浮點數,輸出這個浮點數的絕對值。

輸入

輸入一個浮點數,其絕對值不超過10000。

輸出

輸出這個浮點數的絕對值,保留到小數點後兩位。

樣例輸入

-3.14

樣例輸出

3.14

參考程序

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	float a;
	cin>>a;
	if(a<0)
		a=-a;
	printf("%.2f",a);
	return 0;
}

03:奇偶數判斷

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

給定一個整數,判斷該數是奇數還是偶數。

輸入

輸入僅一行,一個大於零的正整數n。

輸出

輸出僅一行,如果n是奇數,輸出odd;如果n是偶數,輸出even。

樣例輸入

5

樣例輸出

odd

參考程序

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if(n%2==0)
		cout<<"even";
	else
		cout<<"odd";
	return 0;	
}

04:奇偶ASCII值判斷

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

任意輸入一個字符,判斷其ASCII是否是奇數,若是,輸出YES,否則,輸出NO
例如,字符A的ASCII值是65,則輸出YES,若輸入字符B(ASCII值是66),則輸出NO

輸入

輸入一個字符

輸出

如果其ASCII值爲奇數,則輸出YES,否則,輸出NO

樣例輸入

A

樣例輸出

YES

參考程序

#include<stdio.h>
using namespace std;
int main()
{
	char n;
	scanf("%c",&n);
	if(n%2==1)
		printf("YES");
	else if(n%2==0)
		printf("NO");
	return 0;	
}

05:整數大小比較

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

輸入兩個整數,比較它們的大小。

輸入

一行,包含兩個整數x和y,中間用單個空格隔開。
0 <= x < 2^32, -2^31 <= y < 2^31。

輸出

一個字符。
若x > y,輸出 > ;
若x = y,輸出 = ;
若x < y,輸出 < ;

樣例輸入

1000 100

樣例輸出

>

參考程序

#include <iostream>
using namespace std;
int main()
{
	int x,y;
	cin>>x>>y;
	if(x>y)
		cout<<">";
	else if(x<y)
		cout<<"<";
	else
		cout<<"=";
	return 0;	
}

06:判斷是否爲兩位數

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

判斷一個正整數是否是兩位數(即大於等於10且小於等於99)。

輸入

一個正整數,不超過1000。

輸出

一行。若該正整數是兩位數,輸出1,否則輸出0。

樣例輸入

54

樣例輸出

1

參考程序

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int a;
    cin>>a;
    if( a/100==0 && a/10!=0 ){
        cout<<"1";
    }else{
        cout<<"0";
    }
    return 0;
}

07:收集瓶蓋贏大獎

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

某飲料公司最近推出了一個“收集瓶蓋贏大獎”的活動:如果你擁有10個印有“幸運”、或20個印有“鼓勵”的瓶蓋,就可以兌換一個神祕大獎。

現分別給出你擁有的印有“幸運”和“鼓勵”的瓶蓋數,判斷是否可以去兌換大獎。

輸入

一行,包含兩個整數,分別是印有“幸運”和“鼓勵”的瓶蓋數,用一個空格隔開。

輸出

一行。若可以兌換大獎,輸出1,否則輸出0。

樣例輸入

11 19

樣例輸出

1

參考程序

#include <iostream>
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整除

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

判斷一個數n 能否同時被3和5整除

輸入

輸入一行,包含一個整數n。( -1,000,000 < n < 1,000,000)

輸出

輸出一行,如果能同時被3和5整除輸出YES,否則輸出NO

樣例輸入

15

樣例輸出

YES

參考程序

#include <iostream>
using namespace std;
int main()
{
	int a;
	cin>>a;
	if(a%3==0&&a%5==0)        //判斷能否同時被3和5整除
		cout<<"YES";
	else
		cout<<"NO";
	return 0;
}

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

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

給定一個整數,判斷它能否被3,5,7整除,並輸出以下信息:
1、能同時被3,5,7整除(直接輸出3 5 7,每個數中間一個空格);
2、只能被其中兩個數整除(輸出兩個數,小的在前,大的在後。例如:3 5或者 3 7或者5 7,中間用空格分隔);
3、只能被其中一個數整除(輸出這個除數);
4、不能被任何數整除,輸出小寫字符‘n’,不包括單引號。

輸入

輸入一行,包括一個整數。

輸出

輸出一行,按照描述要求給出整數被3,5,7整除的情況。

樣例輸入

105

樣例輸出

3 5 7

參考程序

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if(n%3==0)
		cout<<"3 ";
	if(n%5==0)
		cout<<"5 ";
	if(n%7==0)
		cout<<"7";
	if(n%3!=0&&n%5!=0&&n%7!=0)
		cout<<"n";
	return 0;
}
 
//本題分別用3,5,7整除較爲簡單,不必再一次次討論情況

10:有一門課不及格的學生

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

給出一名學生的語文和數學成績,判斷他是否恰好有一門課不及格(成績小於60分)。

輸入

一行,包含兩個在0到100之間的整數,分別是該生的語文成績和數學成績。

輸出

若該生恰好有一門課不及格,輸出1;否則輸出0。

樣例輸入

50 80

樣例輸出

1

參考程序

#include <iostream>
#include <cstido>
using namespace std;

int main(){
    int a,b;
    cin>>a>>b;
    if((a<60&&b>60)||(a>60&&b<60))
        cout<<"1";
    else
        cout<<"0";
    return 0;
}

11:晶晶赴約會

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

晶晶的朋友貝貝約晶晶下週一起去看展覽,但晶晶每週的1、3、5有課必須上課,請幫晶晶判斷她能否接受貝貝的邀請,如果能輸出YES;如果不能則輸出NO。

輸入

輸入有一行,貝貝邀請晶晶去看展覽的日期,用數字1到7表示從星期一到星期日。

輸出

輸出有一行,如果晶晶可以接受貝貝的邀請,輸出YES,否則,輸出NO。注意YES和NO都是大寫字母!

樣例輸入

2

樣例輸出

YES

參考程序

#include <iostream>
using namespace std;
int main()
{
	int a;
	cin>>a;
	if(a==1||a==3||a==5)
		cout<<"NO";
	else
		cout<<"YES"; 
    return 0;
}

12:騎車與走路

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

在北大校園裏,沒有自行車,上課辦事會很不方便.但實際上,並非去辦任何事情都是騎車快,因爲騎車總要找車、開鎖、停車、鎖車等,這要耽誤一些時間.假設找到自行車,開鎖並車上自行車的時間爲27秒;停車鎖車的時間爲23秒;步行每秒行走1.2米,騎車每秒行走3.0米。請判斷走不同的距離去辦事,是騎車快還是走路快。

輸入

輸入一行,包含一個整數,表示一次辦事要行走的距離,單位爲米。

輸出

輸出一行,如果騎車快,輸出一行"Bike";如果走路快,輸出一行"Walk";如果一樣快,輸出一行"All"。

樣例輸入

120

樣例輸出

Bike

參考程序

#include <iostream>
using namespace std;
int main()
{
	double a,t1,t2;
	cin>>a;
	t1=a/1.2;
	t2=a/3.0+27+23;
	if(t1>t2)
		cout<<"Bike";
	else if(t1<t2)
		cout<<"Walk";
	else
		cout<<"All"; 
    return 0;
}

13:分段函數

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

編寫程序,計算下列分段函數y=f(x)的值。

y=-x+2.5; 0 <= x < 5

y=2-1.5(x-3)(x-3); 5 <= x < 10

y=x/2-1.5; 10 <= x < 20

輸入

一個浮點數N,0 <= N < 20

輸出

輸出N對應的分段函數值:f(N)。結果保留到小數點後三位。

樣例輸入

1.0

樣例輸出

1.500

參考程序

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
	double 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;
	printf("%.3lf",y);
    return 0;
}

14:計算郵資

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

根據郵件的重量和用戶是否選擇加急計算郵費。計算規則:重量在1000克以內(包括1000克), 基本費8元。超過1000克的部分,每500克加收超重費4元,不足500克部分按500克計算;如果用戶選擇加急,多收5元。

輸入

輸入一行,包含整數和一個字符,以一個空格分開,分別表示重量(單位爲克)和是否加急。如果字符是y,說明選擇加急;如果字符是n,說明不加急。

輸出

輸出一行,包含一個整數,表示郵費。

樣例輸入

1200 y

樣例輸出

17

參考程序

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int a,b;
    char c;
    cin>>a>>c;
    if(a<=1000)
        b=8;
    else if(a%500 == 0)
        b = 8 + (a-1000)/500*4;
    else
        b = 8 + ((a-1000)/500+1)*4;
    if(c=='y')
        b+=5;
    cout<<b;
    return 0;
}

15:最大數輸出

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

輸入三個整數,輸出最大的數。

輸入

輸入爲一行,包含三個整數,數與數之間以一個空格分開。

輸出

輸出一行,包含一個整數,即最大的整數。

樣例輸入

10 20 56

樣例輸出

56

參考程序

#include <iostream>
using namespace std;

int main(){
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a>(b>c?b:c)?a:(b>c?b:c));	//  ?:  條件運算符
    return 0;
}


16:三角形判斷

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

給定三個正整數,分別表示三條線段的長度,判斷這三條線段能否構成一個三角形。

輸入

輸入共一行,包含三個正整數,分別表示三條線段的長度,數與數之間以一個空格分開。

輸出

如果能構成三角形,則輸出“yes” ,否則輸出“no”。

樣例輸入

3 4 5

樣例輸出

yes

參考程序

#include <iostream>
using namespace std;

int main(){
    int a,b,c;
    cin>>a>>b>>c;
    if((a+b)>c && (b+c)>a && (c+a)>b)   //兩邊之和大於第三邊
        cout<<"yes";
    else
        cout<<"no";
    return 0;
}


17:判斷閏年

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

判斷某年是否是閏年。

輸入

輸入只有一行,包含一個整數a(0 < a < 3000)

輸出

一行,如果公元a年是閏年輸出Y,否則輸出N

樣例輸入

2006

樣例輸出

N

提示

公曆紀年法中,能被4整除的大多是閏年,但能被100整除而不能被400整除的年份不是閏年, 能被3200整除的也不是閏年,如1900年是平年,2000年是閏年,3200年不是閏年。

參考程序

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if((n%4==0&&n%100!=0)||n%400==0)
		cout<<"Y";
	else
		cout<<"N";
	return 0;
}
 
 
//注:本題坑點爲四年一閏,但整百年不一定閏,只有整四百年一閏

18:點和正方形的關係

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

有一個正方形,四個角的座標(x,y)分別是(1,-1),(1,1),(-1,-1),(-1,1),x是橫軸,y是縱軸。寫一個程序,判斷一個給定的點是否在這個正方形內(包括正方形邊界)。

輸入

輸入一行,包括兩個整數x、y,以一個空格分開,表示座標(x,y)。

輸出

輸出一行,如果點在正方形內,則輸出yes,否則輸出no。

樣例輸入

1 1

樣例輸出

yes

參考程序

#include <iostream>
using namespace std;
int main()
{
	int a,b;
	cin>>a>>b;
	if((a>=-1&&a<=1)&&(b>=-1&&b<=1))
		cout<<"yes";
	else
		cout<<"no";
	return 0;	
}

19:簡單計算器

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

一個最簡單的計算器,支持+, -, *, / 四種運算。僅需考慮輸入輸出爲整數的情況,數據和運算結果不會超過int表示的範圍。

輸入

輸入只有一行,共有三個參數,其中第1、2個參數爲整數,第3個參數爲操作符(+,-,*,/)。

輸出

輸出只有一行,一個整數,爲運算結果。然而:

  1. 如果出現除數爲0的情況,則輸出:Divided by zero!
  2. 如果出現無效的操作符(即不爲 +, -, *, / 之一),則輸出:Invalid operator!

樣例輸入

1 2 +

樣例輸出

3

提示

可以考慮使用if和switch結構。

參考程序

#include <iostream>
using namespace std;
int main()
{
	int a,b;
	char c;
	cin>>a>>b>>c;
	if(c=='+')
		cout<<a+b;
	else if(c=='-')
		cout<<a-b;
	else if(c=='*')
		cout<<a*b;
	else if(c=='/')
	{	
		if(b!=0)
			cout<<a/b;
		else
			cout<<"Divided by zero!";
	}
	else
		cout<<"Invalid operator!";
	return 0;	
}

20:求一元二次方程的根

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

利用公式x1 = (-b + sqrt(bb-4ac))/(2a), x2 = (-b - sqrt(bb-4ac))/(2a)求一元二次方程ax2+ bx + c =0的根,其中a不等於0。

輸入

輸入一行,包含三個浮點數a, b, c(它們之間以一個空格分開),分別表示方程ax2 + bx + c =0的係數。

輸出

輸出一行,表示方程的解。
若b2 = 4 * a * c,則兩個實根相等,則輸出形式爲:x1=x2=…。
若b2 > 4 * a * c,則兩個實根不等,則輸出形式爲:x1=…;x2 = …,其中x1>x2。
若b2 < 4 * a * c,則有兩個虛根,則輸出:x1=實部+虛部i; x2=實部-虛部i,即x1的虛部係數大於等於x2的虛部係數,實部爲0時不可省略。實部 = -b / (2a), 虛部 = sqrt(4ac-bb) / (2*a)

所有實數部分要求精確到小數點後5位,數字、符號之間沒有空格。

樣例輸入1

1.0 2.0 8.0

樣例輸入2

1 0 1

樣例輸出1

x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

樣例輸出2

x1=0.00000+1.00000i;x2=0.00000-1.00000i

參考程序

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main(){
    double a,b,c,d,x;
    cin>>a>>b>>c;
    d = b*b-4*a*c;
    x=(-b/(2*a));
    if(x==-0.00000)     //消除浮點數相除帶來的誤差
        x=0;
    if( d==0 )
        printf("x1=x2=%.5f",x);
    if( d>0 ){
        printf("x1=%.5f;x2=%.5f",(-b+sqrt(d))/(2*a), (-b-sqrt(d))/(2*a));
    }
    if( d<0 ){

        printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",x,(sqrt(4*a*c-b*b)/(2*a)),x,(sqrt(4*a*c-b*b)/(2*a)));
    }
    return 0;
}

21:蘋果和蟲子2

原題鏈接

總時間限制: 1000ms 內存限制: 65536kB

描述

你買了一箱n個蘋果,很不幸的是買完時箱子裏混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那麼經過y小時你還有多少個完整的蘋果?

輸入

輸入僅一行,包括n,x和y(均爲整數)。

輸出

輸出也僅一行,剩下的蘋果個數

樣例輸入

10 4 9

樣例輸出

7

參考程序

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
    int n,x,y;
    cin>>n>>x>>y;
    if(y%x){
        cout<<(n-y/x-1);
    }else{
        cout<<(n-y/x);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章