生成EXC_BAD_ACCESS(代码= 1,地址= 0x30000008)问题

tyky79it  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(239)

我试图创建一个代码来删除数组中的相同元素。问题是EXC_BAD_ACCESS(代码= 1,地址= 0x30000008)问题。当我试图运行我的代码时,它在这里。“

  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. int main()
  6. {
  7. srand (time(NULL));
  8. int i, j, b, c;
  9. double A[11];
  10. double B[10];
  11. char choice;
  12. for (i = 0; i < 11; i++)
  13. {
  14. A[i] = rand () %100;
  15. }
  16. for (j = 0; j < 10; j++)
  17. {
  18. B[j] = rand () % 100;
  19. }
  20. printf("Array A[N]: \n");
  21. for (i = 0; i < 10; i++)
  22. {
  23. printf("%.2lf ", A[i]);
  24. }
  25. printf("\n Array B[M]: \n");
  26. for (j = 0; j < 10; j++)
  27. {
  28. printf("%.2lf ", B[j]);
  29. }
  30. for (i = 0; i < 11; i++)
  31. {
  32. for (j = 0; j < 10; i++)
  33. {
  34. ** if (A[i]==B[j])
  35. Exception has occurred.
  36. EXC_BAD_ACCESS (code=1, address=0x16fe00000)**
  37. {
  38. for (c = j; c < 10; c++)
  39. {
  40. B[c] = B[c+1];
  41. }
  42. j--;
  43. }
  44. }
  45. }
  46. printf("\n New array B[M]: \n");
  47. for ( j = 0; j < 9; j++)
  48. {
  49. printf ("%.2lf", B[c]);
  50. }
  51. return 0;
  52. }

希望能帮上忙谢谢
我试图定义N11和M10,这样它就能工作了,但不幸的是,没有。

6jygbczu

6jygbczu1#

  1. for (c = j; c < 10; c++){
  2. B[c] = B[c+1];
  3. }
  4. j--;

在这部分中,如果c = 9(最后一次迭代),则有B[9] = B[10]; B的大小为10,因此索引的最大值必须为9。
我的解决方案如下:

  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. int main()
  6. {
  7. srand (time(NULL));
  8. int i, j, b, c;
  9. double A[11];
  10. double B[10];
  11. char choice;
  12. for (i = 0; i < 11; i++)
  13. {
  14. A[i] = rand () %100;
  15. }
  16. for (j = 0; j < 10; j++)
  17. {
  18. B[j] = rand () % 100;
  19. }
  20. printf("Array A[N]: \n");
  21. for (i = 0; i < 10; i++)
  22. {
  23. printf("%.2lf ", A[i]);
  24. }
  25. printf("\n Array B[M]: \n");
  26. for (j = 0; j < 10; j++)
  27. {
  28. printf("%.2lf ", B[j]);
  29. }
  30. int max_j = 10;
  31. for (i = 0; i < 11; i++)
  32. {
  33. for (j = 0; j < max_j; j++)
  34. {
  35. if (A[i]==B[j])
  36. {
  37. for (c = j; c < max_j-1; c++) {
  38. B[c] = B[c+1];
  39. }
  40. B[max_j-1] = 0;
  41. max_j--;
  42. }
  43. }
  44. }
  45. printf("\n New array B[M]: \n");
  46. for ( j = 0; j < 9; j++)
  47. {
  48. printf ("%.2lf ", B[j]);
  49. }
  50. return 0;
  51. }
展开查看全部

相关问题