#include
int main()
{
int arr[]={1,3,10,5,4,} ;
int delect=0;
int i=0,j=0,k=0,t;
int n;//n为数组长度
n=sizeof(arr)/sizeof(int);
//printf("%d\n",n);//测试n
printf("删除前数组为:");
for(k=0;k<=n-1;k++)
{
printf("%4d",arr[k]);
}
printf("\n");
printf("请输入要删除第几个数: \n");
scanf("%d",&t);
for(j=t-1;j<=n-2;j++)
arr[j]=arr[j+1];
printf("删除后数组为:");
for(k=0;k<=n-2;k++)
{
printf("%4d",arr[k]);
}
}
扩展资料:
数组使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组
设数组大小为M,删掉第N个元素。
int i;
for(i=N;i
a[M-1]=0;
下面是伪代码,思路是,打到第N个元素,用后面的元素将前面的覆盖。
for(int i=0;i
if(i==N-1)//找到第N个元素
{
for(int j=N-1;j
}
}
例6-2 将10个整数存入数组,删除数组中的某个元素。例如,数组中有1,2,3,4,5,6,7,8,9,10共10个元素,删除第5个元素后,数组中剩下9个元素1,2,3,4,6,7,8,9,10。
首先定义一个长度为10的int型数组,用来存放10个整数。用循环输入数组的每个元素,以及要删除元素的序号(假设序号为n)。
使用循环,将数组中序号n后的所有元素向前移动一位,然后删除最后一个元素。这里要注意数组的下标是从0开始的,序号为n的数组元素,对应数组的下标应该是n-1。
读者可以思考:如果本例是向数组插入一个元素,循环应该如何来写?
main()
{
int nArray[10], i,num;
/*输入10个整数*/
printf("\nPlease input 10 integers: ");
for(i=0;i<10;i++)
scanf("%d",& nArray [i]);
/*输入要删除的元素序号*/
printf("\nPlease input sequence number of the element to delete: ");
scanf("%d",&num);
/*从nArray [num](第num+1个元素)开始,依次向前移动一位*/
for(i=num;i<10;i++)
nArray [i-1]= nArray [i];
/*删除最后一个元素*/
nArray [10]=0;
/*输出处理后的数组,最后一位不需要输出*/
printf("\nProcessed array: ");
for(i=0;i<9;i++)
printf("%d ", nArray [i]);
}
程序运行后,输入10个整数:
Please input 10 integers: 1 2 3 4 5 6 7 8 9 10
Please input sequence number of the element to delete: 5
Processed array: 1 2 3 4 6 7 8 9 10
哎.有哪位老大收小弟呀