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");
}
//此程序我想实现输入一个想删去的数字,把剩下的数字以另一个数组的方式输出出来,可是我发现我这个算法只限于八个元素,如果超出这个长度算法会出问题,请大佬帮帮忙,谢谢啦 展开
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");
}
//此程序我想实现输入一个想删去的数字,把剩下的数字以另一个数组的方式输出出来,可是我发现我这个算法只限于八个元素,如果超出这个长度算法会出问题,请大佬帮帮忙,谢谢啦 展开
展开全部
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", ¤tAlphabet);
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");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询