当前位置:网站首页>C語言學習-Day_04
C語言學習-Day_04
2022-06-27 09:56:00 【壞壞-5】
- 學習參考B站郝斌老師的視頻,文章內的源碼如有需要可以私信聯系。
數組
- 作用
- 為了解决大量同類型數據的存儲和使用問題
- 對於大量相同類型的數據,不需要重新定義變量名
- 為了模擬現實世界
- 一維數組:
a[x]錶示直線 - 二維數組:
a[x][y]錶示平面 - 三維數組:
a[x][y][z]錶示空間 - 四比特數組:
a[x][y][z][h]錶示空間 + 時間
- 一維數組:
- 為了解决大量同類型數據的存儲和使用問題
- 格式
a是變量名n錶示有n個變量- 第一項是
a[0],最後一項是a[n-1]
a[n] = {
1, 2, ...,n};
例:
/*數組*/
# include <stdio.h>
int main(void)
{
int a[5] = {
1, 2, 3, 4, 5}; //a錶示數組名,5錶示有五個元素
int i;
for (i = 0; i < 5; ++i)
{
printf("%d\n", a[i]);
}
return 0;
}
a[5] = {1, 2, 3, 4, 5}a錶示數組的名字,5錶示有五個元素,每項分別是a[0]、a[1]...a[4]
/*運行結果*/
1
2
3
4
5
Press any key to continue
一維數組
- 格式:
int a[3];- 錶示總共有3個元素
- 3個元素名字分別是
a[0]、a[1]、a[2]
- 定義:
- 為 n 個變量連續分配存儲空間
- 所有變量的數據類型必須相同
- 所有變量所占的字節大小必須相同
/*錯誤寫法1*/
int a[5];
a[5] = {
1, 2, 3, 4, 5};
- 只有在定義數組的同時才可以整體賦值
- 定義之後的
a[5]錶示的不是數組,而是數組的第6項- 數組
a[5]中,只有a[0]-a[4]項,沒有a[5]項
例:a數組的值複制給b數組
/*錯誤寫法2*/
b = a; //a、b錶示的是數組中第一個元素的地址
//正確寫法
for (i = 0; i < 5; ++i)
b[i] = a[i];
數組的操作
- 初始化
- 賦值
- 排序
- 求最大/小值
- 倒置
- 查找
- 插入
- 删除
初始化
- 完全初始化
int a[5] = {1, 2, 3, 4, 5};
- 不完全初始化
int a[5] = {1, 2, 3};- 未初始化的元素自動為 0
- 不初始化
int a[5];- 所有元素都是垃圾值
- 清零
int a[5] = 0- 所有元素為 0
賦值
/*數組賦值*/
# include <stdio.h>
int main(void)
{
int a[5];
int i;
printf("請輸入a[0]的值:");
scanf("%d", &a[0]);
printf("a[0] = %d\n", a[0]);
printf("請輸入a[3]的值:");
scanf("%d", &a[3]);
printf("a[3] = %d\n", a[3]);
printf("---------------\n");
for (i = 0; i < 5; ++i)
printf("a[%d] = %d\n", i, a[i]); //循環輸出數組各項的值
return 0;
}
/*運行結果*/
請輸入a[0]的值: 1
a[0] = 1
請輸入a[3]的值:3
a[3] = 3
---------------
a[0] = 1
a[1] = -858993460 //沒有被初始化的項使用垃圾數據填充
a[2] = -858993460
a[3] = 3
a[4] = -858993460
Press any key to continue
倒置
例:將一個數組中的元素倒置輸出
/*將一個數組中的元素倒置輸出*/
# include <stdio.h>
int main(void)
{
int a[5] = {
1, 2, 3, 4, 5};
int i, j;
int t; //用於存放臨時數據
i = 0;
j = 4;
while (i < j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
++i; //沒有使用到變量自增或自减的整體值,所以i++和++i都可以使用
--j;
}
printf("倒置後的數組輸出為:");
for (i = 0; i < 5; ++i)
printf("%d, ", a[i]);
printf("\n");
return 0;
}
/*分析*/
i = 0
j = 4
0 < 4成立,進入循環
t = a0 = 1
a0 = a4 = 5
a4 = t = 1
i = 1
j = 3
1 < 3成立,進入循環
t = a1 = 2
a1 = a3 = 4
a3 = t = 2
i = 2
j = 2
2 < 2不成立,退出循環
a[5] ={
5, 4, 3, 2, 1} //a[2]值不改變
/*運行結果*/
倒置後的數組輸出為:5, 4, 3, 2, 1,
Press any key to continue
- 測試偶數是否仍然成立
二維數組
- 格式:
int a[3][4];- 錶示總共有12個元素,可以當作3行4列看待
- 12個元素的名字依次是:
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j]錶示第i + 1行,第j + 1列
二維數組初始化
- 兩種方式是等價的
/*二維數組初始化*/
int a[3][4] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
int a[3][4] = {
{
1, 2, 3, 4},
{
5, 6, 7, 8},
{
9, 10, 11, 12}
};
二維數組的操作
- 對二維數組輸出
- 對二維數組排序
- 求每一行的最大值
- 判斷矩陣是否對稱
- 矩陣的相乘
/*二維數組的錶示與輸出*/
# include <stdio.h>
int main(void)
{
int a[3][4] = {
{
1, 2, 3, 4},
{
5, 6, 7, 8},
{
9, 10, 11, 12}
};
//也可以如下輸入二維數組
//int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int i,j;
for (i = 0; i < 3; ++i)
{
printf("第 %d 行:", i + 1);
for (j = 0; j < 4; ++j)
{
printf("%-3d", a[i][j]); //-3d%錶示左對齊,中間占3個光標的比特置
}
printf("\n");
}
return 0;
}
/*運行結果*/
第 1 行:1 2 3 4
第 2 行:5 6 7 8
第 3 行:9 10 11 12
Press any key to continue
是否存在多維數組
- 不存在多維數組
- 因為內存是線性一維的
n維數組可以當作是n - 1維數組的一維數組int a[3][4];- 該數組是含有3個元素的一維數組
- 每個一維數組還可以包含4個元素
以上內容均屬原創,如有不詳或錯誤,敬請指出。
本文鏈接: https://blog.csdn.net/qq_45668124/article/details/115090798
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請聯系作者注明出處並附帶本文鏈接!
边栏推荐
- torch.utils.data.RandomSampler和torch.utils.data.SequentialSampler的区别
- How do I get the STW (pause) time of a GC (garbage collector)?
- 为智能设备提供更强安全保护 科学家研发两种新方法
- lvi-sam 总结
- 【STM32】HAL库 STM32CubeMX教程十二—IIC(读取AT24C02 )
- 有關二叉樹的一些練習題
- unity--newtonsoft.json解析
- 谷歌浏览器 chropath插件
- Xiaobai can also understand how the basic network 03 | OSI model works (classic push)
- C语言学习-Day_05
猜你喜欢
随机推荐
On anchors in object detection
JS 文件上传下载
Prometheus alarm process and related time parameter description
Explain the imaging principle of various optical instruments in detail
C语言学习-Day_05
prometheus告警流程及相关时间参数说明
Source insight 工具安装及使用方法
TDengine 邀请函:做用技术改变世界的超级英雄,成为 TD Hero
导师邀请你继续跟他读博,你会不会立马答应?
This application failed to start because it could not find or load the QT platform plugin
三层架构中,数据库的设计在哪一层实现,不是在数据存储层吗?
前馈-反馈控制系统设计(过程控制课程设计matlab/simulink)
Quartz (timer)
巴基斯坦安全部队开展反恐行动 打死7名恐怖分子
JS 客户端存储
6月23日《Rust唠嗑室》第三期B站视频地址
There is no doubt that this is an absolutely elaborate project
Freemarker
为智能设备提供更强安全保护 科学家研发两种新方法
2-4Kali下安装nessus







