C語言使用指標對陣列指定位置進行插入元素

沒有程式設計我不能活發表於2020-12-23

插入元素

輸入n個整數(1<=n<100),並在指定位置p處插入新元素,輸出最後的結果.

輸入格式:

每個測試包含2行輸入.第1行n,p,q,其中p,q分別表示需要插入的位置和需要插入的元素值(1<=p<=n+1, 且q符合int型資料範圍). 第2行表示n個整數. n,p,q均為0時,表示測試結束.

輸出格式:

輸出最後的結果

輸入樣例:

在這裡給出一組輸入。例如:

5 1 4
1 2 3 4 5
6 3 9
2 4 6 8 0 2
0 0 0

輸出樣例:

在這裡給出相應的輸出。例如:

4 1 2 3 4 5
2 4 9 6 8 0 2
 #include<stdio.h>
 int main(){
 	int a[100],n=1,p=1,q=1,*t=a,*s=a,*r=a;
 	while(1){
		scanf("%d%d%d",&n,&p,&q);
	 	if((n<0||n>100)||(n==0&&p==0&&q==0)){
	 		return 0;
		 }
		t=a;//令t指向陣列a首地址
	 	s=t+n-1;//使s指向輸入的最後一個元素
	 	
	 	for(;t<=s;t++)scanf("%d",t);//迴圈往陣列中新增元素
	 	
	 	t=a;
	 	r=t+p-1;//令r指向第p個元素
	 	//將第p個元素以及之後面的每個元素進行往後賦值 
	 	for(;s>=r;s--){
	 		*(s+1)=*s;
		}

		//對r指向的位置的陣列元素賦值 
	 	*r=q;
	 	
        //完成對指定位置的元素新增

	 	s=t+n;//使s指向新增完元素的陣列a的最後一個元素
	 	for(;t<=s;t++)printf("%d ",*t);
	 	
	 	printf("\n");
	 	
	}
 
 	
 	return 0;
 } 

這個是這個星期C語言上機課做的例題,因為剛學指標不久,便試著放棄使用陣列的取地址“[ ]”對陣列元素進行操作。

以上程式碼是可以實現以上例題功能的。

如有更好的做法,歡迎討論交流。

相關文章