PTA B1012 数字分类

1 .前两天做题发现if和If,if和else,代码执行效率不一样。又百度了一下else if 。也能减少运行时间。但是注意逻辑。

if和else if  。

if (条件一) {执行方法一}
else if(条件二){执行方法二} //这个只有在条件一不满足时才会判断条件二, 若条件一满足,则这句else if直接跳过了


if 和if 。
if (条件一) {执行方法一}
if(条件二){执行方法二} //这个不管条件一满不满足,条件二都会再判断一次,也就是说这句if 一直会执行

2.开始时有答案过不去,题意没理解好。标注在下面代码中。

3.开始时用字符串存数据,再循环比较。这样又浪费内存了。直接用temp比较可以。

#include<cstdio>
using namespace std;
int main(){
  int n,temp;
  int count[5]={0};
  int ans[5]={0};
  scanf("%d",&n);
  for(int i=0;i<n;i++){
    scanf("%d",&temp);
    if(temp%5==0){          //不能写成temp%5==0&&temp%2==0,下面的else if会受影响
      if(temp%2==0){
        ans[0]+=temp; 
        count[0]++;          //count计算的是又是偶数又是5倍数
      }
    }
    else if(temp%5==1){
      count[1]++;
      if(count[1]%2==1){
        ans[1]+=temp;
      }
      else{
        ans[1]-=temp;
      }
      
    }
    else if(temp%5==2){
      count[2]++;
    }
    else if(temp%5==3){
      count[3]++;
      ans[3]+=temp;
    }
    else{
      count[4]++;
      if(temp>ans[4]){
        ans[4]=temp;
      }
    }
  }
  if(count[0]==0)printf("N ");
  else printf("%d ",ans[0]);
  if(count[1]==0)printf("N ");
  else printf("%d ",ans[1]);
  if(count[2]==0)printf("N ");
  else printf("%d ",count[2]);
  if(count[3]==0)printf("N ");
  else printf("%.1f ",(double)ans[3]/count[3]);
  if(count[4]==0)printf("N");
  else printf("%d",ans[4]);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值