c语言--数组&排序
来源:互联网 发布:linux打开终端快捷键 编辑:程序博客网 时间:2024/05/16 15:11
1.数组
数组定义形式: int score[100];
数组下标: 从0开始,score[0],score[1]...score[99];
a[n], a[0].....a[n-1]
数据类型 标示符[常量表达式]
1. 数组中的每个元素的类型相同
2. 数组的长度必须为常量(长度指的是数组元素个数)
3. 数组名必须符合标示符定义
4. 数组下标从0开始
5. 数组名是一个地址常量,不是变量
6. 数组中的每个元素是变量
数组在内存中占用的大小 = 数据类型长度 * 数组元素个数
数组访问不能越界操作!
1.1数组初始化
//完全初始化//int main(int argc, const char *argv[]){ int a[5]={1,2,3,4,5}; for (int i=0; i<5; i++) { printf("a[%d]==%d\n", i, a[i]); } return 0;}
//不完全初始化int main(int argc, const char *argv[]){ int a[5]={3,6}; for (int i=0; i< 5; i++) { printf("a[%d]==%d\n",i, a[i]); } return 0;}
//初始化为0int main(int argc, const char *argv[]){ //int a[5]={}; int a[5]={0}; for (int i=0; i<5; i++) { printf("a[%d]==%d\n", i,a[i]); } return 0;}
1.2数组简单操作
//数组遍历int main(int argc, const char * argv[]){ int a[10]; int i; for (i=0; i<10; i++) { a[i]=i; } for (i=0; i<10; i++) { printf("a[%d]==%d\n", i,a[i]); } return 0;}
// 倒序操作数组int main(int argc, const char *argv[]){ int a[5]; for (int i = 4; i >=0; i--) { scanf("%d",&a[i]); } for (int i=0; i<5; i++) { printf("a[%d]==%d\n", i, a[i]); } return 0;}
eg.求学生的平均成绩
int main(int argc, const char *argv[]){ int total=0; float average; int a[10]; for (int i=0; i<10; i++) { scanf("%d",&a[i]); total+=a[i]; } average = (float)(total/10); printf("average == %.2f\n", average); return 0;}
eg.输入10个数据, 查找该数据中的最大数,并将其输出到屏幕上
int main(int argc, const char *argv[]){ int a[10]; int max; //输入数组 for (int i=0; i<10; i++) { scanf("%d", &a[i]); } max = a[0]; //循环比较大小 for (int i=1; i<10; i++) { if (a[i]>max) { max = a[i]; } } printf("The max value is : %d \n", max); return 0;}
eg.字符数组
//字符数组// char str[100];// 每个元素占用1个字节的空间//int main(int argc, const char *argv[]){ // 1 char str[100]; scanf("%s",str); printf("%s\n", str); // 2 char str[5]={'a','b','c','d','e'}; for (int i=0 ; i<5; i++) { printf("%c",str[i]); } putchar('\n'); return 0;}
eg.字符数组操作
//字符串int main(int argc, const char *argv[]){ char str[100]="qianfengjiaoyu"; printf("%s\n", str);}/*int main(int argc, const char *argv[]){ char str[12]="hello world!"; //str[12]='\0'; //printf("%s",str); for (int i=0; i<12; i++) { printf("%c",str[i]); } return 0;}*/
2.二维数组
eg.初始化&遍历
//二维数组初始化//初始化方式 1int main(int argc, const char *argv[]){ 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++) { for (j=0; j<4; j++) { printf("%d ", a[i][j]); } } return 0;}//初始化方式 2int main(int argc,const char *argv[]){ int a[3][4]={{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; for (int i=0; i<3; i++) { for (int j=0; j<4; j++) { printf("%d ",a[i][j]); } printf("\n"); } printf("\n"); return 0;}
eg.打印杨辉三角(二维数组)
//1//1 1//1 2 1//1 3 3 1//1 4 6 4 1//..../* 2=1+1 3=1+2 3=2+1 4=1+3 6=3+3 4=3+1 ....*/int main(int argc,const char *argv[]){ int a[10][10]; int i, j; for (i=0; i<10; i++) { //内层循环打印具体每一个数字 for (j=0; j<=i; j++) { //初始化三角图形左右两边 1 if (j==0 || i==j) { a[i][j]=1; } else { a[i][j]=a[i-1][j-1]+a[i-1][j]; } printf("%d ",a[i][j]); } printf("\n"); } return 0;}
3.数组应用(排序算法)
3.1冒泡排序
//冒泡排序: 相邻两数比较,大数往后移动,小数往前移动;//4 5 7 8 9// 9 7 8 5 4//第一次排序,交换4次// 7 9 8 5 4// 7 8 9 5 4// 7 8 5 9 4// 7 8 5 4 9//第二次排序,交换3次// 7 8 5 4// 7 5 8 4// 7 5 4 8 9//第三次排序,交换2次// 5 7 4 8 9// 5 4 7 8 9//第四次排序// 4 5 7 8 9#define LEN 10int main(int argc, const char * argv[]){ int a[LEN]; int i, j; int temp; //遍历输入 for (i=0; i<LEN; i++) { scanf("%d",&a[i]); } for (i = 0; i<LEN-1; i++) { for (j=0; j<LEN-1-i; j++) { //交换位置 if (a[j]>a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1]=temp; } } } //遍历输出 for (i=0; i<LEN; i++) { printf("%d ",a[i]); } putchar('\n'); return 0;}
3.2选择排序
//选择排序//9 7 8 5 4////第一次排序//4 7 8 5 9//第二次排序//4 5 8 7 9//第三次排序//4 5 7 8 9//第四次排序//4 5 7 8 9int main(int argc, const char *argv[]){ //int a[5]={9, 7, 8, 5, 4}; int a[LEN]; int i,j; int k,temp; for (i=0; i<LEN; i++) { scanf("%d", &a[i]); } for (i=0; i<LEN-1; i++) { k=i; for (j=i+1; j<LEN; j++) { if (a[k]>a[j]) { k=j; } } if (k!=i) { temp = a[k]; a[k] = a[i]; a[i] = temp; } } for (i = 0; i<LEN; i++) { printf("%d ",a[i]); } putchar('\n'); return 0;}
0 0
- c语言--数组&排序
- C语言数组排序小结
- C语言数组排序总结
- C语言数组排序小结
- C语言数组排序小结
- C语言数组排序法
- C语言中的数组排序
- C语言数组排序小结
- c语言数组--冒泡排序
- c语言数组--选择排序
- c语言数组--插入排序
- C语言数组--快速排序
- C语言数组排序小结
- c 语言字符串数组排序
- C语言 二维数组排序
- C语言---数组,字符串数组,冒泡排序
- c语言数组排序小结(for beginner)
- C语言 输入整数数组 冒泡排序
- 纯js实现倒计时
- 选着图片后可以编辑图片和如何使用摄像机获取图片并保存相册
- 自定义camera遇到的相关问题总结
- C# 实现真正的WebCamera【原创】
- GridReport 排序
- c语言--数组&排序
- Webots入门(一)-build up a world
- c#生成注册码的两种方法(mac地址与IP地址)
- httpClient模拟浏览器登陆之谜
- 《网络编程》高级 I/O
- Weblogic 10.3.0 在 AIX6.1、JDK1.6 下挂起解决方法
- 在excel中如何用VLOOKUP进行模糊查找
- 工业水处理:化工行业高纯水设备
- 一个表单中多个按钮实现不同功能