PATトレーニングノート:グレードB Zhenti ---番号分類(20)

1.タイトルの説明

タイトル説明

给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:

A1 = 能被5整除的数字中所有偶数的和;
A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
A3 = 被5除后余2的数字的个数;
A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
A5 = 被5除后余4的数字中最大数字。

説明を入力してください:

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

出力の説明:

对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出“N”。

入力例:

13 1 2 3 4 5 6 7 8 9 10 20 16 18

出力例:

30 11 2 9.7 9

2.私のACコード

#include<stdio.h>
#include<math.h>

int main(){
	int n, a1, a2, a3, a5, a, i, j, c, d, e;
	float k, a4;
	scanf("%d", &n);
	a1 = a2 = a3 = a4 = a5 = d = 0;
	for( i = 1, j = 0, k = 0.0; i <= n; i++){
		scanf("%d", &a);
		switch (a % 5){
			case 0 : if(a % 2 == 0) a1 += a; break;
			case 1 : a2 += pow(-1, j) * a; j++; break;
			case 2 : a3++; break;
			case 3 : a4 += a; k++; break;
			case 4 : if( a > a5) a5 = a; d++;
		}
//		if(a%5 == 0 && a % 2 == 0)
//			a1 += a;
//		else if( a % 5 == 1){
//			a2 += pow(-1, j) * a;
//			j++;
//		}
//		else if( a % 5 == 2)
//			a3++;
//		else if( a % 5 == 3){
//			a4 += a;
//			k++;
//		}
//		else if( a % 5 == 4){
//			if( a > a5){
//				a5 = a;
//			}
//		}	
	} 
	
	if(a1) printf("%d ", a1);
	else printf("N ");
	if(j != 0) printf("%d ", a2);
	else printf("N ");
//	直接判断j即可,只要j大于零,那么就输出a2的值。 
	if(a3 != 0) printf("%d ", a3);
	else printf("N ");
	if(k) printf("%.1f ", a4/k);
	else printf("N ");
	if(d) printf("%d", a5);
	else printf("N");
}

3、経験関連

1.問題分析:

  • テストポイント1:データの入力と出力。

  • テストポイント2:基本ループ、判断文法。

第二に、経験

  • このトピックで考慮すべきいくつかの特別なケースがあります。インターリーブされた合計の結果が0の場合、2番目のタイプの数値が存在しないことを意味しないため、ここに変数を追加して、2番目のタイプの数値の計算かどうかを判断しました。が実行され、入力された場合2番目のタイプの数値の計算では、この値を最後に直接出力できます。
  • インターリーブ系列を計算するときに、パワーa ^ bを使用しましたが、出力に問題があることがわかり、これがバイナリのXOR演算であることがわかりました。必要な電力演算を実行したい場合は、数学関数pow(、);を使用する必要があります。

  • さらに、少し肥大化したifブランチステートメントを使い始めました。switchステートメントに変更すると、より簡潔で快適に見えます。

  • 私自身のコードの可読性はまだ悪いことがわかりました、a、i、j、c、d、e。データのこの部分は一目で明確にできません。一部の学生が書いたように、count1、count2。 ....これは計算数に対応します。数のような補助変数はコードの可読性を高めます。

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/qq_41914687/article/details/103942118