求奇数的乘积2006

这里首先有三点:第一、根据计算机组成原理对于原码和补码我们知道奇数的二进制最后一位一定是1,偶数的二进制最后一位一定是0,所以用来检验一个数字是奇数还是偶数我们通常用与运算,比如if(a & 1)也就是最后一位都是1是才是真(也就是说明这个数字是奇数),比如if(a & 0)也就是最后一位都是0是才是真(也就是说明这个数字是偶数)

第二、关于语句printf("%d",sum);放不放在第一个while循环里面是由讲究的,因为EOF代表文件末尾,如果在OJ系统之中,文件是容易达到系统末尾的,如果是在本地计算机中,计算机不知道你后面究竟还要不要在输入一些文件,所以默认会直接执行下一次文件读入,也就是他很难出去第一个while循环,所以最佳的建议还是把这个语句放在第一个循环之内,无论是OJ还是本地电脑都可以非常丝滑的输出最后的结果

还有一点就是,n代表的是输入的数字个数,不要搞错这一点,否则会比较难理解程序在讲什么

#include<stdio.h>
int main()
{
    int n,a,sum;
    while(scanf("%d",&n) != EOF)
    {
        sum =1;
        while(n--)
        {
            scanf("%d",&a);
            if(a & 1)
            {
               sum *=a;
            }
        }
printf("%d",sum);
    }


    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值