一維數組的定義方式

一維數組的定義方式

在C語言中使用數組必須先進行定義。 一維數組的定義方式為:
? ? 類型說明符 數組名 [常量表達式];
其中,類型說明符是任一種基本數據類型或構造數據類型。數組名是用戶定義的數組標識符。方括號中的常量表達式表示數據元素的個數,也稱為數組的長度。例如:
  1. int a[10]; /* 說明整型數組a,有10個元素 */
  2. float b[10], c[20]; /* 說明實型數組b,有10個元素,實型數組c,有20個元素 */
  3. char ch[20]; /* 說明字符數組ch,有20個元素 */

對于數組類型說明應注意以下幾點:
1) 數組的類型實際上是指數組元素的取值類型。對于同一個數組,其所有元素的數據類型都是相同的。

2) 數組名的書寫規則應符合標識符的書寫規定。

3) 數組名不能與其它變量名相同。例如:
  1. int a;
  2. float a[10];
是錯誤的。

4) 方括號中常量表達式表示數組元素的個數,如a[5]表示數組a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0], a[1], a[2], a[3], a[4]。

5) 不能在方括號中用變量來表示元素的個數,但是可以是符號常數或常量表達式。例如:
  1. #define FD 5
  2. // ...
  3. int a[3+2],b[7+FD];
是合法的。但是下述說明方式是錯誤的。
  1. int n=5;
  2. int a[n];

6) 允許在同一個類型說明中,說明多個數組和多個變量。例如:
  1. int a,b,c,d,k1[10],k2[20];

一維數組元素的引用

數組元素是組成數組的基本單元。 數組元素也是一種變量, 其標識方法為數組名后跟一個下標。 下標表示了元素在數組中的順序號。數組元素的一般形式為:
? ? 數組名[下標]
其中下標只能為整型常量或整型表達式。如為小數時,C編譯將自動取整。例如:
? ? a[5]
? ? a[i+j]
? ? a[i++]
都是合法的數組元素。

數組元素通常也稱為下標變量。必須先定義數組,才能使用下標變量。 在C語言中只能逐個地使用下標變量,而不能一次引用整個數組。例如,輸出有10個元素的數組必須使用循環語句逐個輸出各下標變量:
  1. for(i=0; i<10; i++)
  2. printf("%d",a[i]);
而不能用一個語句輸出整個數組。因此,下面的寫法是錯誤的:
  1. printf("%d",a);

【例7-1】使用for循環為一個數組賦值,并將數組倒敘輸出。
  1. #include <stdio.h>
  2. int main(void){
  3. int i,a[10];
  4. for(i=0;i<=9;i++)
  5. a[i]=i;
  6. for(i=9;i>=0;i--)
  7. printf("%d ",a[i]);
  8. return 0;
  9. }

【例7-2】將上面的例子稍微改變一下。
  1. #include <stdio.h>
  2. int main(void){
  3. int i,a[10];
  4. for(i=0;i<10;)
  5. a[i++]=i;
  6. for(i=9;i>=0;i--)
  7. printf("%d",a[i]);
  8. return 0;
  9. }

一維數組的初始化

給數組賦值的方法除了用賦值語句對數組元素逐個賦值外, 還可采用初始化賦值和動態賦值的方法。

數組初始化賦值是指在數組定義時給數組元素賦予初值。數組初始化是在編譯階段進行的。這樣將減少運行時間,提高效率。初始化賦值的一般形式為:
? ? 類型說明符 數組名[常量表達式] = { 值, 值……值 };
其中在{ }中的各數據值即為各元素的初值,各值之間用逗號間隔。例如:
  1. int a[10]={ 0,1,2,3,4,5,6,7,8,9 };
相當于
a[0]=0; a[1]=1 ... a[9]=9;

C語言對數組的初始化賦值還有以下幾點規定:
1) 可以只給部分元素賦初值。當{ }中值的個數少于元素個數時,只 給前面部分元素賦值。例如:
  1. int a[10]={0,1,2,3,4};
表示只給a[0]~a[4]5個元素賦值,而后5個元素自動賦0值。

2) 只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:
  1. int a[10]={1,1,1,1,1,1,1,1,1,1};
而不能寫為:
  1. int a[10]=1;

3) 如給全部元素賦值,則在數組說明中,可以不給出數組元素的個數。例如:
  1. int a[5]={1,2,3,4,5};
可寫為:
  1. int a[]={1,2,3,4,5};

一維數組程序舉例

可以在程序執行過程中,對數組作動態賦值。 這時可用循環語句配合scanf函數逐個對數組元素賦值。

【例7-4】輸入10個數字并輸出最大值。
  1. #include <stdio.h>
  2. int main(void){
  3. int i,max,a[10];
  4. printf("input 10 numbers:\n");
  5. for(i=0;i<10;i++)
  6. scanf("%d",&a[i]);
  7. max=a[0];
  8. for(i=1;i<10;i++)
  9. if(a[i]>max) max=a[i];
  10. printf("maxmum=%d\n",max);
  11. return 0;
  12. }
