永发信息网

c语言运行时提示“内存不能为read”,求帮助调试

答案:3  悬赏:40  手机版
解决时间 2021-11-08 23:49
  • 提问者网友:暗中人
  • 2021-11-08 14:39
c语言运行时提示“内存不能为read”,求帮助调试
最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-11-08 15:35
#include "stdafx.h"

int main(int argc, char* argv[])
{
int a[10]={5,7,9,5,2,5,7,9,8,2},n=10;
int k=0;
for(int i=0; i {
for(int j=i+1;j if(a[i]==a[j])
a[i-k]=a[i]; //这里改成a[j-k]=a[i]; 试试!
else
k++;
}
n=n-k;
for(i=0; i printf("%4d", a[i]);
printf("\n");
return 0;
}
全部回答
  • 1楼网友:三千妖杀
  • 2021-11-08 16:33
错误很明显,内层for循环里i的值会小于k的值,a[i-k]就报运行时错了追问怎么修改?追答要说明你要做什么追问就是想删除数组里重复的数,比如原数组是{2,2,3,4,4,5},输出就是{2,3,4,5}。
  • 2楼网友:怙棘
  • 2021-11-08 16:26
是不是找重复数?
void repetition(int number)
{
int array[10] = {0};
int i = 0,flag = 0;
while (number != 0) {
array[i++] = number % 10;
number /= 10;
for (int j = 0; j < i-1; j++) {
if (array[i -1] == array[j]) {
flag = i-1;
break;
}
}
if (flag != 0) {
break;
}
}
printf("有重复数:%d", array[flag]);
}追问怎么把我的代码修改?追答你的a[i-k]是个负数,而且我感觉你算法也不对
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