您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何在C語(yǔ)言項(xiàng)目中添加數(shù)組和刪除元素,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
數(shù)組不擅長(zhǎng)插入(添加)和刪除元素。數(shù)組的優(yōu)點(diǎn)在于它是連續(xù)的,所以查找數(shù)據(jù)速度很快。但這也是它的一個(gè)缺點(diǎn)。正因?yàn)樗沁B續(xù)的,所以當(dāng)插入一個(gè)元素時(shí),插入點(diǎn)后所有的元素全部都要向后移;而刪除一個(gè)元素時(shí),刪除點(diǎn)后所有的元素全部都要向前移。
# include <stdio.h> int main(void) { int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7, 215}; int b[24]; //用來(lái)存放插入數(shù)字后的新數(shù)組, 因?yàn)橛植迦肓艘粋€(gè)值, 所以長(zhǎng)度為24 int Index; //插入值的下標(biāo), Index是“下標(biāo)”的英文單詞 int num; //插入的值 int i; //循環(huán)變量 printf("請(qǐng)輸入插入值的下標(biāo):"); scanf("%d", &Index); printf("請(qǐng)輸入插入的數(shù)值:"); scanf("%d", &num); for (i=0; i<24; ++i) { if (i < Index) { b[i] = a[i]; /*循環(huán)變量i小于插入值位置Index時(shí), 每一個(gè)元素所放的位置不變*/ } else if (i == Index) { b[i] = num; //i等于Index時(shí), 將插入值賦給數(shù)組b } else { b[i] = a[i-1]; /*因?yàn)椴迦肓艘粋€(gè)新的元素, 所以插入位置后的每一個(gè)元素所存放的位置都要向后移一位*/ } } for (i=0; i<24; ++i) { printf("%d\x20", b[i]); } printf("\n"); return 0; }
輸出結(jié)果是:
請(qǐng)輸入插入值的下標(biāo):10請(qǐng)輸入插入的數(shù)值:22
1 5 66 8 55 9 1 32 5 65 22 4 8 5 15 64 156 1564 15 1 8 9 7 215
# include <stdio.h> int main(void) { int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7, 215}; int b[22]; /*用來(lái)存放刪除數(shù)字后的新數(shù)組, 因?yàn)閯h除了一個(gè)值, 所以長(zhǎng)度為22*/ int Index; //要?jiǎng)h除的值的下標(biāo) int i; //循環(huán)變量 printf("請(qǐng)輸入要?jiǎng)h除的值的下標(biāo):"); scanf("%d", &Index); for (i=0; i<23; ++i) { if (i < Index) { b[i] = a[i]; /*循環(huán)變量i小于插入值位置Index時(shí), 每一個(gè)元素所存放的位置不變*/ } else { b[i] = a[i+1]; /*刪除值后面的元素都往前移一位, 要?jiǎng)h除的值直接被覆蓋*/ } } for (i=0; i<22; ++i) { printf("%d\x20", b[i]); // \x20表示空格 } printf("\n"); return 0; }
輸出結(jié)果是:
請(qǐng)輸入要?jiǎng)h除的值的下標(biāo):5
1 5 66 8 55 1 32 5 65 4 8 5 15 64 156 1564 15 1 8 9 7 215
37, 49, 51, 61。設(shè)計(jì)程序?qū)?shù)組中的數(shù)據(jù)實(shí)現(xiàn)一次刪除及插入操作:
利用getchar()函數(shù)接收鍵盤(pán)輸入:
● 當(dāng)輸入字符'D'時(shí),接收鍵盤(pán)輸入一個(gè)數(shù)組中存在的整數(shù)n,并對(duì)數(shù)組中存在的該整數(shù)進(jìn)行刪除,要求刪除后的數(shù)組各元素仍按照從小到大的順序排列。
要求:不使用冒泡法或選擇法實(shí)現(xiàn)刪除數(shù)據(jù)后的排序操作。
● 當(dāng)輸入字符'I'時(shí),接收鍵盤(pán)輸入一個(gè)數(shù)組中不存在的整數(shù)m,并將該整數(shù)m插入到數(shù)組中,要求插入后的數(shù)組各元素仍按照從小到大的順序排列。
要求:不使用冒泡法或選擇法實(shí)現(xiàn)插入數(shù)據(jù)后的排序操作。
樣例輸入和輸出:
數(shù)組排序后的結(jié)果為:5, 9, 11, 16, 24, 34, 37, 49, 51, 61
請(qǐng)輸入需要進(jìn)行的操作(插入'I',刪除'D'):D
請(qǐng)輸入需要?jiǎng)h除的整數(shù):9
刪除后的數(shù)組為:5, 11, 16, 24, 34, 37, 49, 51, 61
請(qǐng)輸入需要進(jìn)行的操作(插入'I',刪除'D'):I
請(qǐng)輸入需要插入的整數(shù):13
插入后的數(shù)組為:5, 11, 13, 16, 24, 34, 37, 49, 51, 61
#include <stdio.h> int main() { int a[10] = { 5, 9, 11, 16, 24, 34, 37, 49, 51, 61 }; int i = 0,n=0,k=0; char get; for (i = 0; i < 10; i++) printf("%3d", a[i]); printf("\n"); printf("請(qǐng)輸入需要進(jìn)行的操作(插入‘I',刪除‘D')\n"); get = getchar(); getchar(); if (get=='D') { printf("請(qǐng)輸入要?jiǎng)h除的整數(shù):\n"); n = getchar(); getchar(); n -= 48; for (i = 0; i < 10; i++) { if (a[i]==n) { for (; i < 10; i++) { a[i] = a[i + 1]; } a[9] = 0; break; } } for (i = 0; i < 9; i++) printf("%3d", a[i]); printf("\n"); } printf("請(qǐng)輸入需要進(jìn)行的操作(插入‘I',刪除‘D')\n"); get = getchar(); getchar(); if (get='I') { printf("請(qǐng)輸入要插入的整數(shù):\n"); scanf_s("%d", &n); //注意陷阱,不能用getchar(),因?yàn)?3其實(shí)是兩個(gè)字符,回車之后,n只吸收了‘1',所以只能用scanf_s(). for (i = 0; i < 10; i++) { if (a[i] < n&&n < a[i + 1]) { k = i; for (i = 8; i > k; i--) { a[i+1] = a[i]; } a[k+1] = n; break; } } for (i = 0; i < 10; i++) printf("%3d", a[i]); } return 0; }
看完上述內(nèi)容,你們對(duì)如何在C語(yǔ)言項(xiàng)目中添加數(shù)組和刪除元素有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。