题目
原题链接

输入样例 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
思路
简单的条件判断,思路没什么好说的。
但有几个值得注意的点:
- 代码的排版易读性
- A2有加减运算,判断是否存在不能用初值==0这个条件,应该用计数变量
- 整型转浮点型输出
代码
#include <stdio.h>
int main()
{
int N,num;//正整数N,待分类正整数num
//初始化A1,A2,A3,A4,A5为零,以便计数或者判断是否存在
int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = 0;
//声明计数变量,cnt2用来计数和判断加减,cnt4用来计数
int cnt2 = 0, cnt4 = 0;
scanf("%d",&N);
for(int i = 0; i < N; i++)
{
scanf("%d",&num);
int mod = num % 5;//声明取余的变量
switch (mod)//用的switch(){case}的结构,注意语法和break;
{
case 0:
if(num % 2 == 0) A1 += num;
break;
case 1:
cnt2 ++;
if(cnt2 % 2 == 1) A2 += num; else A2 -= num;
break;
case 2:
A3++;
break;
case 3:
cnt4++; A4 += num;
break;
case 4:
if(A5 < num) A5 = num;
break;
}
}
//输出前先判断存在与否
if(A1 == 0) printf("N "); else printf("%d ",A1);
//特别注意A2,因为有加减,可能为零,因此不能用初始值零判断是否存在,改用计数变量cnt2判断
if(cnt2 == 0) printf("N "); else printf("%d ",A2);
if(A3 == 0) printf("N "); else printf("%d ",A3);
//注意整形转化浮点型数据
if(A4 == 0) printf("N "); else printf("%.1f ",A4 * 1.0 / cnt4);
if(A5 == 0) printf("N"); else printf("%d",A5);
return 0;
}
454

被折叠的 条评论
为什么被折叠?



