當前位置:首頁 » 編程語言 » c語言中數組的大小

c語言中數組的大小

發布時間: 2023-02-09 17:43:34

A. 求c語言將數組元素大小排序!!

C語言將數組元素大小排序方法:

以下使用的是冒泡排序法實線數組從小到大排序。

思想:每次相鄰兩個數比較,若升序,則將大的數放到後面,一次循環過後,就會將最大的數放在最後。

10、2、3、4、5、6、9、8、7、1是輸入的待排序的數列,經過第一次排序,將最大的,10放在最後,第二次排序,將剩下的2、3、4、5、6、9、8、7、1進行冒泡,將當前最大的9放在倒數第二的位置,以此類推。

以下是具體代碼:

#include <stdio.h>

int main(){

int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};

int i, j, temp, isSorted;

//優化演算法:最多進行 n-1 輪比較

for(i=0; i<10-1; i++){

isSorted = 1; //假設剩下的元素已經排序好了

for(j=0; j<10-1-i; j++){

if(nums[j] > nums[j+1]){

temp = nums[j];

nums[j] = nums[j+1];

nums[j+1] = temp;

isSorted = 0; //一旦需要交換數組元素,就說明剩下的元素沒有排序好

}

}

if(isSorted) break; //如果沒有發生交換,說明剩下的元素已經排序好了

}

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

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

}

printf(" ");

return 0;

}

(1)c語言中數組的大小擴展閱讀:

其他將數組從小到大排序的演算法

以下使用的是選擇排序法實現數組從小到大排序。

思想:從第一個數開始,每次和後面剩餘的數進行比較,若升序,則如果後邊的數比當前數字小,進行交換,和後面的所有的數比較、交換後,就會將當前的最小值放在當前的位置

輸入的序列為10、2、3、4、5、6、9、8、7、1進行一次排序後將最小的數放在了第一位(a[0]與它後面的所有數進行比較,若a[0]比後面的數大,進行交換),以此類推。

以下是具體代碼:

#include <stdio.h>

int main(void){

int a[1001];

int n,i,j,t;

scanf("%d",&n);//n為要排序的數的個數

//輸入需要排序的數

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

scanf("%d",a+i);

//接下來進行排序

for(i=0;i<n-1;++i)//因為每次需要和a[i]後面的數進行比較,所以到a[n-2](倒數第2個元素)就行

{

for(j=i+1;j<n;++j)//j從i後一個開始,a[i]與a[j]進行比較

{

if(a[i]>a[j])//a[i]為當前值,若是比後面的a[j]大,進行交換

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}//每排序一次,就會將a[i](包括a[i])之後的最小值放在a[i]的位置

for(j=0;j<n;++j)

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

printf(" ");

}

return 0;

}

B. c語言中比較一個數組中元素的大小

有時候,數組元素也可以作為函數實參
例子:有兩個數組a和b,各有10個元素,將它們對應的逐個的比較(即a[0]與b[0]比,a[1]與b[1]比...)。如果a數組中的元素大於b數組中的相應元素的數目多於b數組中元素大於a數組中元素的數目(例如:a[i]>b[i]6次,b[i]>a[i]3次,其中i為每次不同的值),則認為a數組大於b數組,並分別統計出兩個數組相對應元素大於,等於,小於的次數。
#include "stdafx.h"
#include <Strsafe.h>
#include <string.h>

int _tmain(int argc, _TCHAR* argv[])
{
int large(int x,int y);
int a[10],b[10],i,n=0,m=0,k=0;
printf("輸入數組a:");
for (i=0;i<10;i++)
{
scanf_s("%d",&a[i]);
}
printf("\n");
printf("輸入數組b:");
for(i=0;i<10;i++)
{
scanf_s("%d",&b[i]);
}
for (i=0;i<10;i++)
{
if(large(a[i],b[i])==1)
{
n=n+1;
}
else if(large(a[i],b[i])==0)
{
m=m+1;
}
else
{
k=k+1;
}
}
printf("a[i]>b[i] %d 次\na[i]=b[i] %d 次\na[i]<b[i] %d 次\n",n,m,k);
if (n>k)
{
printf("數組a大於數組b\n");
}
else if (n<k)
{
printf("數組a小於數組b\n");
}
else
{
printf("數組a等於數組b");
}
getchar();
getchar();
return 0;
}

