贾167 2021-10-03 23:28 采纳率: 87.5%
浏览 23
已结题

求任意分数和,怎么办急



```c
#include   <stdio.h>
#include <stdlib.h>
int main()
{
    int n = 0;
    static int sumfm = 1;
    int sumfz = 0;
    scanf_s("%d", &n);
    int* fz = 0;
    fz = (int*)malloc(n * sizeof ( int));
    int* fm = 0;
    fm = (int*)malloc(n * sizeof(int));
    for (int i = 0,a=0,b=0; i <= n; i++)
    {
        scanf_s("%d%d", &a, &b);
        *(fz + i) = a;
        if(b!=0)
        *(fm + i) = b;
    }
    for (int i = 0; i<=n; i++)
    {
        sumfm *= *(fm + i);
    }
    for (int i = 0,fzz=0; ; i++)
    {
        fzz = *(fz + i) * sumfm / (*fm + i);
        sumfz += fzz;
    }
    free(fz);
    free(fm);
    printf("%d/%d", sumfz, sumfm);
    return 0;
}
0x00007FF7719C5CD8 处(位于 Project2.exe 中)引发的异常: 0xC0000005: 读取位置 0x000001DE5ED80000 时发生访问冲突。




  • 写回答

1条回答 默认 最新

  • hmsy39 2021-10-03 23:43
    关注

    for 循环的条件 i < n 而不是 i <= n 吧?

    粗略看了一下报错是因为 *(fz + i) = a; 访问越界了,说明你这个指针的访问超过了你分配的内存

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月2日
  • 创建了问题 10月3日