請問在C語言裡如何將陣列元素的個數設為輸入的值

2021-07-08 21:18:49 字數 5533 閱讀 7333

1樓:聽時間流逝

我當初學c的時候有過和你一樣的想法,但是陣列的記憶體只能靜態分配,所以你必須指明陣列的大小。

比如:int a[10];

char ch = "i love china!"。

一個顯式指定大小,一個是隱式指定。

2樓:逐夢兮樂

這個陣列不能是變數,只能是常量,沒法設定的。

3樓:浪尖上打禪

這其實就是動態開闢陣列,需要使用到malloc函式#include

using namespace std;

void main()

for(int j=0;j

free(a);

}//看明白就懂了

4樓:暗號

不可以,陣列的個數不可以為一個變數

如過你不確定你需要幾個元素,你可以用指標操作

5樓:

int i[7];

for(int x ; x < 6 ;++x)

是這個意思嗎?

6樓:金色潛鳥

c/c++ 語言裡, 宣告 陣列大小時,只允許用常數,例如:

int a[10];

int b[5*4*3];

不允許用 變數。

如何將一個陣列元素的個數設為輸入的值呢,一般用動態分配。

int *a; // 宣告為指標。

知道大小n後, 用動態分配:

a = (int *) malloc(sizeof(int) * n);

接下來就可以 把 a 看成 你 宣告過 int a[n]; 了。

對初學者來說,你開個大陣列,多給些單元,就可以了。

例如,你估計 你的 n = 10 到 1000 範圍,你宣告 int a[2000]; 就怎麼也夠用了。

現代計算機用虛擬儲存,1000,2000 個單元,小意思了。

在c語言中,如何在陣列中插入一個數

7樓:匿名使用者

方法為:輸入一個資料x,將陣列中的資料與x逐一比較,如果大於x,記錄下資料的下標,然後此資料下標和其後的資料的下標都加一,相當於都向後挪一位,然後將x賦值給陣列的那個下標。

#include

int main()

int i, j, k, x, a[11] =(3, 6, 7, 9, 12, 14, 15, 27, 29, 31) ;

printf("插入前陣列的資料是:") ;

for(i=0;i<10;i++)

printf("%4d",a[i] ) ;

printf("\n") ;

printf("請輸入要插入的資料:") ;

scanf("%d",&x) ;

for(i=0;i<10;i++)

if(a[i]>x)

break;

for(j=9; j>=i; j--)

alj+1] =alj] ;

a[i]=x;

printf("插入後陣列的資料是:") ;

for(i=0; i<11; i++)

printf("%4d",[i] ) ;

return 0;

8樓:理暄妍果揚

程式1:這個是輸入10個數

先排序再插入一個數

再排序陣列

大小你可以自己更改

#include

void

main()

for(i=0;i<10;i++)

