卖菜( 201809-1/CCF)———附带思路和完整代码

0 效果

只开3个数组
在这里插入图片描述
开1010个数组:
在这里插入图片描述

难点:认真读题,特殊情况处理

1 题目

在这里插入图片描述

2 思路

  • 当n = 2时,为特殊情况,第一个和第二个输出数的值都两个数的平均值;
  • 当n > 2时,对第一个数和最后两个个数特殊处理
    • 第一个数的输出等于,当输入玩第二个数后,第一个和第二个数区平均为输出值
    • 最后一个数输入时,倒数第二个数为最后输入的三个数的平均值,最后一个数为最后输入的两个数的平均值
    • 其余情况,输出到目前为止最后三个输入数的平均值作为上一个数的输出。
  • 注意:为了节省空间,因为计算只需用到3个数组,因此就只开三个数组大小,不满三个输入时,依次存入A[0],A[1],A[2],满三个数后,A的数组依次前移一个,最后一个存储最新输入的值。

3 代码

#include<cstdio>
int main(){
	int n, num;
	int A[3];
	scanf("%d", &n);
	for(int i = 0; i< n; i++){
		scanf("%d", &num);
		if(i < 3){
			A[i] = num;	
		}else{
			A[0] = A[1];
			A[1] = A[2];
			A[2] = num;
		}
		
		if(n == 2 && i == 1){
			int res = (A[0] + A[1])/2;
			printf("%d %d", res, res);
		}else if(i == 1){
			printf("%d", (A[0] + A[1])/2);
		}else if(i == n - 1){
			printf(" %d %d",  (A[0] + A[1] + A[2])/3, (A[1] + A[2])/2);
		}else if(i > 1){
			printf(" %d", (A[0] + A[1] + A[2])/3);
		}
		
	}
	return 0;
}
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页