目录
前言:
开新专栏了,讲解100道基础语法编程题
用c语言讲解
目的是复习c语言中的基础语法,为单片机中的c语言代码分析做铺垫
专栏链接:
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;
}