本文目錄一覽:
- 1、c語言 數組章
- 2、c語言數組的定義
- 3、C語言 數組
- 4、c語言 c語言數組那一章太難理解了
c語言 數組章
實現功能:排序,插入數據
#include stdio.h
#include stdlib.h
int main(void)
{
int *p,i,j,n;
int figure,temp,max;
printf(“請輸入需要開闢的空間數組\n”);
scanf(“%d”,n);
p=(int *)malloc(sizeof(int )*n); //開闢動態數組
printf(“請隨意輸入%d位數的數字\n”,n);
for(i=0;in;i++)
scanf(“%d”,p[i]);
for(i=0;in;i++) //將用戶輸入的數據排序
{
max=i;
for(j=i+1;jn;j++) //選擇排序法
if(p[max]p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
printf(“排序後的數組如下\n”);
for(i=0;in;i++)
printf(“%d “,p[i]);
printf(“\n”);
p=(int *)realloc(p,sizeof(int)*(n+1)); //在原基礎上再開闢1個空間,用以插入
printf(“請你輸入需要增加的數字\n”);
scanf(“%d”,figure);
if(figure=p[0]) //第一種情況,將數字插入第一個數組裡
{
for(i=0;in;i++) //將數據往後一位移動,以空出位置插入數據
p[n-i]=p[n-i-1];
p[0]=figure; //將數據插入
}
else
if(figure=p[n-1]) //將數組與最後一個數據比較,如果大於則插入數字
p[n]=figure; //將數字直接插入
else
{
for(i=0;in-1;i++) //次循環是為了尋找能插入的位置
if(figure=p[i]figure=p[i+1]) //為什麼=顯示不同結果
{
for(j=0;jn-(i+1);j++) //次循環是將插入位置,後面的數據向後移動
p[n-j]=p[n-j-1]; //將數據往後移動
break; //為了不再讓i自加下去,跳出循環
}
p[n-j]=figure; //將數字插入
}
printf(“插入後的數據如下\n”);
for(i=0;i=n;i++)
printf(“%d “,p[i]);
free(p); //釋放內存
return 0;
}
c語言數組的定義
C語言支持一維數組和多維數組。如果一個數組的所有元素都不是數組,那麼該數組稱為一維數組。
在C語言中使用數組必須先進行定義,一維數組的定義方式為:類型說明符; 數組名 ;[常量表達式]。
其中,類型說明符是任一種基本數據類型或構造數據類型。數組名是用戶定義的數組標識符,方括弧中的常量表達式表示數據元素的個數,也稱為數組的長度。例如:
int a[10]; /* 說明整型數組a,有10個元素 */
float b[10], c[20]; /* 說明實型數組b,有10個元素,實型數組c,有20個元素 */
char ch[20]; /* 說明字元數組ch,有20個元素 */
對於數組類型說明應注意以下幾點:
1、數組的類型實際上是指數組元素的取值類型。對於同一個數組,其所有元素的數據類型都是相同的。
2、數組名的書寫規則應符合標識符的書寫規定。
3、數組名不能與其它變數名相同。例如:
int a;
float a[10];
是錯誤的。
4、方括弧中常量表達式表示數組元素的個數,如a[5]表示數組a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0], a[1], a[2], a[3], a[4]。
5、不能在方括弧中用變數來表示元素的個數,但是可以是符號常數或常量表達式。例如:
#define FD 5
// …
int a[3+2],b[7+FD];
是合法的。但是下述說明方式是錯誤的。
int n=5;
int a[n];
6、允許在同一個類型說明中,說明多個數組和多個變數。例如:
int a,b,c,d,k1[10],k2[20];
擴展資料:
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標準規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言制定了一套完整的美國國家標準語法,稱為ANSI C,作為C語言最初的標準。[1]目前2011年12月8日,國際標準化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標準,也是C語言的最新標準,該標準更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
C語言 數組
struct Idx {
int prev;
int next;
} k[len];
memset(k, -1, sizeof(k));
int i, j;
for (i=0; ilen; i++) {
for (j=0; ji; j++) {
if (a[i][0] == a[j][1]) {
k[i].prev = j;
k[j].next = i;
}
if (a[i][1] == a[j][0]) {
k[i].next = j;
k[j].prev = i;
}
}
}
這裡 len 是你數組的大小,數組a是你的數組;
再建一個同樣大小的索引數組k。
經過處理後,索引數組k建立了雙向鏈。
要統計有幾條鏈,只要計算prev=-1或next=-1的個數。
要遍歷鏈條,從prev=-1且next=0的開始,一直到next=-1的結束
根據你後面添加的描述,輸入一個節點,假定是第x個,可以從索引表中直接確定鏈條
假定輸入了第x個節點,
如果索引表k[x].prev=-1,表示這個節點沒有前面的點,至少是個鏈表的開始
如果prev=0,表示這個前面還有點,跟著prev向前,可以得到它的前一個節點;
如果索引表k[x].next = -1,表示這個節點沒有後面的點,至少是鏈表的結尾
如果next =0,表示這個後面還有點,跟著next向後,可以得到後一個節點。
c語言 c語言數組那一章太難理解了
數組其實和一般的數據類型是一樣的,用法都一樣,只是數組在內存中是連續的
存儲結構存儲了同樣數據類型的一些數據,這就要求數組要有下標來指明是哪個
內存空間里的數據,(其實下標也就相當於內存地址的計算,如a[3]其實就相當
於*(a+3)這裡,a是數組元素的首地址也就是第一個元素的地址,+3就是從這
個地址開始,往後數三個內存單元,當然也就是數組中第四個元素了)所以這裡
就要注意數組的下標的範圍了,數組長度是N的話,那麼下標範圍就是0到N-1;
有什麼不懂的還可以問我。。。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152282.html