從鍵盤輸入一個一維陣列,輸入要插入的數字和插入到第幾個數字后面,輸出插入后的陣列。
例如原陣列。a[5]={10,12,13,15,11},插入數字50,插入到第二個后面,輸出{10,12,50,13,15,11}
用指標怎么寫出來
uj5u.com熱心網友回復:
寫的不一定好,但基本能實作要求。供參考
#include <stdio.h>
int main(void)
{
int a[5] = {0};
int *p;
int i, n, d, tmp;
p = (int *)malloc(sizeof(int)*6);
for (i=0; i<5; i++)
{
scanf("%d", &a[i]);
}
printf ("請輸入要插入的數字和要插入到第幾個數后面:\n");
scanf("%d%d", &n, &d);
for (i=0; i<6; i++)
{
if (i < d)
p[i] = a[i];
else if (i==d)
p[i] = n;
else
p[i] = a[i-1];
}
for (i=0; i<6; i++)
{
printf("%d ", p[i]);
}
free(p);
return 0;
}
uj5u.com熱心網友回復:
如果一定要插入到原陣列中再輸出的話,要么直接把原陣列創建成a[6],a[2]=50,其余不變。然后用指標int *b =a,輸出*b++或b[0]~b[6];要么先 int* a= (int *)malloc(sizeof(int)*5),再a = (int *)realloc(sizeof(int)*6),然后把a[2]~a[4]往后移到a[3]~a[5]后,再賦值a[2]=50;
然后輸出a[0]~a[5];
不知道你說的用指標怎么寫出來是什么意思。
對于一維陣列來說,其實沒有必要用指向陣列的指標,用指向陣列首元素的指標int *p = a,然后用p[0],p[1]或*(p+1),*(p+2)來表示陣列元素,或者直接a[0],a[1];
如果一定要用指向陣列的指標來表示,那就 int (*p)[5] = &a; 然后用(*p)[0],(*p)[1]來表示。
uj5u.com熱心網友回復:
有一說一這個用陣列搞確實麻煩。不是一點點麻煩。代碼多且效率低。1.陣列a【10|12|13|15|11】
2.插入一個,說明長度增加了所以需要一個b【||||||】6個空間的陣列。為什么不直接加在a的后面呢?因為那樣做的話是越界操作。不安全的
3--------好了,我們暫時有a【5個int單位長度】的原陣列,以及一個剛剛搞到手的全新的b【6個int單位長度】的沒有資料干凈的陣列
4.執行一個插入操作,比如我們插入數字999到第n個后面
5.這個操作就意味著:前n個不變,后面5-n個全部后移,給999讓座兒。(這個話都講到這兒了,稍微想想應該有能力解決的了)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/105785.html
標籤:C語言
上一篇:C語言陣列元素回圈左移問題
下一篇:新人C語言問題