本例程序中第一個for語句逐個輸入10個數到數組a中。 然后把a[0]送入max中。在第二個for語句中,從a[1]到a[9]逐個與max中的內容比較,若比max的值大,則把該下標變量送入max中,因此max總是在已比較過的下標變量中為最大者。比較結束,輸出max的值。

【例7-5】輸入10個數字并按從大到小的順序排列。
  1. #include <stdio.h>
  2. int main(void){
  3. int i,j,p,q,s,a[10];
  4. printf("\n input 10 numbers:\n");
  5. for(i=0;i<10;i++)
  6. scanf("%d",&a[i]);
  7. for(i=0;i<10;i++){
  8. p=i;q=a[i];
  9. for(j=i+1;j<10;j++)
  10. if(q<a[j]){
  11. p=j;q=a[j];
  12. }
  13. if(i!=p){
  14. s=a[i];
  15. a[i]=a[p];
  16. a[p]=s;
  17. }
  18. printf("%d",a[i]);
  19. }
  20. return 0;
  21. }
本例程序中用了兩個并列的for循環語句,在第二個for 語句中又嵌套了一個循環語句。第一個for語句用于輸入10個元素的初值。第二個for語句用于排序。本程序的排序采用逐個比較的方法進行。在i次循環時,把第一個元素的下標i賦于p,而把該下標變量值a[i]賦于q。然后進入小循環,從a[i+1]起到最后一個元素止逐個與a[i]作比較,有比a[i]大者則將其下標送p,元素值送q。一次循環結束后,p即為最大元素的下標,q則為該元素值。若此時i≠p,說明p,q值均已不是進入小循環之前所賦之值,則交換a[i]和a[p]之值。 此時a[i]為已排序完畢的元素。輸出該值之后轉入下一次循環。對i+1以后各個元素排序。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453350.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UIButton或UILabel加個下劃線

UIButton ####Objective - C LXYHyperlinksButton.h interface LXYHyperlinksButton : UIButton {UIColor *lineColor; }-(void)setColor:(UIColor*)color; 復制代碼LXYHyperlinksButton.m #import "LXYHyperlinksButton.h"implementation LXYHyperlinksButton- (id)…

android studio發布項目到github

點擊file setting ,打開對話框&#xff0c;如下&#xff0c;判斷git是否安裝成功 選擇GitHub&#xff0c;填寫github地址及密碼 發布項目&#xff1a; 轉載于:https://www.cnblogs.com/haihai88/p/8514683.html

在不使用{}時,else執行到哪里結束

正常情況下,if-else語句使用{}.執行時也執行{}里面的所有語句&#xff0c;但是當語句比較簡單時&#xff0c; 可以不使用{},而直接在if或else的后面寫要執行的語句。 但是程序只會執行到if或else語句后的第一個“;”其余的程序不在if-else的程序范圍內。

6個變態的C語言寫的Hello World

下面的六個程序片段主要完成這些事情&#xff1a; 輸出Hello, World混亂C語言的源代碼 下面的所有程序都可以在GCC下編譯通過&#xff0c;只有最后一個需要動用C的編譯器g才能編程通過。 hello1.c #define _________ }#define ________ putchar#define _______ main#define …

linux系統pcb軟件下載,開源PCB設計軟件KiCad致力于下一個大版本的發布

KiCad仍然是PCB設計和其他功能的領先開源電子設計套件。KiCad在2018年取得了成功&#xff0c;System76甚至使用了該軟件作為與Thelio臺式計算機一起設計的子板PCB的一部分&#xff0c;但展望未來&#xff0c;開發人員仍在努力開發6.0版本。KiCad 6.0發布方式將采用重新設計的GT…

CocoaPods pod install/pod update更新慢的問題

最近使用CocoaPods來添加第三方類庫&#xff0c;無論是執行pod install還是pod update都卡在了Analyzing dependencies不動原因在于當執行以上兩個命令的時候會升級CocoaPods的spec倉庫&#xff0c;加一個參數可以省略這一步&#xff0c;然后速度就會提升不少。加參數的命令如下…

js call(),apply(),對象冒充,改變變量作用域

