のCCFの質問201903から1小中大理由を取得していません

問題の説明

ここに画像を挿入説明
ここに画像を挿入説明
この試験問題は難しいことではありませんが、小さなパートナー、問題のうちの多くの後にフィニッシュに100ポイントを提出して取得していないことが判明しましたか?私は少し、おそらく以下の点に分けを要約したものです。

  1. 対象により必要な出力形式に厳密に従っていない
    整数整数に直接出力するための要件のタイトル、スコアのための結果であるように見えるかもしれ小数点出力に丸め要求出力に厳密に従ってなければなりません。小数変数は唯一の半ば(中央値)は、この1、その変数が最終的にはミッド整数値を取得する場合、二重またはフロート型変数は、タイトルに表示されることでなければならない、整数変数の型と、出力をキャストする必要があります直接出力半ばすることはできません。
  2. 丸みを帯びたが、小数点以下1桁の問題に
    この質問は中央値の計算で小数を発生する可能性がありますが、小数点以下の桁の場合にあった後、二つの整数の合計を取得するために2で割って、この操作はできるだけでなければなりません1つの小数点以下の場所があります。この質問は、小数点以下の問題に丸められているので、分けて考えることはできません。
  3. データストレージの問題は、
    この質問は、我々は、ちょうどこれらの数値の最大値、中央値、最小値にそうする必要はありません、に使用するためにあらゆる数整然とした列を命じた増減の文字列を入力するように求められますが、ではありません一緒にそれらをすべて保存するために、配列を使用する必要があります。唯一の要件は、入力値を便利選択します。

以下の参照コードアウト:

#include <iostream>

using namespace std;

int main() {
	int n;
	int max, min, t;
	double mid = 0;
	
	cin >> n;
	for (int i = 1; i <= n; i++) {
		if (i == 1) 
			cin >> max;
		else if (i == n) 
			cin >> min;
		//有偶数个数,取中间两个数的平均数
		else if (n % 2 == 0 && (i == n / 2 || i == n / 2 + 1)) {
			cin >> t;
			mid += t / 2.0;
		}
		//有奇数个数,那么中位数就是最中间的那个
		else if (n % 2 == 1 && i == (n + 1) / 2) 
			cin >> mid;
		else 
			cin >> t; //其他数据无用
	}
	if (max < min) {
		t = max;
		max = min;
		min = t;
	}
	//判断mid是否是整数,分别以不同形式输出
	if (mid - (int)mid == 0) 
		cout << max << ' ' << (int)mid << ' ' << min;
	else 
		cout << max << ' ' << mid << ' ' << min;
}
リリース8元の記事 ウォン称賛13 ビュー1792

おすすめ

転載: blog.csdn.net/Betterman_QS/article/details/104573371