Char到c的int转换误差



我给出了1000位数字作为输入,并使用此程序查找5个连续整数的最大产品。数组A用于将序列保存为最高产品。

#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个指针的阵列。你打算写:

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

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

最新更新