printf("%d

",a[i]);

scanf("%d",&m);

for(i=0;i<10;i++)

if(a[i]>m)

a[10]=m;

for(i=0;i<11;i++)

printf("%d

",a[i]);

printf("\n");

}程式2:如果題中已給排好序的陣列

不必自己輸入的話

#include

void

main()

;int

temp1,

temp2,number,end,i,j;

printf("array

a:\n");

for(i=0;i<10;i++)

printf("%5d",a[i]);

printf("\n");

printf("insert

date:");

scanf("%d",&number);

end=a[9];

if(number>end)

a[10]=number;

else

break;}}

}printf("now,array

a:\n");

for(i=0;i<11;i++)

printf("%d

",a[i]);}

9樓:傑遜漂流記

有一個已排好序(從大到小)的陣列有5個元素,從鍵盤輸入一個數,要求按原排序的規律將它插入到陣列中<5;i++) if(x2.

j=i; /*當這個數比當前數小時,用j記住當前位置,即j=i,中斷迴圈。……

10樓:招鵬鯨清可

#include"stdio.h"

#include"string.h"

void

main()

;//////////這裡定義陣列的時候,要寫上11,否則會認為該陣列只有10個元素,那樣的話,無法對其進行插入的。其他地方沒有錯誤

inti,j,temp,n;

for(i=0;i<10;i++)

for(j=0;j<9-i;j++)

if(a[j]>a[j+1])

printf("按從小到大的排列順序為:\n");

for(i=0;i<10;i++)

printf("%d

",a[i]);

printf("請輸入你想插入陣列的數字:");

scanf("%d",&n);

for(i=0;i<10;i++)

if(n

=i;j--)

a[j+1]=a[j];

break;

}a[i]=n;

for(i=0;i<11;i++)

printf("%d

",a[i]);

printf("\n");}

11樓:匿名使用者

樓主能說具體點嗎。有很多方法,比如用字串連線的函式,strc...什麼什麼的函式,還可以直接插入一個數,和陣列中的數比較大小

12樓:匿名使用者

比如在第n個數中插入一個m

c語言中如何依次輸入陣列中元素?

13樓:

#include

int main()

int a[17];

int i;

for(i=0;i<17;i++)

scanf("%d",&a[i]);

return 0;

14樓:匿名使用者

函式功能:把格式化的資料寫入某個字串

函式原型:int sprintf( char *buffer, const char *format [, argument] … );

返回值:字串長度(strlen)

例子:char* who = "i";

char* whom = "csdn";

sprintf(s, "%s love %s.", who, whom); //產生:"i love csdn. " 這字串寫到s中

sprintf(s, "%10.3f", 3.1415626); //產生:" 3.142"

15樓:

陣列下標是從0開始的,如果要輸入16個元素就應該開a[ 16 ]int a[ 16 ], i;

for ( i = 0; i <

每敲一個元素按一次回車或者空一個格都可以。

16樓:湛絹仝嫻淑

for(int

i=0;i<17;i++)

cin>>a[i];

這是c++得,不同得編輯器可能有些不同。可以把inti;放在外面

inti;

for(i=0;i<17;i++)

scanf("%d",&a[i]);

這是c語言得,可以試試。

17樓:4747哦

1.整型陣列輸入

int i,a[10];

for(i=0;i<10;i++)

......

整型陣列輸出

int i,a[10];

for(i=0;i<10;i++)

printf("%d",a[i]);

......

有指標變數時輸入

int i,a[10],*p;

for(p=a,i=0;i<10;k++)

scanf("%d",p++);

......

有指標變數時輸出

int i,a[10],*p;

for(p=a,i=0;i<10;k++)

printf("%d",a[i]); printf("%d",*(a+i));

printf("%d",p++);

......

字元陣列 :字串的輸入輸出

char str[10];int i;

for(i=0;i<9;i++)

間隔符,回車符和橫向跳格符(tab)都將作為字元被讀入

str[9]='\0'; //scanf無法從終端讀入\0,必須賦予串結束標誌

for(i=0;i<9;i++)

printf("%c",str[i]);

或char str[10];int i;

for(i=0;i<9;i++)

scanf("%s",str); //整串字元輸入,空格回車符作為輸入資料的分隔符不能讀入

printf("%s",str);//遇到第一個\0結束輸出

或char str[10];

gets(str); //空格可以讀入直到讀入一個換行符

char str[10];

puts(str);//從起始地址開始直到遇到第一個‘\0'結束輸出

在c語言中如何將兩個數進行互換,在C語言中如何將兩個數進行互換

將兩個數進行互換的方法有兩種形式 1 藉助中間變數完成,此方法直觀,易理解,使用最多2 不需要中間變數,通過變數身的運算完成交換。方法1 int a 2,b 3,t t a 先將a儲存到臨時變數t中 a b 將b儲存到a中 b t 將臨時變數中的原a值儲存到b中printf a d b d n a,...

c語言陣列怎麼清零,在C語言中如何把陣列清空

c語言不能對這個陣列賦值,只能通過遍歷陣列達到給陣列中每個元素賦值的目的。初始化的時候可以用inta 4 這樣給整個陣列元素賦值為0,若想給已初始化的陣列清零,也只能遍歷陣列。在c語言中,所謂的 清空 意思是 無視裡面的資料 而不是 讓裡面沒有資料 有時候可能需要把一個陣列清零,意思是全部資料都用0...

C語言裡怎樣判斷陣列裡的元素為空還是為

剛建立的陣列既不是null c程式沒有null這個概念,物件導向才有null 也不是0,是不確定 原來記憶體這塊放的什麼還是什麼,如果陣列你不初始化拿來就用,誰也不知道里面是什麼,c是不檢查的 null表示是空,即什麼也沒有。剛設立一個陣列時,裡面的元素是你定義陣列的型別,版數值不確定 例如 cha...