1012 数字分类 (20 分)(c语言)
生活随笔
收集整理的這篇文章主要介紹了
1012 数字分类 (20 分)(c语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一系列正整數,請按要求對數字進行分類,并輸出以下 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。
輸入樣例 1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18結尾無空行
輸出樣例 1:
30 11 2 9.7 9結尾無空行
輸入樣例 2:
8 1 2 4 5 6 7 9 16結尾無空行
輸出樣例 2:
N 11 2 N 9結尾無空行
#include <stdio.h> #include<math.h> #pragma warning(disable:4996) int main() {int A1=0, A2=0, A3=0, A4=0, A5=-1;int N,n,i=0,k=0,flag=0;scanf("%d", &N);while ( scanf("%d", &n) == 1) {if (n%10==0&&n>=10) {A1 += n;}if (n % 5 == 1) {A2 += pow(-1, i++) * n;flag = 1;}if (n % 5 == 2) {A3++;}if (n % 5 == 3) {A4 += n;k++;}if (n % 5 == 4 && A5<n) {A5 = n;}}if (A1 != 0) printf("%d", A1); else printf("N");if (flag != 0) printf(" %d", A2); else printf(" N");if (A3 != 0) printf(" %d", A3); else printf(" N");if (A4 != 0) printf(" %.1f", (double)A4/k); else printf(" N");if (A5 != -1) printf(" %d", A5); else printf(" N");return 0; }這題踩過的坑:
1.注意A2不能單純和0進行比較,因為它是加法和減法混算,所以可以經過計算后等于0,因此需要另設一個標志來記錄是否存在符合要求的數,而不是用A2本身,
2.輸出平均值時,需要強制類型,因為printf只是將后面參數按照需要的格式進行輸出,而我們除時兩個數據類型都是整型,它只會按照整型的規則進行計算,而不會按照浮點型進行計算
還有一種是用數組的
#include<stdio.h> #include<math.h> #pragma warning(disable:4996) int main() {/*1.題目要求的變量N,數組存儲輸入的值;2.循環找符合要求3.輸出*/int N, book[1000];int A1 = 0, A2 = 0, A3 = 0, A5 = 0, i = 0, n = 0,flag=0;double A4 = 0;scanf("%d", &N);for (int cnt = 0; cnt < N; cnt++) {scanf("%d", &book[cnt]);}for (int cnt = 0; cnt < N; cnt++) {if (book[cnt] % 5 == 0 && book[cnt] % 2 == 0) {A1 += book[cnt];}if (book[cnt] % 5 == 1) {A2 += book[cnt] * pow(-1, i);i++;flag++;}if (book[cnt] % 5 == 2) {A3++;}if (book[cnt] % 5 == 3) {A4 += book[cnt];//輸出A時要記得除nn++;}if (book[cnt] % 5 == 4 && A5 < book[cnt]) {A5 = book[cnt];}}if (A1 != 0) {printf("%d", A1);}else {printf("N");}if (flag != 0) {printf(" %d", A2);}else {printf(" N");}if (A3 != 0) {printf(" %d", A3);}else {printf(" N");}if (A4 != 0) {printf(" %.1f", A4 / n);}else {printf(" N");}if (A5 != 0) {printf(" %d", A5);}else {printf(" N");}return 0; }總結
以上是生活随笔為你收集整理的1012 数字分类 (20 分)(c语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1011 A+B 和 C (15 分)(
- 下一篇: 1013 数素数 (20 分)(c语言)