我给出一个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;
}
答案 0 :(得分:2)
分配和读取字符串的代码是错误的。您正在分配一个包含1000个指针的数组。你打算写:
char num[1000];
scanf("%s", num);
其余代码也充满了错误。你的意思是将i初始化为0.你需要在第二个循环之前将其设置为0。并且您的第二个循环运行到1000,因此访问num。
的未初始化元素