这个C程序错在哪里了?

来源:百度知道 编辑:UC知道 时间:2024/06/10 17:16:24
#include<stdio.h>
void main()
{int n,i,j,k;
while(scanf("%d",&n)!=EOF)
{
k=1;
for(i=0;i<n;i++)
{
scanf("%d",&j);
if(j%2!=0)
k=k*j;
}
printf("%d\n",j);
}
}

目的是给你n个整数,求他们中所有奇数的乘积。
先输入n
例如输入3 1 2 3
则意思是求1 2 3这三个数钟所有奇数的乘积
但是我这个程序显示的总是最后输入的一个数
比如输入4 2 3 4 5
照理说应该显示15
可是我运行后显示出来的是5
为什么啊。。错在哪里了?

你的程序错在输出语句有问题,printf("%d\n",j);.程序只会输出变量j的最终赋值,并不会输出奇数的乘积,改为变量k就可以正常输出结果了.修改后为:
#include<stdio.h>
void main()
{int n,i,j,k;
printf("请输入一个整数:");
while(scanf("%d",&n)!=EOF)
{
k=1;
for(i=0;i<n;i++)
{
scanf("%d",&j);
if(j%2!=0)
k=k*j;
}
printf("目的是给你%d个整数,所有奇数的乘积是:%d\n",n,k);

}
}

最后一句printf("%d\n",j);
改为printf("%d\n",k);输出k而不是j

另外你用scanf("%d",&n)!=EOF作为判断条件可能会永远退不出while循环啊

printf("%d\n",j);
应该打印K吧
printf("d%\n",k);