#include
int main()
{
int i,n,ans=1;
while(scanf("%d",&n)!=EOF){
getchar();
int a[n+1];
for(i=0;iscanf("%d",a[i]);
if(a[i]%2==1)ans=ans*a[i];
}
printf("%d\n",ans);
}
return 0;
}
针对你提出的问题,我做了详细的思考。数组和变量一样。如果你在头部定义一个数组或则一个变量,那么他就是一个全局变量,如果你在程序内部定义一个数组和一个变量,那么它就是局部变量。局部变量和全局变量是有区别的,局部变量只能在局部起作用,全局变量是全局起作用。
这么改,不需要用数组,供参考:
#include<stdio.h>
int main()
{
int a, n, ans = 1;
while (scanf("%d", &n) != EOF) {
ans = 1;
while(n--) {
scanf("%d", &a);
if (a % 2 == 1) ans *= a;
}
printf("%d\n", ans);
}
return 0;
}
题主的代码修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, n, ans = 1;
while (scanf("%d", &n) != EOF) {
getchar();
int* a = (int*)malloc(sizeof(int) * n); //int a[n+1];
memset(a, 0, sizeof(int) * n); //数组置零
for (i = 0, ans = 1; i < n; i++) { //修改
scanf("%d", &a[i]);
if (a[i] % 2 == 1)ans = ans * a[i];
}
printf("%d\n", ans);
free(a); //释放数组空间
}
return 0;
}
这篇文章:HDU - 2006 求奇数的乘积 也许能够解决你的问题,你可以看下