C_數組詳解

數組:

一 一維數組

1.1 一維數組的定義:

類型符 數組名[常量表達式];
int a[10];

說明:

1.數組的命名規則遵循標識符命名規則。
2.定義時需要指定元素的個數。方括號里的常量表達式表示元素的個數。
3.常量表達式中不能包含變量;如:int a[n];不合法,c語言不允許對數組的大小作動態的定義。

1.2 引用一維數組:

格式:
數組名[下標];
#include<stdio.h>
int main() {
#if(0)//逆序輸出一個數組的元素
#endifint a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");return 0;
}

1.3 一維數組的初始化:

1.在定義數組時對全部數組賦予初值;
eg: int a[10] = {0,1,2,3,4,5,6,7,8,9};
2.可以給數組中的一部分賦值
eg: int a[10] = {0,1,2,3,4};//系統會給后面未付賦值的空間賦值0.
3.如果對數組去不賦值可以不定義長度。
eg: int a[5] = {0,1,2,3,4};int a[] = {0,1,2,3,4};
#include<stdio.h>
int main() {
#if(0)//逆序輸出一個數組的元素int a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");
#endif#if(1)//利數組求Fibonacci數列,前二十項
#endifint i, fi[20] = {1,1};for(i = 2;i < 20;i++) {fi[i] = fi[i-2] + fi[i-1];}for(i = 0;i < 20;i++) {if(i%5 == 0) {//每行5個數換行printf("\n");}printf("%12d",fi[i]);}printf("\n");return 0;
}
#include<stdio.h>
int main() {
#if(0)//逆序輸出一個數組的元素int a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");
#endif#if(0)//利數組求Fibonacci數列,前二十項int i, fi[20] = {1,1};for(i = 2;i < 20;i++) {fi[i] = fi[i-2] + fi[i-1];}for(i = 0;i < 20;i++) {if(i%5 == 0) {//每行5個數換行printf("\n");}printf("%12d",fi[i]);}printf("\n");
#endif#if(1)//利用冒泡法進行排序。int a[10];int i,j,k;printf("請輸入10個數字:\n");for(i = 0;i < 10;i++) {scanf("%d",&a[i]);}printf("\n");for(i = 0;i < 9;i++) {for(j = 0;j < 9-i;j++) {if(a[j] > a[j+1]) {k = a[j];a[j] = a[j+1];a[j+1] = k;}}}printf("數字的大小順序是:\n");for(i = 0;i < 10;i++) {printf("%4d",a[i]);}printf("\n");
#endifreturn 0;
}

二 二維數組

2.1 二維數組定義

類型說明符 數組名[常量表達式][常量表達式];
eg:int [3][4];//三行四列的數組,形象的可容認為三行四列的矩陣float [2][3];

說明:在C語言中,二維數組可以看成是特殊的一維數組,實質上在內存中是連續的地址存儲。是線性存儲的。幾行幾列是邏輯上的表示。

2.2 二維數組的引用

格式:
數組名[下標][下標];
a[2][3];

2.3 二維數組的初始化

1.分行給二維數組賦初值
eg: int a[3][4] = {{1,2,3,4},{2,3,4,6},{1,3,4,5}};
2.可以將所有的值放在一個打括弧里。和線性存儲一致。這樣可以對第一維的長度可以不寫,第二維的長度必須寫。
eg: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
3.也可以對局部元素賦初值
eg: int a[3][4] = {{1},{0,5},{0,0,9,8}};
#if(0)
//二維數組練習
//1.一個兩行三列的矩陣轉換成三行兩列的矩陣int a[2][3] = {{1,2,3},{4,5,6}};int b[3][2],i,j;printf("a矩陣為:\n");for(i = 0;i < 2;i++) {for(j = 0;j < 3;j++) {printf("%5d",a[i][j]);b[j][i] = a[i][j];}printf("\n");}printf("b矩陣:\n");for(i = 0;i < 3;i++) {for(j = 0;j < 2;j++) {printf("%5d",b[i][j]);}printf("\n");}#endif#if(1)//有一個3*4的矩陣,求出矩陣中最大的一個數int a[3][4] = {{23,4,-2,3},{4,45,9,-45},{31,67,45,0}};int i,j,row,col,max;max = a[0][0];for(i = 0;i < 3;i++) {for(j = 0;j < 4;j++) {if(a[i][j] > max) {max = a[i][j];row = i;col = j;}}}printf("最大的元素為:%d\n 第%d行\n 第%d列\n",max,row,col);
#endifreturn 0;
}

三 字符數組

3.1 定義字符數組

char c[10];//包含10個字符

3.2 字符數組的初始化

char c[12] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};