1.apply(); function box(n1,n2){return n1n2; } function pox(n1,n2){alert(box.apply(this,[n1,n2])); //this指window下全局屬性//這里沒有返回值,沒有運算,通過冒充box里的運算來執行 } pox(10,20); //30 注:如果參數過多,冒充對象傳參的時候可以寫成arguments fu…

數組元素的地址計算問題(一維到高維)

數組元素存儲地址的計算 一維數組 設一維數組A[n]存放在n個連續的存儲單元中&#xff0c;每個數組元素占一個存儲單元&#xff08;不妨設為C個連續字節&#xff09;.如果數組元素A[0]的首地址是L&#xff0c;則A[1]的首地址是LC&#xff0c;A[2]的首地址是L2C&#xff0c;… …

侯寧:不該撈的別去撈 踏空不是浪費時間

最近&#xff0c;偶然間在網上看到了一則寓言故事&#xff1a;《駱駝與北斗星》。文章不長&#xff0c;但內容豐富&#xff0c;講得很有趣&#xff0c;很有哲理&#xff0c;也很有啟發。尤其是在股市博弈中&#xff0c;許多人、許多機構都會在現實中扮演故事里的不同角色。因為…

大躍進和循序漸進

大躍進和循序漸進本身沒有對錯&#xff0c;只有跟具體情境結合起來才會產生對錯屬性。 好的大躍進就是不學走先學跑&#xff0c;deadline是第一生產力&#xff0c;一旦學會了更高級的&#xff0c;低級的自然而然就學會了。 好比武裝革命&#xff0c;是先攻打大城市還是攻打農村…

Hibernate 學習(一)

一、Hibernate 簡介 1、Hibernate 簡介 Hibernate是一個開放源代碼的對象關系映射(ORM)框架&#xff0c;它對JDBC進行了非常輕量級的對象封裝&#xff0c;它將POJO與數據庫表建立映射關系&#xff0c;是一個全自動的orm框架&#xff0c;hibernate可以自動生成SQL語句&#xff0…

(嚴蔚敏版)數組的順序存儲表示和實現代碼

#include<stdarg.h>#include<malloc.h> /* malloc()等 */#include<stdio.h> /* EOF(^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() */#include<process.h> /…

特殊權限

2.18特殊的權限set_uid [rootcentos-01 ~]# which passwd //查詢一下passwd位置// /usr/bin/passwd[rootcentos-01 ~]# ls -l /usr/bin/passwd //查詢一下passwd權限//-rwsr-xr-x. 1 root root 27832 6月 …

我的職場戰爭--一年來的開發組內戰實錄

一 戰爭準備階段 一年前&#xff0c;國內分社派我帶著幾名程序員來到日本&#xff0c;進入一個世界級大公司做項目&#xff0c;這里先期駐在了一個日本總社的社員X。沒有人想到戰爭已經臨近。 二 戰爭醞釀階段 日本人不會叫你閑著&#xff0c;頭一個月就開始了下馬威。…

linux8重啟服務代碼,linux(centos8):安裝分布式事務服務seata(seata 1.3.0/centos 8.2)

一&#xff0c;什么是seata?Seata:Simpe Extensible Autonomous Transcaction Architecture&#xff0c;是阿里中間件,開源的分布式事務解決方案。前身是阿里的Fescar官方站:http://seata.io/zh-cn/官方代碼地址:https://github.com/seata/seata官方文檔站:http://seata.io/zh…

數組與矩陣的區別

數組中的元素可以是字符等 矩陣中的只能是數 這是二者最直觀的區別。 因為矩陣是一個數學概念&#xff08;線性代數里的&#xff09;&#xff0c;數組是個計算機上的概念。 《精通MATLAB6.5版》&#xff08;張志涌編著&#xff0c;北京航空航天大學出版社&#xff09;中說&…

android自定義view(自定義數字鍵盤)

序言&#xff1a;在上周的項目中&#xff0c;需要做一個密碼鎖的功能&#xff0c;然后密碼下面還得有鍵盤&#xff0c;就類似支付寶支付的時候那樣&#xff1a; 當然了&#xff0c;我們項目的需求簡單點&#xff0c;純數字的就可以了&#xff0c;然后上周就百度了自定義鍵盤&am…

linux環境部署ltmj,Linux系統安裝與簡單配置 圖文.docx

合肥師范學院實驗報告姓名:課程名稱&#xff1a;Linux院(系&#xff1a;計算機學院 專業/年級:實於Lin^系繚公裝與苗瑕肚卅1.占克If Jf VVVork51at>un ?- If -JpMHIWortsktKia^2.?JGJiIjxiS4CLM.lt 1H. iuFI?H?*vW ?tVirtujl Machine Wisa rdGimm Oprraimv加薊aBMkonA …

矩陣的壓縮存儲

5.3 矩陣的壓縮存儲 矩陣是很多科學與工程計算問題中研究的數學對象&#xff0c;在此&#xff0c;我們討論如何存儲矩陣的元&#xff0c;從而使矩陣的各種運算能有效第進行。對于一個矩陣結構顯然用一個二維數組來表示是非常恰當的&#xff0c;但在有些情況下&#xff0c;比如常…

網絡工程師還要學linux嗎,網絡工程師要學什么

想成為一個優秀的網絡工程師&#xff0c;要學什么&#xff0c;怎么學呢?今天小編帶你了解一下網絡工程師到底要學什么。上篇我們講到了“網絡工程師發展方向”&#xff0c;列舉了許多技術方向&#xff0c;那么我們該如何根據自己的定位選擇學習哪些技術。重點是哪些&#xff0…