資訊學奧賽一本通(C++版)第一部分 C++語言 第三章 程式的控制結構
第三章 程式的控制結構
第一節 if選擇結構
T1039 : 判斷數正負
【題目描述】
給定一個整數,判斷其正負。如果,輸出positive
;如果,輸出zero
;如果,輸出negative
。
【輸入】
一個整數。
【輸出】
如果,輸出positive
;
如果,輸出zero
;
如果,輸出negative
【輸入樣例】
1
【輸出樣例】
positive
【答案&程式碼】
#include<stdio.h>
#include<math.h>
int main(void){
int n;
scanf("%d",&n);
if(n>0)
printf("positive");
else if(n==0)
printf("zero");
else
printf("negative");
return 0;
}
T1040 : 輸出絕對值
【題目描述】
輸入一個浮點數,輸出這個浮點數的絕對值,保留到小數點後兩位。
【輸入】
輸入一個浮點數,其絕對值不超過。
【輸出】
輸出這個浮點數的絕對值,保留到小數點後兩位。
【輸入樣例】
-3.14
【輸出樣例】
3.14
【答案&程式碼】
#include<stdio.h>
int main(void){
double n;
scanf("%lf",&n);
if(n>=0)
printf("%.2f",n);
else
printf("%.2f",-1*n);
return 0;
}
T1041 : 奇偶數判斷
【題目描述】
給定一個整數,判斷該數是奇數還是偶數。如果是奇數,輸出odd
;如果是偶數,輸出even
。
【輸入】
輸入僅一行,一個大於零的正整數。
【輸出】
輸出僅一行,如果是奇數,輸出odd
;如果是偶數,輸出even
。
【輸入樣例】
5
【輸出樣例】
odd
【答案&程式碼】
#include<stdio.h>
int main(void){
int n;
scanf("%d",&n);
if(n%2==0)
printf("even");
else
printf("odd");
return 0;
}
T1042 : 奇偶ASCII值判斷
【題目描述】
任意輸入一個字元,判斷其ASCII
是否是奇數,若是,輸出YES
,否則,輸出NO
。例如,字元A
的ASCII
值是65
,則輸出YES
,若輸入字元B
(ASCII
值是66
),則輸出NO
。
【輸入】
輸入一個字元。
【輸出】
如果其ASCII
值為奇數,則輸出YES
,否則,輸出NO
。
【輸入樣例】
A
【輸出樣例】
YES
【答案&程式碼】
#include<stdio.h>
int main(void){
char ch;
scanf("%c",&ch);
if(ch%2==0)
printf("NO");
else
printf("YES");
return 0;
}
T1043 : 整數大小比較
【題目描述】
輸入兩個整數,比較它們的大小。若,輸出>
;若,輸出=
;若,輸出<
。
【輸入】
一行,包含兩個整數和,中間用單個空格隔開。。
【輸出】
一個字元。若,輸出>
;若,輸出=
;若,輸出<
。
【輸入樣例】
1000 100
【輸出樣例】
>
【答案&程式碼】
#include<stdio.h>
int main(void){
int x,y;
scanf("%d%d",&x,&y);
if(x>y)
printf(">");
else if(x==y)
printf("=");
else
printf("<");
return 0;
}
T1044 : 判斷是否為兩位數
【題目描述】
判斷一個正整數是否是兩位數(即大於等於且小於等於)。若該正整數是兩位數,輸出,否則輸出。
【輸入】
一個正整數,不超過。
【輸出】
一行。若該正整數是兩位數,輸出,否則輸出。
【輸入樣例】
54
【輸出樣例】
1
【答案&程式碼】
#include<stdio.h>
int main(void){
int x,y;
scanf("%d%d",&x,&y);
if(x>y)
printf(">");
else if(x==y)
printf("=");
else
printf("<");
return 0;
}
T1045 : 收集瓶蓋贏大獎
【題目描述】
某飲料公司最近推出了一個“收集瓶蓋贏大獎”的活動:如果你擁有個印有“幸運”、或個印有“鼓勵”的瓶蓋,就可以兌換一個神祕大獎。現分別給出你擁有的印有“幸運”和“鼓勵”的瓶蓋數,判斷是否可以去兌換大獎。若可以兌換大獎,輸出,否則輸出。
【輸入】
一行,包含兩個整數,分別是印有“幸運”和“鼓勵”的瓶蓋數,用一個空格隔開。
【輸出】
一行。若可以兌換大獎,輸出,否則輸出。
【輸入樣例】
11 19
【輸出樣例】
1
【答案&程式碼】
#include<stdio.h>
int main(void){
int xy,gl;
scanf("%d%d",&xy,&gl);
if(xy>=10||gl>=20)
printf("1");
else
printf("0");
return 0;
}
T1046 : 判斷一個數能否同時被3和5整除
【題目描述】
判斷一個數能否同時被和整除,如果能同時被和整除輸出YES
,否則輸出NO
。
【輸入】
輸入一行,包含一個整數。
【輸出】
輸出一行,如果能同時被和整除輸出YES
,否則輸出NO
。
【輸入樣例】
15
【輸出樣例】
YES
【答案&程式碼】
#include<stdio.h>
int main(void){
int num;
scanf("%d",&num);
if(num%3==0&&num%5==0)
printf("YES");
else
printf("NO");
return 0;
}
T1047 : 判斷能否被3,5,7整除
【題目描述】
給定一個整數,判斷它能否被整除,並輸出以下資訊:
-
能同時被整除(直接輸出,每個數中間一個空格);
-
只能被其中兩個數整除(輸出兩個數,小的在前,大的在後。例如:或者或者,中間用空格分隔);
-
只能被其中一個數整除(輸出這個除數);
-
不能被任何數整除,輸出小寫字元
n
,不包括單引號。
【輸入】
輸入一行,包括一個整數。
【輸出】
輸出一行,按照描述要求給出整數被整除的情況。
【輸入樣例】
105
【輸出樣例】
3 5 7
【答案&程式碼】
#include<stdio.h>
int main(void){
int num;
scanf("%d",&num);
if(num%105==0)
printf("3 5 7");
else if(num%3==0||num%5==0||num%7==0){
if(num%3==0)
printf("3 ");
if(num%5==0)
printf("5 ");
if(num%7==0)
printf("7 ");
}
else
printf("n");
return 0;
}
T1048 : 有一門課不及格的學生
【題目描述】
給出一名學生的語文和數學成績,判斷他是否恰好有一門課不及格(成績小於分)。若該生恰好有一門課不及格,輸出;否則輸出。
【輸入】
一行,包含兩個在到之間的整數,分別是該生的語文成績和數學成績。
【輸出】
若該生恰好有一門課不及格,輸出;否則輸出。
【輸入樣例】
50 80
【輸出樣例】
1
【答案&程式碼】
#include<stdio.h>
int main(void){
int ch,ma;
scanf("%d%d",&ch,&ma);
if(ch<60&&ma>=60)
printf("1");
else if(ch>=60&&ma<60)
printf("1");
else
printf("0");
return 0;
}
第二節 switch語句
T1049 : 晶晶赴約會
【題目描述】
晶晶的朋友貝貝約晶晶下週一起去看展覽,但晶晶每週的有課必須上課,請幫晶晶判斷她能否接受貝貝的邀請,如果能輸出YES
;如果不能則輸出NO
。注意YES
和NO
都是大寫字母!
【輸入】
輸入有一行,貝貝邀請晶晶去看展覽的日期,用數字到表示從星期一到星期日。
【輸出】
輸出有一行,如果晶晶可以接受貝貝的邀請,輸出YES
,否則,輸出NO
。注意YES
和NO
都是大寫字母!
【輸入樣例】
2
【輸出樣例】
YES
【答案&程式碼】
#include<stdio.h>
int main(void){
int d;
scanf("%d",&d);
switch(d){
case 1:
case 3:
case 5:
printf("NO");break;
default:
printf("YES");break;
}
return 0;
}
T1050 : 騎車與走路
【題目描述】
在清華校園裡,沒有自行車,上課辦事會很不方便。但實際上。並非去辦任何事情都是騎車快,因為騎車總要找車、開鎖、停車、鎖車等,這要耽誤一些時間。假設找到自行車,開鎖並車上自行車的時間為秒;停車鎖車的時間為秒;步行每秒行走米,騎車每秒行走米。請判斷走不同的距離去辦事,是騎車快還是走路快。如果騎車快,輸出一行Bike
;如果走路快,輸出一行Walk
;如果一樣快,輸出一行All
。
【輸入】
輸入一行,包含一個整數,表示一次辦事要行走的距離,單位為米。
【輸出】
輸出一行,如果騎車快,輸出一行Bike
;如果走路快,輸出一行Walk
;如果一樣快,輸出一行All
。
【輸入樣例】
120
【輸出樣例】
Bike
【答案&程式碼】
#include<stdio.h>
int main(void){
int len;
scanf("%d",&len);
if(50+(double)len/3.0>(double)len/1.2)
printf("Walk");
else if(50+(double)len/3.0==(double)len/1.2)
printf("All");
else
printf("Bike");
return 0;
}
T1051 : 分段函式
【題目描述】
編寫程式,計算下列分段函式的值。結果保留到小數點後三位。
y=−x+2.5; (0 ≤x< 5)
y=2−1.5(x−3)(x−3) (5 ≤x< 10)
y=x2−1.5 (10 ≤x< 20)
【輸入】
一個浮點數。<