10月25号,关于数组的练习
来源:互联网 发布:cs鼠标垫推荐知乎 编辑:程序博客网 时间:2024/04/28 22:05
一维数组:
数据结构类型:线性结构
数组:A 1,2,3,4,5,6,7,8 A[1];
数组概念:同类型数据的集合,他们在内存中是一片连续存储的区域
int short long long long
float double
char
数组的定义格式:
类型说明符 数组名字[元素个数]; //元素个数必须用常量
int a[20] //合法
int num = 20, a[num]; //不合法,num不是常量
const int num = 20, a[num]; //也不合法,num是伪常量
define num 20
int a[num]; //合法,num是标准常量
数组的初始化:
1,完全初始化 int arr[5] = {1,2,3,4,5};
2,完全初始化 int arr[] = {1,2};
如果初始化时数组元素个数省略了,那么赋值的个数就代表数组元素的总数.
3,不完全初始化 int arr[5] = {1,2};
当使用不完全初始化时,未赋值元素的值默认为0;(测试int类型式)
数组元素的获取:
int arr[5] = {1,2,3,4,5};
arr[0] = 100; //下标取值法,数组的下标是从0开始.
arr[4] = 1000;
注意,注意,注意:一定不要越界,数组的元素的小标最大值总是比元素个数少1
当数组元素较多时,且有一定规律时,如何完成赋值.
比如定义一个100个元素的数组,给每个元素赋值,取值范围1-100;
int a[100],i;
for (i = 0; i < 100; i++)
{
a[i] = 1 + rand()%100;
printf(“%d “, a[i]);
}
二维数组:
类型说明符 数组名字[第一维数量][第一维数量]; //数组元素个数 = 行数 * 列数;
完全初始化时,数组的行数可以省略,数组第一维的数量可以省略.
int a[4][3] = {{80,90,100},{66,77,88},{33,44,55},{100,35,78}};
int a[][3] = {{80,90,100},{66,77,88},{33,44,55},{100,35,78}};
int a[][3] = {80,90,100,66,77,88,33,44,55,100,35,78};
不完全初始化时,未初始化的值默认为0;
int a[4][3] = {{80,90},{66,88},{33,55},{100,35,78}};
相当于 a[4][3] = {{80,90,0},{66,88,0},{33,55,0},{100,35,78}};
int a[4][3] = {80,90,66,88,33,55,100,35,78};
相当于 a[4][3] = {{80,90,66},{88,33,55},{100,35,78},{0,0,0}};
二维数组的取值方式:下标取值
int a[4][3] = {{80,90,100},{66,77,88},{33,44,55},{100,35,78}};
a[1][2] = 100; //正确,将第二行,第三列赋值为100
关于数组的不合法操作:
1,用一个已经初始化的数组对另一个数组赋值,
即使是元素类型相同,数组大小相同,
这样的用法也是不允许的:
int x[3]={7,8,9}; int y[3]; y=x; /错误/
2,对数组进行整体输入输出。
int x[3]={7,8,9}; printf(x);/错误/
3,数组比较。
int x[3]={1,2,3};
int y[3]={4,5,6};
if(x < y) /错误/
4,数组整体运算。
int x[5]={5,6,7,8,9};
int y[5]={2,3,4,5,6};
x+=y;
取数组元素的地址进行加减运算时,实际上相当于沿着当前地址前进或后退,
每次移动的幅度取决于数组的类型.
比如int a[5];
假如:&a[0] //a[0]的地址是002DFCD0
那么 &a[0] + 1 得到的地址是:002DFCD4
再比如char a[5];
假如:&a[0] //a[0]的地址是002DFCD0
那么 &a[0] + 1 得到的地址是:002DFCD1
再比如short a[5];
假如:&a[0] //a[0]的地址是002DFCD0
那么 &a[0] + 1 得到的地址是:002DFCD2
再比如double a[5];
假如:&a[0] //a[0]的地址是002DFCD0
那么 &a[0] + 1 得到的地址是:002DFCD8
冒泡排序法演示:
从第一个元素开始取,取出的元素跟它后面的元素进行比较,
如果没有对方大,就交换值.
1,5,2,7,3,4,9,10
1,5,2,7,3,4,9,10
1,2,5,7,3,4,9,10
1,2,5,7,3,4,9,10
1,2,3,7,5,4,9,10
1,2,3,7,5,4,9,10
1,2,3,5,7,4,9,10
1,2,3,4,7,5,9,10
1,2,3,4,7,5,9,10
1,2,3,4,5,7,9,10
1,每个元素都要取到 for(i = 0;i
for (i = 0; i < 20; i++) { for (j = i+1; j < 20; j++) { if (a[j] < a[i]) { a[j] = a[j] ^ a[i]; a[i] = a[j] ^ a[i]; a[j] = a[j] ^ a[i]; } } }
:定义一个8*8的矩阵,随机赋值,取值范围1-100,
分别打印四边及两条对角线上元素之和;
void main(){ int i, j, a[64] ,q=0,w=0,e=0,r=0,t=0,y=0; for (i = 0; i < 64; i++) { a[i] = 1 + rand() % 100; } for (i = 0; i < 64; i++) { for (j = i + 1; j < 64; j++) { } printf("%-3d ", a[i]); if (i % 8 == 7) { printf("\n"); } } for (i = 0; i < 8; i++) { q += a[i]; w += a[i + 56]; e += a[i + i * 7]; r += a[7+i * 8]; t += a[i+i*8]; y += a[7+i*7]; } printf("元素之和为%d", q+w+e+r+t+y);getchar();}
20个学生,语数外三门课.分数随机给,满分100,给三门课分数进行排序.
void main(){ int i, j,i1,i2,i3, k,k2,k3, a[20][3]; for (i = 0; i < 20; i++) { for (j = 0;j < 3; j++) { a[i][j] = rand() %101; printf("%d ",a[i][j]); } } printf("\n"); printf("\n"); printf("\n"); printf("语文分数排序:");for (i1 = 0; i1 < 20; i1++) { for (k = i1+1; k < 20; k++) { if (a[k][0] < a[i1][0]) { a[k][0] = a[k][0] ^ a[i1][0]; a[i1][0] = a[k][0] ^ a[i1][0]; a[k][0] = a[k][0] ^ a[i1][0]; } } printf("%2d ", a[i1][0]); }printf("\n"); printf("\n");printf("数学分数排序:");for (i2 = 0; i2 < 20; i2++){ for (k2 = i2 + 1; k2 < 20; k2++) { if (a[k2][1] < a[i1][1]) { a[k2][1] = a[k2][1] ^ a[i2][1]; a[i2][1] = a[k2][1] ^ a[i2][1]; a[k2][1] = a[k2][1] ^ a[i2][1]; } }printf("%2d ", a[i2][1]);}printf("\n"); printf("\n");printf("外语分数排序:");for (i3 = 0; i3 < 20; i3++){ for (k3 = i3 + 1; k3 < 20; k3++) { if (a[k3][2] < a[i1][2]) { a[k3][2] = a[k3][2] ^ a[i3][2]; a[i3][2] = a[k3][2] ^ a[i3][2]; a[k3][2] = a[k3][2] ^ a[i3][2]; } }printf("%2d ", a[i3][2]);} getchar();}
在上面的代码中我发现了一个vs的好处,我在一开始定义了i,i1,i2,i3,这几个常量,然后在我后面使用的时候vs自己把我的i2,i3进行了自动赋值,但这导致我的运算结果发生了错误。我刚使用这个软件不久,不知道这是本来如此,还只是特殊情况。但我想我应该分享出来。
- 10月25号,关于数组的练习
- 关于数组的若干练习
- 关于数组的小练习
- 关于指针数组的小练习
- 10月练习
- C++中关于指针与数组的练习 2016.6.7
- JAVA----关于数组模拟链表的练习总结
- 数组的练习
- 数组的使用练习
- 数组的练习
- 数组的练习
- 数组遍历的练习
- 数组函数的练习。
- 简单的数组练习
- 二维数组的练习
- 基本功练习:12月10日认识的弱点
- 1月16号练习
- SQL练习9月10
- tp5异步上传图片到七牛云,就是那么简单
- Python内置类型性能分析--list
- 使用Bootrap和Vue实现仿百度搜索功能
- chapter23 可靠性
- 来玩玩编程纸带打孔编程------最底层的编程
- 10月25号,关于数组的练习
- php中的动态变量含义及示例
- PHP 在字符串中查找字符串函数:strstr()、strchr()、strrchr()和stristr()
- Codeforces-721C:Journey(最短路上的DP)
- H264码流中SPS PPS详解
- JavaScript中引用类型,基本包装类型,基本类型的辨析
- chapter24 安全性
- VSCODE 配置C++运行环境
- QML 学习摘录 05