根据三天的白天最高气温,记下气温的走势。 第一行给出记录数 n,接下来 n 行每行按顺序给出第一天、第二天、第三天的气温 a, b, c,用一个空格分开。 对每条记录输出一行:a < b < c 输出 "上升",a > b > c 输出 "下降",否则输出 "混合"。 有两天或以上气温相同,既不算一直上升也不算一直下降,所以是 "混合"(例如 3 3 5)。 先升后降或先降后升也是 "混合"。
输入
1 ≤ n ≤ 1,000,−50 ≤ a, b, c ≤ 50(整数)
输出
n 行,每行是 up、down、mixed 之一
样例 1 · stdin
4
3 8 12
12 8 3
5 9 2
4 4 6
stdout
上升
下降
混合
混合
main.py
错误列表00F8 ↓ · ⇧F8 ↑
输入(stdin)
运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。
$ 就绪
请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。
其他语言怎么写?查看各语言题解 · 8 种语言题解
能不能像数学那样写 a < b < c,因语言而异。 只有 Python 会把它读成 a < b and b < c。 在 JS 中,它不报错地按 (a < b) < c 计算,C、C++ 用 gcc 也会照样编译并这样计算(加 -Wall 才会给出警告;较新的 clang 默认报错拦下)。 前一个比较的 true、false 变成 1、0 再和 c 比较,所以像 5 9 2 这样先升后降的记录,只要 c 大于 1 就成了 up。 Java、C# 会报 boolean 不能和 int 比较的编译错误,TS 也会报 boolean 不能和 number 比较的类型错误拦下。 Craykon 在运行前就会提示要拆成 'a < b && b < c' 两个来写。 所以除了 Python,都要拆成两个:a < b && b < c。 第二个陷阱是边界。 用 <= 代替 <,3 3 5 就成了 up。 第三个陷阱是没把读到的字符串转成数字。 Python input().split() 或 JS split(" ") 分出来的值是字符串,比较会按字符顺序进行,"9" < "10" 为假。 先用 Python int、JS/TS Number、Craykon 转数字 转换再比较。
Pythonmain.py · 10 行
n = int(input())for _ in range(n): a, b, c = map(int, input().split()) # Python은 a < b < c를 a < b and b < c로 읽는다 if a < b < c: print("上升") elif a > b > c: print("下降") else: print("混合")
JavaScriptmain.js · 11 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const n = Number(lines[0]);const out = [];for (let i = 1; i <= n; i++) { const [a, b, c] = lines[i].trim().split(/\s+/).map(Number); // a < b < c는 (a < b) < c가 되어 true/false를 c와 비교한다. 둘로 나눠 쓴다 if (a < b && b < c) out.push("上升"); else if (a > b && b > c) out.push("下降"); else out.push("混合");}console.log(out.join("\n"));
TypeScriptmain.ts · 12 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const n: number = Number(lines[0]);const out: string[] = [];for (let i = 1; i <= n; i++) { const [a, b, c]: number[] = lines[i].trim().split(/\s+/).map(Number); // TS는 a < b < c를 타입 오류로 막는다(boolean과 number를 비교). 둘로 나눠 쓴다 if (a < b && b < c) out.push("上升"); else if (a > b && b > c) out.push("下降"); else out.push("混合");}console.log(out.join("\n"));
JavaMain.java · 22 行
import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine().trim()); StringBuilder out = new StringBuilder(); for (int i = 0; i < n; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int c = Integer.parseInt(st.nextToken()); // a < b < c는 컴파일 오류다(boolean과 int는 비교할 수 없다) if (a < b && b < c) out.append("上升\n"); else if (a > b && b > c) out.append("下降\n"); else out.append("混合\n"); } System.out.print(out); }}
C#Main.cs · 21 行
using System;using System.Text;class Program{ static void Main() { int n = int.Parse(Console.ReadLine().Trim()); var sb = new StringBuilder(); for (int i = 0; i < n; i++) { string[] p = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int a = int.Parse(p[0]), b = int.Parse(p[1]), c = int.Parse(p[2]); // a < b < c는 컴파일 오류다. 둘로 나눠 &&로 잇는다 if (a < b && b < c) sb.Append("上升\n"); else if (a > b && b > c) sb.Append("下降\n"); else sb.Append("混合\n"); } Console.Write(sb); }}
C++main.cpp · 15 行
#include <iostream>int main() { std::ios::sync_with_stdio(false); int n; std::cin >> n; for (int i = 0; i < n; i++) { int a, b, c; std::cin >> a >> b >> c; // a < b < c도 컴파일되지만 (a < b)의 true/false를 c와 비교한다 if (a < b && b < c) std::cout << "上升\n"; else if (a > b && b > c) std::cout << "下降\n"; else std::cout << "混合\n"; }}
Cmain.c · 15 行
#include <stdio.h>int main(void) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { int a, b, c; scanf("%d %d %d", &a, &b, &c); /* a < b < c도 컴파일되지만 (a < b)의 1이나 0을 c와 비교한다 */ if (a < b && b < c) puts("上升"); else if (a > b && b > c) puts("下降"); else puts("混合"); } return 0;}
Craykonmain.cray · 21 行
n = 控制台.读行().转数字();循环 (i = 0; i < n; i++){ p = 控制台.读行().去空白().分割(" "); a = p[0].转数字(); b = p[1].转数字(); c = p[2].转数字(); // a < b < c는 (a < b)의 참거짓을 c와 비교한다. 둘로 나눠 &&로 잇는다 如果 (a < b && b < c) { 控制台.输出("上升"); } 否则 如果 (a > b && b > c) { 控制台.输出("下降"); } 否则 { 控制台.输出("混合"); }}