說明:字符數組必須初始化,如果提供的處置個數大于數組的個數則會出現語法錯誤,如果小于數組長度,系統會給最后一個自動補'\0';如果兩者相等即可省略個數。 char c[] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};
二維字符數組初始化;
char diamond[5][5] = {{'','',''},{'','','','',''},{'','','','',''},{'','','','',''},{'','',''}}//代表一個菱形

3.3 字符數組的引用

#include<stdio.h>
int main() {
#if(1)
//利用字符二維數組輸出一個菱形char diamond[5][5] = {{' ',' ','*'},{' ','*',' ','*',' '},{'*',' ',' ',' ','*'},{' ','*',' ','*',' '},{' ',' ','*'}};//沒有的字符有個空格int i,j;for(i = 0;i < 5;i++) {for(j = 0;j < 5;j++) {printf("%c",diamond[i][j]);}printf("\n");}#endifreturn 0;
}

3.4 字符串和字符串結束的標志

在C語言中,字符串是作為字符數組來處理的。定義一個字符串就會利用一個一維數組來存放。字符中的字符是逐個放到數組中的,兩者的長度是相同的。
為了測定字符串的實際長度,C語言規定了一個“字符串結束的標志”,其中有一個'\0',則'\0'前面的為有效長度。

字符串常量使字符數組初始化

char c[] = {"I love C/C++"};
or
char c[] = "I love C/C++";

而下面的并不等價
char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+'};
不等價
char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+','\0'};

說明:字符數組并不要求他的最后一個字符'\0',根據自己的需求定義。而系統會給字符串添加一個'\0',便于測定字符串的實際長度。由于字符串的處理方式是字符數組的形式,為了處理方式一致可對字符數組也認為的添加'\0',便于處理。

轉載于:https://www.cnblogs.com/intelwisd/p/8060419.html

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

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

相關文章

CSS節選——選擇器

CSS&#xff0c;cascading style sheet&#xff0c;層疊樣式表&#xff0c;請留意層疊概念。 css3為了區分偽類和偽元素&#xff0c;偽元素采用雙冒號寫法。 常見偽類——:hover,:link,:active,:target,:not(),:focus。 常見偽元素——::first-letter,::first-line,::before…

python游戲循環設置_Pygame:游戲循環前的初始菜單

我正在制作一個this game的版本&#xff0c;并嘗試將起始菜單設置為&#xff1a;我的計劃是先做surface.fill(overlaycolor)&#xff0c;然后將這個圖像blitting到屏幕上。在一個while循環中。之后&#xff0c;在用戶想玩(另一個問題除外)之后&#xff0c;我們將進入另一個whil…

vue.js基礎知識篇(7):表單校驗詳解

目錄 網盤 第12章:表單校驗 1.npm安裝vue-validator $ npm install vue-validator 代碼示例: var Vuerequire("vue"); var VueValidatorrequire("vue-validator"); Vue.use(VueValidator); 2.直接使用script標簽引入vue.js 要下載vue-validator&#xff0c…

修改linux綁定的域名,手工修改linux系統下DA面板綁定的域名

舉例說明手工修改DA面板下虛擬主機ryan綁定的域名&#xff0c;只需要 vi /usr/local/directadmin/data/users/ryan/httpd.conf代碼如下&#xff1a;# Auto generated apache config file by DirectAdmin version 1.46.3# Modifying this file is not recommended as any change…

在JUnit測試中使用Builder模式

這并不是要成為技術含量很高的職位。 這篇文章的目的是為您提供一些指導&#xff0c;以使您的JUnit測試生活更加輕松&#xff0c;使您能夠在幾分鐘內編寫復雜的測試場景&#xff0c;并具有易于閱讀的測試優勢。 單元測試中有兩個主要部分&#xff0c;需要編寫許多引導程序代碼&…

SQL數據庫中臨時表、臨時變量和WITH AS關鍵詞創建“臨時表”的區別

原文鏈接&#xff1a;https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL數據庫中數據處理時&#xff0c;有時候需要建立臨時表&#xff0c;將查詢后的結果集放到臨時表中&#xff0c;然后在針對這個數據進行操作。 創建“臨時表”&#xff08;邏輯上的臨時表&…

python 三維繪圖庫_Python第三方庫matplotlib(2D繪圖庫)入門與進階

Matplotlib一 簡介&#xff1a;Matplotlib是一個Python 2D繪圖庫&#xff0c;它可以在各種平臺上以各種硬拷貝格式和交互式環境生成出具有出版品質的圖形。 Matplotlib可用于Python腳本&#xff0c;Python和IPython shell&#xff0c;Jupyter筆記本&#xff0c;Web應用程序服務…

zbb20170626 myeclipse 2017 ci 構建 spring hibernate struts jar

轉載于:https://www.cnblogs.com/super-admin/p/7081209.html