int large(int x,int y)
{
int flag;
if(x>y)
{
flag=1;
}
else if (x<y)
{
flag=-1;
}
else
{
flag=0;
}
return flag;
}

C. c語言中數組的大小可以改變嗎

數組大小一旦確定就不能改變。

數組長度必須在編譯時確定,可以使用malloc函數在程序運行時動態分配所需「數組」長度。定義數組需要指定數組的長度,然後系統會根據這個長度分配固定的內存大小。

當出現intarray[10];這種情況的時候,是不可以變的,這時候變數的存儲空間在棧區。當intn;cin>>n;intarray=newint[n];的時候,數組可以根據n輸入的大小去分配內存,這時候數組存在堆區。

(3)c語言中數組的大小擴展閱讀

長度為0的數組在標准C和C++中是不允許的,如果使用長度為0的數組,編譯時會產生錯誤,提示數組長度不能為0。但在GNUC中,這種用法卻是合法的。

它的最典型的用法就是位於數組中的最後一項,這樣做主要是為了方便內存緩沖區的管理。如果長度為0的數組換為指針,那麼在分配內存時,需採用兩步:

1、需為結構體分配一塊內存空間;

2、再為結構體中的成員變數分配內存空間。這樣兩次分配的內存是不連續的,需要分別對其進行管理。當使用長度為0的數組時,則是採用一次分配的原則,一次性將所需的內存全部分配給它。相反,釋放時也是一樣的。

D. C語言 數組大小

myArray,是指針數組,每個指針變數使用4個位元組存儲。說以sizeof(myArray)的返回值是16

E. c語言中數組的大小可以改變嗎

C語言中的
數組
,按照理解分為兩種:
1
狹義的數組,指的是以
TYPE
name[M]...;
形式
定義
的數組,也稱為
靜態數組
。靜態數組在定義的時候就確定了數組的大小,無法在運行中對其做改變。
2
廣義的數組,除靜態數組外,還包括
動態數組

動態數組的本質為指針,如
TYPE
*name;
對指針上可以用malloc等
函數
,分配內存空間,實現與靜態數組類似的操作。對於動態數組,可以使用
realloc函數

void
*
realloc(int
size,
void
*p);
重新分配
參數
p上的
內存
大小為參數size。
新返回的的地址值,可能與參數p的原始地址值不同。
該函數可以使p上可使用的內存大小調整到size
位元組
,從而實現動態數組大小的調整。

F. 怎樣在c語言中比較一個數組中元素的大小

