C語言問題 已有定義int a 101,2,3,4,5,6,7,8,9,10要求通過指標完成從一維陣列中刪除下標為K的元素

2021-04-18 17:29:13 字數 3265 閱讀 6760

1樓:匿名使用者

兩個問題:

1.輸入k之後 ,要重新將 p 指向 a 即10行前+一句 p = a;

2.最後一個for越界,i=9 時 p+i+1 就成了 p+10

2樓:匿名使用者

「baifor(p=a;p-a<10;p++)」這個迴圈du已經讓p指向zhi了陣列中最後一個元素,所以「for(i=k;i<10;i++)」在這個迴圈之前應該讓daop重新指回陣列的內第一個元素,故改為for(i=k,p=a;i<10;i++)

另外 刪除一個元素之後 陣列中只有9個元素,所容以應當把a[9]賦值為'\0'或者在最後一個迴圈中控制條件改為p-a<9

已有定義int a[10]={1,2,3,4,5,6,7,8,9,10} 要求通過指標完成從一維陣列中刪除下標為k的元素

3樓:聽不清啊

#include

void main()

;int i,k,n=10,*p=a;

printf("input k=");

scanf("%d",&k);

for(i=k-1;i*(p+i)=*(p+i+1);

n--;

printf("after delete:\n");

for(i=0;iprintf("%d ",a[i]);

printf("\n");

}dao

c語言問題:已有定義int a[10]={1,2,3,4,5,6,7,8,9,10} 要求通過指標完成從一維陣列中刪除下標為k的元素

4樓:郯安陽郝北

a中存放

的是陣列a[10]中元素的地址,而對於二維陣列intx[3][4],*p;

p=*x,

x[0],

x[1],

x[2]存放的是陣列x[3][4]種元素的地址,x存放的的是x[0]的地址,也就是地址的地址。所以在二維陣列定義的時候可以寫成p=x[0]卻不能寫成p=x而是在前面多一個*號,*x為元素地址,而x位地址的地址

5樓:以辰良況樹

兩個問題:

1.輸入k之後

,要重新將p指向

a即10行前+一句p=

a;2.最後一個for越界,i=9

時p+i+1

就成了p+10

???c語言問題int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;不能表示a陣列元素的是?a.*pb.a[10]c

6樓:匿名使用者

定義陣列並賦值時c語言規定下標是這樣的,a[n]中的n個元素應該是a[0]....a[n-1],

由此可見答版案b中a[10]已經超過規定權的範圍,故不能表示陣列a中的元素。答案a中因為指標p指向陣列首地址,所以*p相當於a[0]這個元素

7樓:聽不清啊

b.a[10]

這超出了陣列的下標範圍。

8樓:匿名使用者

b不可以、越界了

a可以,*p = a[0]

c看不到

c語言問題 若有說明int a[][4]={1,2,3,4,5,6,7,8,9};,則陣列a第一維

9樓:格子裡兮

若有說明int a[][4]=;則陣列a第一維是3。

定義陣列並賦值時c語言規定下標是這樣的,a[n]中的n個元素應該是a[0]....a[n-1]。。

因此int a[4]的寫法就是表示,第一維大小沒限制,但是第二維陣列大小就是4,也就是int a[4]=,,},明顯是3。

分析:二維陣列的一維大小,即指二維陣列的行數,在本題中,按行對二維陣列賦值,因此內層有幾個大括號,陣列就有幾行。

10樓:杜爺1號

答案是b,3.

int a[4]的寫法就是表示,第一維大小沒限制,但是第二維陣列大小就是4,也就是int a[4]=,,},明顯是3.

11樓:小兆

你定義的就是一個二維陣列,第二維的個數是4,為了把所有的資料能分成四份有沒有遺漏,那第一維就是3了。

12樓:寂寞的菸頭哥

首先看陣列後面為4表示有四列二維陣列是

1234

5678

9000

這裡就可以很明顯的看出是三行,所以就是a[3][4],第一個叫做第一維,第二個叫做第二維

若有以下定義和語句: int a[10]={1,2,3,4,5,6,7,8,9,10},p=a; 則不能表示a陣列元素的表示式是( ) a) *p b)

13樓:墨汁諾

不能表示a陣列元素的表示式是( b) a[10] )----因為陣列a的最大下標只能是9,即a[9],

a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],一共10個元素。

a、*p  ---表示取p指標指向的單元的值,即表示取陣列a的首個元素a[0]的值。

b、a[10] ---因為陣列a一共10個元素,從0開始計數,

即a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],正好10個,沒有a[10],所以a[10]就是不能表達這個陣列元素。

c、*a ----陣列名a中儲存的是陣列的首地址,*是取單元中的值,*a就是取陣列首地址中單元中a[0]的值。

d、a[p-a] --- p指向的是陣列a,因為p中與a同資料相同都是陣列a的首地址,而p-a就等於0,因此 a[p-a]就相當於a[0]。

14樓:匿名使用者

選b)a[10] a[0]、a[1]、a[2]……a[9]分別是陣列a[10]的十個元素,故a[10]不能表示a陣列的元素。

15樓:匿名使用者

選 b a[10]

陣列是從a[0] 到 a[9] 的。。。。。。

(c語言) 有陣列的定義 int a[10]={1,4,5,3,6,8,9,4,7,2};現要求從鍵盤輸入x,並從陣列中刪除它。

16樓:万俟秋英謇詩

上面回答的光覆蓋是不行的,需要將最後覆蓋的那個值給清零(如果零不是你的輸入值)才成!還有就是如果是輸入的值和a[9]相等,你陣列就會訪問越界的!

c語言題目已有定義inty10py則能使的

a選項是錯的,baix是整型 du,p是指標型別,賦值之後x的值 zhi是daoy的記憶體地址,不會是10。專b選項是錯的屬,同樣,執行賦值之後x的值是p的記憶體地址,不會是10。c選項是錯的,因為這個賦值過程和a選項的賦值過程是等價的,所以錯誤的原因也是一樣的。d選項是對的,沒有為什麼。x是整數,...

大一C語言題目若有定義語句 int a

核心在於p的型別。定義等效於 int p 3 這裡p是一個陣列,包含三個元素,每個元素型別為int 所以a p為陣列名,不可以賦值。b p 0 為int 而a為二維陣列名,等效於int 型別不匹配。c a 1 2 為a的一個元素,型別是int,所以 a 1 2 是int 和p 0 型別相同,所以這個...

C語言 若有定義 int a 7 float x 2 5,y 4 7則表示式x a 3 int x y

按照加減乘除運演算法則及順序,還有結果轉換型別為float,結果為2.5 x a 3 int x y 2 4 x 1 7 2 4 x 1 4 x 若有定義 int a 7 float x 2.5,y 4.7 則表示式x a 3 int x y 2 4的值是 請詳細解答,非常感謝 答案為2.5.這個關...