【发布时间】:2014-01-21 18:38:01
【问题描述】:
我给出一个 1000 位数字作为输入,并使用这个程序找到 5 个连续整数的最大乘积。数组 a 用于保存具有最高乘积的序列。我得到了一个意想不到的答案(我怀疑问题出在从 char 到 int 的转换中)
#include <stdio.h>
int main(void)
{
int a[5],c=0,b,i=1;
char *num[1000];
scanf("%s",&num);
while(i<5)
{
a[i]=num[i]-'0';
i++;
}
while(i<1000)
{
b=(char)num[i]-'0';
if(a[c]<b)
{
a[c]=b;
c=(c+1)%5;
}i++;
}
printf("%d",a[0]*a[1]*a[2]*a[3]*a[4]);
return 0;
}
【问题讨论】:
-
除了固定类型外,如果要存储1000个字符,则需要为末尾的终止null分配额外的内存,因此
num至少为1001。