[编程题]07、求奇数的乘积

目录

前言:

1、题目展示:

2、问题分析:

 3、最终代码展示:


前言:

开新专栏了,讲解100道基础语法编程题

用c语言讲解

目的是复习c语言中的基础语法,为单片机中的c语言代码分析做铺垫

专栏链接:

c语言基础语法编程题_1zero10的博客-优快云博客

1、题目展示:

2、问题分析:

首先解决输入问题

输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

这一次依然是多组输入,只不过这次的输入有点不一样

第一个输入的数是n,表示后面接下来要输入的数的个数

所以输入应该分两次,且第一次输入的n是大框架循环输入,只要输入的数只有一个就执行下面的语句

while (scanf("%d", &n) ==1){
}

小框架内是

一个循环,执行n次,每次输入一个数,并且判断奇偶性,如果是奇数,就进行乘积运算,注意先定义一个起始量sum=1,它也是最终的乘积结果。因为要进行乘法运算,所以sum的值可能大一点,所以用long long

在for循环中,

第一次输入了一个数,假设是3,3为奇数,就执行sum=3*1的操作

下一次假设输入5,5为奇数,执行sum=5*3=15的操作

以此类推

判断偶数的方法

num%2==0

因此num%2!=0时表示是奇数

或者用位与运算符

(num&1)==0

因此(num&1)!=0时表示是奇数

int n;
while (scanf("%d", &n) ==1) {
        long long sum = 1LL;
        for (int i = 0;i < n;++i){  //循环n次确保,第一个数:n的后面有n个数
                int num;
                scanf("%d", &num);//每次循环输入一个数
                if (( num & 1 )!= 0) {   //利用位与运算符判断是否为奇数
                        sum = num*sum;//sum*=num
                }
         printf("%lld\n", sum);//输出最终乘积
        }

 3、最终代码展示:

//法1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
        int n;
        while (scanf("%d", &n) ==1) {
                long long sum = 1LL;
                for (int i = 0;i < n;++i){  //循环n次确保,第一个数:n的后面有n个数
                        int num;
                        scanf("%d", &num);//每次循环输入一个数
                        if (( num & 1 )!= 0) {   //利用位与运算符判断是否为偶数
                                sum = num*sum;//sum*=num
                        }
                }
                printf("%lld\n", sum);
        }
        return 0;
}
//法2:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
        int n;
        while (scanf("%d", &n) ==1) {
                long long sum = 1LL;
                for (int i = 0;i < n;++i){  //循环n次确保,第一个数:n的后面有n个数
                        int num;
                        scanf("%d", &num);//每次循环输入一个数
                        if ( num % 2 != 0 ) {   //利用位与运算符判断是否为偶数
                                sum = num*sum;//sum*=num
                        }
                }
                printf("%lld\n", sum);
        }
        return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值