c中的char到int转换错误

时间:2014-01-21 18:38:01

标签: c arithmetic-expressions

我给出一个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;
}

1 个答案:

答案 0 :(得分:2)

分配和读取字符串的代码是错误的。您正在分配一个包含1000个指针的数组。你打算写:

char num[1000];
scanf("%s", num);

其余代码也充满了错误。你的意思是将i初始化为0.你需要在第二个循环之前将其设置为0。并且您的第二个循环运行到1000,因此访问num。

的未初始化元素