c语言问题,求大佬帮忙解决一个bug

#include<stdio.h>voidmain(){inta[8]={1,23,23,4,23,0};intb[8];inti,temp=0,j,time=0,cur... #include<stdio.h>

void main()
{
int a[8]={1,23,23,4,23,0};
int b[8];
int i,temp=0,j,time=0,currentAlphabet;

printf("当前数组元素为:");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++) //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数
{
printf(" %d",a[i]);
}
printf("\n");
printf("请输入你想删除的数字\n");
scanf("%d",¤tAlphabet);

for(i=0;i<8;i++)
{
if(a[i]!=currentAlphabet)
{
temp=a[i];
time+=1; //这一次执行time已经是1了,所以需要减1再进行赋值
b[time-1]=temp;
}

}

printf("执行了%d次\n",time);

for(i=0;i<time;i++)
{
printf("%d\t",b[i]);
}
printf("\n");
}

//此程序我想实现输入一个想删去的数字,把剩下的数字以另一个数组的方式输出出来,可是我发现我这个算法只限于八个元素,如果超出这个长度算法会出问题,请大佬帮帮忙,谢谢啦
展开
 我来答
检怜南0F8
2017-09-14 · TA获得超过305个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:159万
展开全部
bug的原因是因为你数组的长度只有8个 ,超过8个的话,就会溢出 ,所以你这个程序就会出现问题
处理方案:使用动态分配的方式去修改,动态申请数组空间,让用户去确定这个删除数组的大小
以及让用户输入数组的初始化值,这样的话就不会出现这类的问题了
更多追问追答
追问
具体的代码能,能参考下么,我有点想不出来了
追答
#include<stdio.h>
#include <stdlib.h>
int  main()
{
printf("请输入你想输入多少数字:\n");
int size;
scanf("%d", &size);
int *a = (int *)malloc(sizeof(int)); //动态申请
int *b = (int *)malloc(sizeof(int)); //动态申请
printf("请输入%d个数字\n", size);
for (int i = 0; i < size; i++)
{
scanf("%d", &a[i]);
}
int i, temp = 0, j, time = 0, currentAlphabet;

printf("当前数组元素为:");
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数
{
printf(" %d", a[i]);
}
printf("\n");
printf("请输入你想删除的数字\n");
scanf("%d", &currentAlphabet);

for (i = 0; i < size; i++)
{
if (a[i] != currentAlphabet)
{
temp = a[i];
time += 1; //这一次执行time已经是1了,所以需要减1再进行赋值
b[time - 1] = temp;
}

}

printf("执行了%d次\n", time);

for (i = 0; i < time; i++)
{
printf("%d\t", b[i]);
}
printf("\n");
system("pause");
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式