PAT 数字分类(20)

题目链接:https://www.nowcoder.com/pat/6/problem/4078

做题思路:以次便遍历输入的数字,每个数字符合哪种情况就对应相应的运算法则。

学到的知识点:

  • 1、三目运算符的运算法则(判断的语句)?true:false 
  • 2、局部变量在第51行报错,当我将他们分开试的时候发现max错了,原因max在这里是局部变量,当循环结束时就把max抛弃了再想去获取时就不能够获取到,只需要将它定义在前面就可以。
  • 3、数交错相加只需要弄一个标志,将标志每一次变号就好
  • 4、%.1f 数字一代表小数点后保留几位有效数字 ( %.f 四舍五入)

PAT 数字分类(20)_第1张图片

本题存在的bug:

  • 样例13 代表一共有多少个数,并不是其中的一个数!这点初读题目非常纠结。
  • sum2交错后有可能为0,但是这样也能够通过,最好设置另一个变量判断出现的次数,没有出现就一定w;

别人的代码:在牛客上通过,但是PTA上面有点小问题(看着挺舒服的,想学习一下)

#include 
#include 
using namespace std;
 
int main()
{
    int c1=0,c2=0,c3=0,c4Num=0,c5=0;
    float c4=0;
    int n,x,i=1;
    cin>>n;
    while(n--)
    {
        cin>>x;
        switch(x%5)
        {
            case 0:if(x%2==0) c1+=x; break;
            case 1:c2+=(i*x);i=-i;break;
            case 2:c3++;break;
            case 3:c4+=x;c4Num++;break;
            case 4:if(x>c5)c5=x;break;
        }
    }
    (c1>0)?(cout<0)?(cout<0)?(cout<0)?(cout<

PAT 数字分类(20)_第2张图片

PAT 数字分类(20)_第3张图片

#include
int main()
{	
	int T;
	scanf("%d",&T);
	int a[1010];
	for(int i=0;i=max)
			{
				max=a[i];
			}
			A5++;
		}
	}	//printf("%d %d %d %.1f %d",sum1,sum2,sum3,average,max);
	(A1>0) ? printf("%d ",sum1):printf("N ");
	(A2>0) ? printf("%d ",sum2):printf("N ");
	(A3>0) ? printf("%d ",sum3):printf("N ");
	(A4>0) ? printf("%.1f ",average):printf("N ");
	(A5>0) ? printf("%d",max):printf("N");
	return 0;
}

 

你可能感兴趣的:(PAT,PAT刷题)