main() {int a[10],b[10],i,j=0,k=0,e=0; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) scanf("%d",&b[i]); printf("\n"); for(i=0;i<10;i++) {if(a[i]>b[i]) j++; else if(a[i]b %d times\na
#include
int main(){
int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };
int a,b, text, hello;
for(a=0; a<10-1; a=a+1) { //在這里進行比較的開始的代碼
hello = 1; //假如剩下的元素已經被排序好了,然後接著進行下面的比較

for(b=0; b<10-1-i; b=b+1){
if(numbers[b] > numbers[b+1]){
text= numbers[b];
numbers[b] = numbers[b+1];
numbers[b+1] = text;
hello= 0;
}
}
if(hello) break;
}
for(a=0; a<10; a=a+1){
printf("%d ", numbers[a]);
}
printf("\n");
return 0;
}
(6)c語言中數組的大小擴展閱讀:
C語言中數組元素大小的相關排序規則:
一、首先需要對數組中的元素進行排列,默認是以字元串的規則進行從小到大排序;可接收一個參數:自定義的規則相關排序。參數的具體要求如下:
1、參數首先必須是一個函數;
2、函數必須有一個明確的返回值;
3、返回值必須是number類型,但不可以是NaN。
二、排序中的具體規則:
1、首先每次從數組中挑選出兩個元素傳入函數中,進行比較,直到所有進行排列的元素都被挑選完畢以後就不要再進行挑選;
2、如果返回值是一個正數,就交換這彼此的位置,實現大小的正確排列;
3、如果返回值是一個負數或0,此時說明大小位置的順序是正確的,此時就不需要交換彼此的位置。
4、默認同一字元的全形字元看做半形字元。不區分同一個字元(如日文的片假字)的半形與全形狀態。相同元素,維持原序,默認區分字母大小寫,同一個字元小寫在前,大寫在後。
注意:對數組的元素進行排序需要不斷比較兩個數字的大小,10個元素排序一共需要比較9次,直到所有的元素被都完完全全地被比較一次。

G. c語言中數組比較大小

只能比較數組地址里內容的大小。
數組的地址是自動被分配到內存,你覺得內存地址能比較出個大小么?呵呵
我這樣覺得
如有錯誤還請指導

H. c語言數組最大長度

理論上,c語言數組最大的大小沒有限制,因為它用的是 虛擬存儲。
對於寫程序而言,例如要寫下標,那麼受 unsigned int 最大值的限制,只能用到十六進制 0xffffffff, 十進制4G多一點。
具體程序能獲取多大,就很難說,有時編譯可以通過,運行時出錯。你也可以用 malloc 動態分配請求,看分配是否成功或失敗。
對一般程序而言,數組長度通常夠用了。

I. c語言數組的大小

若有說明:int a[][3]={1,2,3,4,5,6,7};則數組a第一維的大小是3。

int a[][]:第一個中括弧表示有此二維數組有幾行,第二個表示有幾列。

故int a[][3]={1,2,3,4,5,6,7};說明此數組有n行,3列;也就是說每行有三個元素,所以第一行有1,2,3 這三個元素,第二行有4,5,6三個元素,第三行有7這個元素,不足的兩個元素由0來補足。

對數組進行初始化,要麼兩個維度都不寫,由賦值的數組確定,或者第二維可以不寫,第一維要寫,再由賦值數組確定。

數組中的下標是從 0 開始的(而不是 1)。那麼,如何通過下標表示每個數組元素的呢?通過「數組名[下標]」的方式。例如「int a[5];」表示定義了有 5 個元素的數組 a,這 5 個元素分別為 a[0]、a[1]、a[2]、a[3]、a[4]。其中 a[0]、a[1]、a[2]、a[3]、a[4] 分別表示這 5 個元素的變數名。

如果從 1 開始,那麼數組的第 5 個元素就是 a[5],而定義數組時是 int a[5],兩個都是 a[5] 就容易產生混淆。而下標從 0 開始就不存在這個問題了!所以定義一個數組 a[n],那麼這個數組中元素最大的下標是 n–1;而元素 a[i] 表示數組 a 中第 i+1 個元素。

另外,方括弧中的常量表達式可以是「數字常量表達式」,也可以是「符號常量表達式」。但不管是什麼表達式,必須是常量,絕對不能是變數。

C 語言不允許對數組的長度進行動態定義,換句話說,數組的大小不依賴程序運行過程中變數的值。非通常的情況為動態內存分配,此種情況下數組的長度就可以動態定義。

(9)c語言中數組的大小擴展閱讀:

數組特點

1、數組是相同數據類型的元素的集合。

2、數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。

3、數組元素用整個數組的名字和它自己在數組中的順序位置來表示。例如,a[0]表示名字為a的數組中的第一個元素,a[1]代表數組a的第二個元素,以此類推。

熱點內容
u盤文件夾是空的 發布:2024-11-01 14:19:57 瀏覽:402
python包含字元串 發布:2024-11-01 14:19:17 瀏覽:479
c語言的精華 發布:2024-11-01 14:19:02 瀏覽:588
steam截圖文件夾 發布:2024-11-01 14:18:59 瀏覽:613
ipad怎麼往安卓傳照片 發布:2024-11-01 14:18:19 瀏覽:508
我的電腦沒有文件夾選項 發布:2024-11-01 14:13:55 瀏覽:546
vb創建資料庫表 發布:2024-11-01 14:11:55 瀏覽:872
sql聯合表 發布:2024-11-01 14:03:25 瀏覽:962
linux編程gcc 發布:2024-11-01 14:02:41 瀏覽:705
伺服器怎麼設置歡迎遊玩的指令 發布:2024-11-01 14:02:31 瀏覽:928