linux處理機調度實驗報告,模擬Linux操作系統下處理機調度實驗報告

在采用多道系統的設計程序中,往往有若干進程同時處于就緒狀態。當就緒狀態進程數大于處理機數時,就必須按照某種策略來決定哪些進程優先占用處理機。本實驗模擬在單處理機情況下處理機調度處理機調度一、實驗目的&#xff1a;1、了解Linux下Emacs編輯器的使用方法&#xff0c;掌…

Java線程:保留的內存分析

本文將為您提供一個教程&#xff0c;使您可以確定活動應用程序Java線程保留Java堆空間的數量和位置。 將提供來自Oracle Weblogic 10.0生產環境的真實案例研究&#xff0c;以使您更好地理解分析過程。 我們還將嘗試證明過多的垃圾回收或Java堆空間的內存占用問題通常不是由真正…

軟件測試白皮書-等價類

設有一個檔案管理系統&#xff0c;要求用戶輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月&#xff0c;并規定日期由6位數字字符組成&#xff0c;前4位表示年&#xff0c;后2位表示月。現用等價類劃分法設計測試用例&#xff0c;來測試程序的"日期檢查功能&qu…

深入css布局 (1) — 盒模型 元素分類

深入css布局&#xff08;1&#xff09;—— 盒模型 & 元素分類 “ 在css知識體系中&#xff0c;除了css選擇器&#xff0c;樣式屬性等基礎知識外&#xff0c;css布局相關的知識才是css比較核心和重要的點。今天我們來深入學習一下css布局相關的知識。” 首先來列下大綱 盒模…

批改網禁止粘貼怎么破_教育部對家長批改作業表態了,明令禁止!你怎么看?...

互聯網的發展&#xff0c;的確方便了現代人生活。視頻電話、出去買東西你都不用帶錢帶卡&#xff0c;手機一掃就可以完成支付。很多中小學的家長都會建一個家長群&#xff0c;方便老師和家長的溝通。這個群可以說是家長和學校的橋梁和紐帶&#xff0c;家長們為了支持老師的工作…

電子科大專科c語言作業1,電子科大15春《C語言(專科)》在線作業試卷.docx

電子科大 15 春《 C 語言(專科)》在線作業一、單選題(共20 道試題&#xff0c;共100 分。)1.對于 int*p;inta[];pa;的合法運算 ()a;pa;p; 相當于 a;p; 相當于 a[1];若 p 中的地址為 100 則 p; 運算后&#xff0c;則其值為 100-----------------選擇&#xff1a; C已知 intb; 則…

MapReduce算法–順序反轉

這篇文章是介紹MapReduce算法的系列文章的另一部分&#xff0c;該書在使用MapReduce進行數據密集型文本處理中找到。 先前的文章是Local Aggregation &#xff0c; Local Aggregation PartII和創建共現矩陣 。 這次我們將討論階數反轉模式。 順序反轉模式利用的MapReduce來計算…

xss防御

http://blog.csdn.net/ghsau/article/details/17027893轉載于:https://www.cnblogs.com/jiangjing/p/8076216.html

移動端頁面字體在微信被放大,導致排版錯亂

在開發微信頁面的時候&#xff0c;之前一直沒有測出這個問題。直到某天領導的手機出現了排版錯位的問題&#xff0c;拿著手機質問我的工作態度。 Google了一下發現原來微信調整了字體大小會放大網頁的字體&#xff0c;導致排版混亂。通過設置可以禁止網頁字體被放大&#xff1a…

液壓支架銷軸力學計算分析研究_基于RFID射頻精準定位的智能開采研究與應用...

一、項目背景近年來隨著智能開采技術的不斷發展&#xff0c;裝備和新工藝不斷更新換代,在智能開采中&#xff0c;對采煤機位置的精準定位是能否實現智能開采的關鍵&#xff0c;只有準確無誤地獲取煤機的準確位置&#xff0c;才能實現工作面的智能化開采&#xff0c;進而提高生產…

cf 821E Okabe and El Psy Kongroo(矩陣快速冪)

鏈接&#xff1a;http://codeforces.com/problemset/problem/821/E 分析&#xff1a;由于有邊界而且不同段邊界還不同&#xff0c;直接算是不行的。。k是1e18&#xff0c;dp也不行。。用一個16維的向量表示某一列16個位置可能的種類數&#xff0c;到下一列的轉移矩陣容易得到&a…

您是否能及時編譯?

還記得上次被C開發人員嘲笑的時候嗎&#xff1f; Java如此繁瑣&#xff0c;以至于他們甚至都不會考慮使用這種語言&#xff1f; 在許多方面&#xff0c;這一概念仍然成立。 但是對于典型的用法&#xff08;在大型企業的骨干中&#xff09;&#xff0c;Java性能絕對可以與許多競…