题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2006
思路:先用一个数去确定后面需要进行运算的整数个数,然后再用for语句进行奇数的判断和奇数的累乘,最后输出结果。
这题的关键是要写出第一行输入的表示后面有多少个整数的代码,我不知道怎么去写,就一直在干想,想了很久也想不出来,也没有去尝试写,就想着要找一个模板来输入那个数,但事实不可以,这也是我的一个大弊端了,要改过来才行。
干想很久以后写下了代码,运行出来有问题,代码是错误的。
错误代码:
#include "stdio.h"
void main()
{
int n,a[100],i,m;
while(scanf("%d%d",&a[n],&n)!=EOF)
{
for(i=0;i<100;i++)
if (a[i]%2!=0)
{
m=a[i];
a[i]=a[i+1];
a[i+1]=m;
}
printf("\n");
}
return 0;
}
错误之处:1.想着是用a[]来让我可以控制输入多少个整数,殊不知已是乱用了冒泡法
2.赋值错误:只有一个赋值,无法实现先输入一个代表后边有多少个整数的那个数
3.printf处出现基本错误,况且没有是在运算全部结束后才输出
4.没有写出累乘的步骤
解决方法1.多定义一个变量来与a[]结合实现先输入一个整数代表后边有多少整数进入运算的题目要求
2.进行二次赋值,让后面所需要进行运算的整数可以进去电脑缓冲区
3将printf移出循环之外,让其能输出最后结果
4.将if后的语句重新写过,定义要累乘的原始值为1,重写累乘步骤,让其可以实现累乘
改后正确代码:
#include "stdio.h"
void main()
{
int n,i,m,num,a[100];
while(scanf("%d",&m)!=EOF)
{
num=1;
for(i=0;i<m;i++)
scanf("%d",&a[i]);
for(i=0;i<m;i++)
{
if (a[i]%2!=0)
{
num=num*a[i];
}
}
printf("%d\n",num);
}
}
笔记:1.如果题目要求要输入一个数确定后面所输入数的数目,要进行两次赋值,并且使用一个for语句对后面的数进行下一步赋值
2.要注意for语句后的基本用法
3.要充分理解累乘或者累加的用法