C语言数组问题,请教!@@@@@@

2024-10-30 18:21:08
推荐回答(2个)
回答1:

比较粗糙的写了一个,向有序数组中插入和删除元素的程序。
在vc6.0下调试通过。
#include
void InsertArr(int a[],int len) //向数组中插入一个元素
{
int i,k,flag,temp;
printf("please input a number:\n");
scanf("%d",&k);
for(i=len-1;i>=0;i--)
{
if(k>a[i])
flag=i; //寻找并记录插入位置
}
temp=a[len-1]; //记录数组最后一个元素
for(i=len-1;i>flag;i--)
a[i]=a[i-1]; //每个元素向后移1位
a[flag]=k; //将新元素插入数组中
a[len]=temp; //此时数组长度加1
for(i=0;i<=len;i++)
printf("%4d",a[i]); //遍历数组元素并输出
printf("\n");
}

void DelArr(int a[],int len) //删除数组中的某一个元素
{
int i,k,flag=-1;
printf("please input a number:\n");
scanf("%d",&k);
for(i=0;i if(k==a[i])
flag=i; //记录删除的元素的位置
if(flag==-1) //说明没k于a中的元素都不相等
printf("the number is not in the array!!");
else
{
for(i=flag;i a[i]=a[i+1]; //每个元素向前移1位
a[len-1]=0; //将最后个元素置0,因为整个数组少了一个元素,他的值保存在a[len-2]中
for(i=0;i printf("%4d",a[i]); //遍历数组元素并输出
printf("\n");
}
}
void main()
{
int a[10]={20,10,7,5,2}; //该数组是个有序数组
InsertArr(a,5);
DelArr(a,6);
}

回答2:

1
知道数组的下标就可以赋值
int a[10];
a[0] = 0;

2
赋值后可以改变,也就是重新赋值,但删除?程序运行完后内存就会被释放,可以重新分配给其他请求内存的程序,但这块内存中可能还会有内容。所以在程序设计的时候千万不要引用未初始化的变量。