1.1、一维数组 1、定义 2、引用 下标:整型表达式 例如: 数组元素的使用方法与同类型的变量相同,例如: 3、区分数组的定义和数组元素的引用 (2)、引用数组元素 4、数组和循环:使用循环批量处理数组元素。数组下标作为循环变量,通过循环,逐个处理数组元素。 例1.1:逆序输出 1.1.2、一维数组初始化 (2)、部分元素初始化:一般数组如果没有初始化,所有元素为随机值;但如果对部分元素初始化,没有初始值的元素自动赋值为0 如果对全部元素赋值可以省略数组的长度 例1.2:fibonacci数列的前n项:输入一个正整数n(1<n<=50),输出fibonacci数列的前n项:1,1,2,3,5… 例1.3、数组元素的查找:已知数组a中有如下元素:1,45,18,7,22,11,33,15,27,19;输入一个x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出”Not Found” 例1.4:在有序序列里面插入新元素:已知如下有序序列,有9个元素:1,2,4,7,8,11,16,21,35 输入一个数,该数插入到数组的适当位置,是的数组仍保持升序序列,输出插入新元素之后的数组。 例1.5:交换最小值:输入n,再输入n个数 (1)、求最小值 (2)、求最小值及其所对应的下标 (3)、将最小值与第一个数交换,输出交换后的n个数 例1.6:排序:输入n(n<10),再输入n个数,将它们从小到大的顺序输出。
超详细且附实例的一维数组(C语言)
数组:方便数据的管理和使用,便于完成大量的数据的处理,简化程序设计
1、一维数组
1.1.1、一维数组的定义和引用
一批相同类型的变量使用同一个数组变量名,用下标来相互区分。
// i 从0到9,输出a[0]~a[9] for(i = 0;i < n;i++) printf("%d",a[i]);
类型名 数组名[数组长度]
类型名:数组元素的类型
数组名:数组(变量)的名称,标识符
数组长度:常量表达式,给定数组的大小int a[10];//定义一个含有10个整型元素的数组a char c[200];//定义一个含有200个字符元素的数组C double arr[5];//定义一个含有5个实型的数组arr
(1)、先定义,后使用
(2)、只能引用单个的==数组元素,不能一次引用整个数组
取值范围:[0,数组长度-1]int a[10];10个元素:a[0],a[1]...a[9] //下标不能越界,不能使用a[10]
//从键盘读入一个整数,存入a[i] scanf("%d",&a[i]); //下标为index的元素与下标为k的元素互换内容 temp = a[index]; a[index] = a[k]; a[k] = temp; //输出a[i]的值 printf("%dn",a[i]);
(1)、定义数组类型名 数组名[数组长度] int a[10];//定义数组时,数组长度必须为常量
数组名[下标] a[0] = a[9] = 0; a[k] = temp;
// i 从0到9,输出a[0]~a[9] for(i = 0;i < 10;i++) printf("%d",a[i]); // i 从0到9,输出a[0]~a[9] for(i = 0;i < 10;i++) printf("%d",a[i]);
n个整数的逆序输出。输入n(n <=10)和n个整数,逆序输出这n个整数。思路分析: (1)、读入n; (2)、循环进行n次,依次将n个整数存入a[0],a[1]...a[n -1]; (3)、循环进行n次,依次输出a[n-1]...a[1],a[0];
#include<stdio.h> int main(void) { int n; int a[9]; printf("请输入整数的个数:n"); scanf("%d",&n); printf("请输入%d个整数:n",n);//依次将n个整数存入a[0],a[1]...a[n -1]; for(int i = 0;i < n;i++) scanf("%d",&a[i]); printf("请逆序输出这几个数:n");//依次输出a[n-1]...a[1],a[0]; for(int i = n-1;i >= 0;i--) printf("%d ",a[i]); printf("n"); return 0; }
(1)、可以定义数组时,对数组元素赋初值。
类型名 数组名[数组长度] = {初值表}
例如:int a[10] = {1,2,3,4,5,6,7,8,9,10}; //定义数组a有10个int类型的元素,并为这些元素赋初值; a[0]=1;...a[9]=10
int fib[20]= {0,1}; fib[0]=0; fib[1]=1;//其余的元素都为0
int a[10]={0,1,2,3,4,5,6,7,8,9}; 可写成:int a[]={0,1,2,3,4,5,6,7,8,9};//建议不要省略数组的长度
思路分析: (1)、先输入整数的个数; scanf("%d",&n); (2)、使用一个循环完成计算数组的后一项; for(int i = 2;i <=n;i++) { a[i] = a[i-1] + a[i-2]; } (3)、使用循环输出数组元素; for(int i = 0;i < n;i++) { printf("%dn",a[i]); }
#include<stdio.h> #define N 50 int main(void) { int n; int a[N]={1,1}; printf("请输入整数的个数:n"); scanf("%d",&n); for(int i = 2;i <=n;i++) { a[i] = a[i-1] + a[i-2]; } printf("请输出这个数列的前n项:n"); for(int i = 0;i < n;i++) { printf("%dn",a[i]); } return 0; }
思路分析: (1)、对n个数依次循环进行查找; for() { if(a[i]==x) } (2)、if(i < n)则找到,否则没有找到。
#include<stdio.h> #define N 10 int main() { int i,x; int a[N]={1,45,18,7,22,11,33,15,27,19}; printf("请输入要查找的数字:n"); scanf("%d",&x); for(i=0;i<N;i++) { if(a[i]==x)//若找到,提前循环 break; } if(i<N)//若循环提前结束,说明找到x,输出下标; printf("%dn",i); else printf("Not Found"); return 0; }
思路分析: (1)、从后往前开始遍历,遇到比自己大的元素就往后移一位; for(i = N-1;i >= 0;i--) { if(a[i] > n) a[i+1] = a[i]; else break; } (2)、将插入的元素赋值给a[i+1]; a[i+1] = n;
#include<stdio.h> #define N 20 int main() { int n,i; int a[N]={1,2,4,7,8,11,16,21,35}; printf("请输入要插入的整数:n"); scanf("%d",&n); for( i = N-1;i >= 0;i--) //从后往前遍历,遇到大的往后移一位 { if(a[i]>n) a[i+1]=a[i]; else break; } a[i+1]=n; //将插入的元素赋给a[i+1] printf("插入后按升序输出 :n"); for(i = 0;i <=N;i++) printf("%d ",a[i]); printf("n"); return 0; }
(1)、求最小值
(2)、求最小值及其所对应的下标
(3)、将最小值与第一个数交换,输出交换后的n个数思路分析: a[0]为临时最小值 min = a[0]; for(i = 0;i < n;i++) { if(a[i] < a[0]) min = a[i]; }
#include<stdio.h> #define N 20 int main() { int n,i; int min; int a[N]; printf("请输入整数的个数:n"); scanf("%d",&n); //输入整数的个数 printf("请分别输入这几个整数 :n"); for(i = 0;i < n;i++) scanf("%d",&a[i]); //输入的元素依次存入数组 min = a[0]; //a[0]为临时最小值 for(i = 0;i < n;i++) { if(a[i] < min) min = a[i]; } printf("最小值为:n"); printf("%dn",min); return 0; }
#include<stdio.h> #define N 20 int main() { int n,i; int index; //记录下标 int min; int a[N]; printf("请输入整数的个数:n"); scanf("%d",&n); //输入整数的个数 printf("请分别输入这几个整数 :n"); for(i = 0;i < n;i++) scanf("%d",&a[i]); //输入的元素依次存入数组 min = a[0]; //a[0]为临时最小值 for(i = 0;i < n;i++) { if(a[i] < min) min = a[i]; index = i; //下标赋为i } printf("最小值为:n"); printf("%dn",min); printf("最小值的下标为:n"); printf("%dn",index); return 0; }
思路分析: 交换的操作: t = a[0]; a[0] = min; min = t;
#include<stdio.h> #define N 20 int main() { int n,i; int t; int min; int a[N]; printf("请输入整数的个数:n"); scanf("%d",&n); //输入整数的个数 printf("请分别输入这几个整数 :n"); for(i = 0;i < n;i++) scanf("%d",&a[i]); //输入的元素依次存入数组 for(i = 0;i < n;i++) { min = a[0]; //初始化在for循环内 if(a[i] < min) min = a[i]; } t = a[0]; //进行交换操作 a[0] = min; min = t; printf("最小值与第一个数交换后输出n个数:n"); for(i = 0;i < n;i++) printf("%dn",a[i]); return 0; }
思路分析: 比较交换排序的实现: for(i = 0;i < n -1;i++) //交换排序 {//a[i]与其后元素比较,若a[j]<a[i].则交换 for(j = i+1;j < n;j++) if(a[i] >a[j]) { index = a[i]; a[i] = a[j]; a[j] = index; } }
#include<stdio.h> #define N 20 int main() { int n,i,j; int index; int min; int a[N]; printf("请输入整数的个数:n"); scanf("%d",&n); //输入整数的个数 printf("请分别输入这几个整数 :n"); for(i = 0;i < n;i++) scanf("%d",&a[i]); //输入的元素依次存入数组 for(i = 0;i < n -1;i++) //交换排序 {//a[i]与其后元素比较,若a[j]<a[i].则交换 for(j = i+1;j < n;j++) if(a[i] >a[j]) { index = a[i]; a[i] = a[j]; a[j] = index; } } printf("排序后输出n个数:n"); for(i = 0;i < n;i++) printf("%dn",a[i]); return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算