刚开始我是这样写的
#include <stdio.h>
int main()
{
int i;
int a[i];
int res;
while(scanf("%d",&i))
{
res = 1;
for(int j = 0;j<i;j++)
{
scanf("%d",&a[j]);
if(a[j]%2 == 0) //判断为偶数
{
a[j] = 1; //偶数值赋值为1
}
res *= a[j]; //遍历数组,将各项相乘的结果赋给res
}
printf("%d\n",res);
}
return 0;
}
这里的操作是:将偶数的值变为1,然后在for循环中让res变量*a[j]
在这道题里,可以满足要求,但却是存在不妥当的地方:
这样做修改了输入数组的数值,如果后续要对该数组进行操作,那此方案一定不可行。
于是又想了想,既然我在这里就可以判断每一项值的奇偶,那为何不让该数判断为奇数的时候,直接参与res的计算呢?
于是就有了下面的代码:
#include <stdio.h>
int main()
{
int i;
int a[i];
int res;
while(scanf("%d",&i))
{
res = 1;
for(int j = 0;j<i;j++)
{
scanf("%d",&a[j]);
if(a[j]%2 != 0) //判断为奇
{
res *= a[j]; //直接参与res的计算
}
}
printf("%d\n",res);
}
return 0;
}