C语言-7数组(1)
c语言数组1
① 输入->x ② s+x->s 2、算平均分ave 3、循环30次
数组
1.能保存所有的数据 2.能用循环结构处理数据
① 输入->x
② 如果x>ave 输出x。
定义 有序数据的集合 特点 所有元素类型相同 要素 数组名 下标
第五章
5.1 5.2 5.3 5.4
数组
一维数组 二维数组 字符型数据 数组常用算法举例
4
5 6
5
4 3
7
8 9
2
1 0
算法: for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; }
例2 产生n个[0,70]之间的随机整数,并 按逆序重放在数组中。(n<50)
#include "stdlib.h" main( ) { int a[50], t, n, i; scanf("%d", &n); randomize(); for(i=0;i<n;i++) { a[i]=random(71); printf("%5d",a[i]); } printf("\n"); for(i=0;i<=n/2-1;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } for(i=0;i<n;i++) printf("%5d",a[i]); }
21 0
34 0
55 0
.........
f[2]=f[1]+f[0]; f[3]=f[2]+f[1]; f[i]=f[i-1]+f[i-2];
C语言 数组
sAverage[i]=0.0; for(j=0;j<M;j++)
sAverage[i]+=score[j][i]; sAverage[i]=sAverage[i]/M; }
C语言程序设计
二维数组的初始化
第4章 数组
(1)按行对二维数组进行初始化: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
C语言程序设计
一维数组的定义
第4章 数组
➢ 要想使用一维数组,必须对一维数组进行定义。定义时,
需要说明两点: (1)数组中元素的类型; (2)数组中元素的个数。
类型标识符 数组名[整型常量表达式];
int x[10]; char name[20]; float score[20];
//定义一个包含10个整数的数组x //定义一个包含20个字符的数组name //定义一个包含20个浮点数的数组score
int arr[Num]={10,8,56,45,31,49,47,50,89,100}; printf("请输入要查找的数据: "); scanf("%d",&a); for(i=0;i<Num;i++){
if (arr[i]==a){ printf("元素%d在数组中的位置是:%d\n", a, i+1); break;
#define N 20 int a[N]={1,1}; //用一维数组表示Fibonacci数列,并对其赋初值 int i, sum=0; for(i=2;i<N;i++)
6.C语言第四章数组(1)
4.1.4 一维数组程序举例
【例4-2】 从键盘输入10个整数,求出它们的平均值 及比平均值大的数。 #include<stdio.h> void main( ) { int i , x[10]; float sum=0,aver=0.0; for (i=0;i<10;i++) {scanf("%d",&x[i]); sum=sum+x[i]; } aver=sum/10.0;
4.2.4 二维数组程序举例
#include<stdio.h> printf("\n array b:\n"); void main( ) for(i=0;i<3;i++) { int a[3][4], b[3]; printf("%5d",b[i]); int i,j,max; printf("\n"); for(i=0;i<3;i++) } for(j=0;j<4;j++) 运行结果: scanf("%d",&a[i][j]); 25 88 69 72↙ for(i=0;i<3;i++) 33 29 78 96↙ { b[i]=a[i][0]; 9 54 48 90↙ for(j=1;j<4;j++) array b: if(a[i][j]>b[i]) 88 96 90 b[i]=a[i][j]; }
4.2.1 二维数组的定义
例如,可以把x看作是一个一维数组,它有3 个元素:x[0]、x[1]、x[2];而x[0]、x[1]、x[2] 又可以看作是三个一维数组的名字。其中,x[0] 由x[0][0]、x[0][1]、x[0][2]三个元素组成;x[1] 由x[1][0]、x[1][1]、x[1][2]三个元素组成;x[2] 由x[2][0]、x[2][1]、x[2][2]三个元素组成。即: x[0]: x[0][0] x[0][1] x[0][2] x x[1]: x[1][0] x[1][1] x[1][2] x[2]: x[2][0] x[2][1] x[2][2] 注意,二维数组和一维数组一样,数组元素 的下标从0开始,因此x的下标最大的元素是 x[2][2],而不是x[3][3]。
c语言实验7数组实验报告
实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332专业计算机科学与技术任课教师学号:姓名:实验日期:2014年月日广东商学院教务处制一.实验目的1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。
2.熟练掌握字符数组和字符串函数的使用。
3.熟练掌握一位数组以及一位数组元素的存储关系。
4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。
5.通过上机实践掌握与数组有关的算法。
二、实验内容上机题1输入并运行以下程序。
实验内容:用2个数组对第3个数组进行赋值#include<stdio.h>main(){int i,a[5],b[5],c[5];a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for(i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。
a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。
○2数组赋值方法和一般变量一样。
例如,a[0]=2表示将2赋给a[0]。
运行结果上机题2 输入并运行以下程序。
实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include<stdio.h>main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6};sum=0;for(i=0;i<=10;i++)sum+=a[i];printf("sum=%d\n",sum);}实验结果实验小结○1对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。
理解C语言(一)数组、函数与指针
理解C语⾔(⼀)数组、函数与指针1 指针⼀般地,计算机内存的每个位置都由⼀个地址标识,在C语⾔中我们⽤指针表⽰内存地址。
指针变量的值实际上就是内存地址,⽽指针变量所指向的内容则是该内存地址存储的内容,这是通过解引⽤指针获得。
声明⼀个指针变量并不会⾃动分配任何内存。
在对指针进⾏间接访问前,指针必须初始化: 要么指向它现有的内存,要么给它分配动态内存。
对未初始化的指针变量执⾏解引⽤操作是⾮法的,⽽且这种错误常常难以检测,其结果往往是⼀个不相关的值被修改,并且这种错误很难调试,因⽽我们需要明确强调: 未初始化的指针是⽆效的,直到该指针赋值后,才可使⽤它。
int *a;*a=12; //只是声明了变量a,但从未对它初始化,因⽽我们没办法预测值12将存储在什么地⽅int *d=0; //这是可以的,0可以视作为零值int b=12;int *c=&b;另外C标准定义了NULL指针,它作为⼀个特殊的指针常量,表⽰不指向任何位置,因⽽对⼀个NULL指针进⾏解引⽤操作同样也是⾮法的。
因⽽在对指针进⾏解引⽤操作的所有情形前,如常规赋值、指针作为函数的参数,⾸先必须检查指针的合法性- ⾮NULL指针。
解引⽤NULL指针操作的后果因编译器⽽异,两个常见的后果分别是返回置0的值及终⽌程序。
总结下来,不论你的机器对解引⽤NULL指针这种⾏为作何反应,对所有的指针变量进⾏显式的初始化是种好做法。
如果知道指针被初始化为什么地址,就该把它初始化为该地址,否则初始化为NULL在所有指针解引⽤操作前都要对其进⾏合法性检查,判断是否为NULL指针,这是⼀种良好安全的编程风格1.1 指针运算基础在指针值上可以进⾏有限的算术运算和关系运算。
合法的运算具体包括以下⼏种: 指针与整数的加减(包括指针的⾃增和⾃减)、同类型指针间的⽐较、同类型的指针相减。
例如⼀个指针加上或减去⼀个整型值,⽐较两指针是否相等或不相等,但是这两种运算只有作⽤于同⼀个数组中才可以预测。
大学课件C语言数组
第6趟排序后成为:12, 26, 37, 4 8, 49, 64, 75, 97
printf("ENTER 10 REAL NUMBERS\n"); for(i=0;i<10;i++) { scanf("%f",&value); x[i]=value; } total=0.0; for(i=0;i<10;i++) total=total+x[i]*x[i];
/*.....PRINTING OF x[i] VALUES AND TOTAL......*/
number[0] number[1] number[2] number[3] number[4]
C语言中,数组元素的序号(下标)从0开始。
对数组的引用超过了所声明的范围,会导致不可预知的结果.
9
数组的作用
数组元素的作用相当于简单变量 数组名代表的是数组在内存中的首地址 同一个数组中的元素在内存中是按顺 序连续存放的
/*.....PRINTING OF x[i] VALUES AND TOTAL......*/
printf("ENTER 10 REAL NUMBERS\n"); for(i=0;i<10;i++) { scanf("%f", &x[i]); total=total+x[i]*x[i]; } printf("\n"); for(i=0;i<10;i++) printf("x[%2d]=%5.2f\n", i, x[i]); printf("\ntotal=%.2f\n", total);
7C语言
7.1.2一维数组元素的引用
1.数组元素的引用方式 数组名[下标] 下标可以是整型常量或整型表达式。 例如: a[0]=a[5]+a[7]-a[2*3]
注意: 只能逐个引用数组元素,不能一次引用整个数组
定义数组时用到的“数组名[常量表达式]” 和引 例 int a[10]; 用数组元素时用到的“数组名[下标]” 是有区别的 printf(“%d”,a); () 。 必须 for(j=0;j<10;j++) 例如∶ int a[10],i; printf(“%d\t”,a[j]); () t=a[i];
1.一维数组的定义格式为: 类型说明符 数组名[常量表达式];
例如: int a[10];
它表示定义了一个整形数组,数 组名为a,此数组有10个元素。
说明:
1.数组名定名规则和变量名相同,遵循标识 符定名规则。
2、数组的类型实际上是数组元素的类型。对于同 一个数组,其所有元素的数据类型都是相同的。 3、在定义数组时,需要指定数组中元素的个数, 括号中的常量表达式用来表示元素的个数,即数组 长度。 4、数组名不能与其它变量名相同。 下面的定义是错误的。 main() { int a; float a[10]; „„}
7.2.4二维数组程序举例
例7.4 将一个二维数组行和列元素互换,存到另一个 二维数组中。 例如:a= 1 2 3 1 4 4 5 6 b= 2 5 #include <stdio.h> void main() 3 6
{int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; for(i=0;i<=1;i++) {for(j=0;j<=2;j++) b[j][i]=a[i][j]; printf(“\n”); } for(i=0;i<3;i++) {for(j=0;j<2;j++) printf(“%d”,b[i][j]); printf(“\n”); } }
C语言 数组 讲解
精选课件ppt
4.1.3 数组应用 1.比较法排序
由键盘输入10个数,按由小到大排序输出 解题方法:
for(j=i+1;j<10;j++)
if(a[i]>a[j])
a[i]^=a[j]^=a[i]^=a[j];
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
精选课件ppt
2. 冒泡法排序
是一种交换类排序方法,它是通过相邻数据元 素的交换逐步将线性表变成有序。
1. 首先将a[0]与a[1]、a[1]与a[2]、a[2]与a[3]、……a[n-2] 与a[n-1]相邻两个数进行比较,若为逆序(比如 a[0]>a[1])则两者交换,这样就将将最大的数放在a[n1]中;
/17
精选课件ppt
❖ 若要统计高于平均分的人数,则无法实现。
mark是一个简单变量,存放的是最后一个学生 的成绩。
➢ 用已有知识解决方法:
1.再重复输入成绩,带来两个问题: (1)输入数据的工作量成倍增加; (2)若本次输入的成绩与上次不同,则统计的
结果不正确。
2.使用100个变量mark1,mark2, …… , mark99, mark100。
数组一旦定义,数组的大小就不能再改变。常用的办 法是用符号常量来指定元素个数。
#define size 50
float score[size];
C语言习题集合(数组) (1)
第四章数组4.1 选择题1. 以下关于数组的描述正确的是( )。
A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。
A.int a(10);B. int n=10,a[n];C.int n;D. #define SIZE 10 scanf("%d",&n); int a[SIZE];int a[n];3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A. 整型常量B. 整型表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。
A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义:int bb[ 8];。
则以下表达式中不能代表数组元bb[1]的地址的是( )。
A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16. 假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是( )。
A. 3B. 6C. 10D.207. 若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include<stdio.h>main(){int a[10],i=0;while(i<10) scanf("%d",________ );┇}A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9. 执行下面的程序段后,变量k中的值为( )。
c语言程序设计第7章(谭浩强)PPT版本
如 int a[5]; static int a[5]={6,2,3}; int a[]={1,2,3,4,5,6}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 如 编译系统根据初值个数确定数组维数 int a[3]={6,2,3,5,1}; ()
例
38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字 n=8
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
程序举例
#include <stdio.h> #define SIZE 10 例 读10个整数存入数组,找出其中最大值和最小值 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) 步骤: { printf("%d:",i+1); 1. 输入:for循环输入10个整数 scanf("%d",&x[i]); 2. 处理: } (a) 先令max=min=x[0] max=min=x[0]; (b) 依次用x[i]和max,min比较(循环) for(i=1;i<SIZE;i++) 若max<x[i],令max=x[i]{ if(max<x[i]) max=x[i]; 若min>x[i],令min=x[i] if(min>x[i]) min=x[i]; 3. 输出:max和min } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
C语言(第七章数组)
对部分元素赋初值(前面的连续元素)。如: int b[10]={0,1,2,3,4};
表示数组元素的值为:
b[0]=0; b[1]=1; b[2]=2; b[3]=3; b[4]=4; 后5个元素的初值为0。
注意:不能只对不连续部分元素或后面的连续
元素赋初值。 语句: int a[10]={, , , , ,1,2,3,4,5};
main ( ) { int a[2] [3]={{1, 2,3},{4, 5,6}}; int b[3] [2], i, j; printf("array a: \n"); for (i=0; i<=1; i++) { for (j=0; j<=2; j++) { printf("%5d", a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("array b:\n"); for (i=0; i<=2; i++) { for (j=0; j<=1; j++) printf("%5d", b[i]j]); printf("\n"); } }
运行结果如下:
1
1
2
3
5
8
89
13
144
21
133
34
377
55
610
987
1597
1584
4181
6765
四、简单预处理指令
1. 指令格式:
#define 符号常量
2. 指令作用
文本串
用整型表达式替换程序中所有的符号常量。
c语言.实验7 数组(1)
实验7 数组(1)截止时间:5.8 23:59填空题1.程序的功能是:从键盘输入一个十进制正整数n,将n转换成二进制数并输出,填空以实现功能要求。
例如:若输入十进制数8,则输出其对应的二进制数1000;若输入十进制数25,则输出其对应的二进制数11001。
输入、输出示例:#include <stdio.h>int main(){int n,i=0,a[30];scanf("%d",&n);while(n!=0 ){a[i]=; //1n=n/2;; //2}for(i=;i>=0;i--) //3printf("%d",a[i]);return 0}2. 以下程序的功能是:从键盘任意输入一个整数x ,在数组a 中顺序查找,如果找到,则给出该数所在的下标值,如果没找到,则输出no 。
例如:若输入5,则输出其对应数组元素的下标4,若输入25,则输出no 。
输入输出示例:#include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},i,x; scanf("%d",&x);; //1while(&& i<10 ) //2 i++;if() //3printf("pos:%d",i);elseprintf("no!");return 0; }编程题在下面编程题1.【问题描述】输入10个整数,求大于平均值的偶数和奇数各有多少个?【输入形式】输入10个整数【输出形式】输出大于平均值的偶数和奇数的个数。
【样例输入】2.【问题描述】教材P176:第7章课后习题题三(1)-选择法排序(输出数据之间用一个空格间隔)。
【输入形式】输入数据的个数【输出形式】【样例输入】【样例输出】。
11《C语言程序设计》教案第四章数组(1)—一维数组
min_p=j;} printf(“the min is%d,position %d”,min,min_p);
} (5)数组在内存中的存放 例如 int data[3];则在内存中的状态如下:
1000 1002
1004
data[0] data[1] data[2]
讨论、思考题、作业: 实验指导书习题
f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出 公式为: f[i]=f[i-1]+f[i-2]; 循环语句为:for(i=2;i<20;i++) 程序代码: main()
{ int i;
static int f[20]={1,1};
/*定义 20 个元素的数组
参考资料(含参考书、文献等):
叶斌 陈世强. C 语言程序设计. 北京:科学出版社 授课类型:理论课 讨论课□ 实验课□ 练习课□ 其他□ 教学方式:传统授课 双语□ 讨论□ 示教□ 指导□ 其他□ 教学资源:多媒体 模型□ 实物□ 挂图□ 音像□ 其他□
定义了一个二维数组 b,该数组由 9 个元素构成,其中每一个数组元素都属于浮点(实
数)数据类型。
数组
b
的各 个数据元 素依次
是:b[0][0],b[0][1],b[0][2],b[1][0],b[1][1],b[1][2],b[2][0],b[2][1],b[2][2](注意:下标从 0-2)。
每个数组元素也都可以作为单个变量使用。
例如:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10];系统会对所有数
组元素自动赋 0 值。
4)在对全部数组元素赋初值时,可以不指定数组长度。
c语言数组倒序 (1)
c语言数组倒序 (1)C语言数组倒序在C语言中,数组是一种用于存储相同类型数据元素的数据结构。
数组元素可以通过下标来访问,下标从0开始递增。
有时候,我们需要对数组进行倒序操作,即将数组中的元素顺序颠倒过来。
本文将介绍几种在C语言中实现数组倒序的方法。
方法一:使用临时变量交换元素位置这是一种比较常见的方法,通过使用一个临时变量,交换数组中的元素位置来实现倒序。
具体实现步骤如下:```c#include <stdio.h>void reverseArray(int arr[], int size) {int temp, start = 0, end = size - 1;while (start < end) {// 交换元素位置temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}int main() {int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]); printf("原数组:");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}reverseArray(arr, size);printf("\n倒序数组:");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}return 0;}```方法二:利用指针交换元素位置除了使用临时变量交换元素位置外,我们还可以利用指针来交换数组元素。
利用指针交换元素位置的思路如下:```c#include <stdio.h>void reverseArray(int arr[], int size) {int *start = arr;int *end = arr + size - 1;while (start < end) {// 交换元素位置int temp = *start;*start = *end;*end = temp;start++;end--;}}int main() {int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);printf("原数组:");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}reverseArray(arr, size);printf("\n倒序数组:");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}return 0;}```方法三:通过递归实现数组倒序除了使用循环,我们还可以使用递归的方式来实现数组倒序。
C语言-7数组sc
下标越界是大忌! ◦ 定义:int a[10]; 那么数组元素为a[0] ~a[9] ◦ 使用大于最大下标的下标,将访问数组以外的空间。那里的数 据是未知的,系统不做下标越界检查,但可能带来严重后果
注意 数组下标从0开始
sizeof可以用来获得数组大小
C语言程序设计——算法的描述
14
SCS-SWPU
C语言程序设计——算法的描述
输出方法: 输出下标为i的数组元素: printf("%d",a[i]); 输出整个数组元素: for(i=0;i<10;i++) printf("%d",a[i]);
17
SCS-SWPU
以下数组操作格式是否正确??
1、 int n; scanf(“%d″,&n); int a[n]; 2、#define n 5 int a[n]; 3、 float a[0]; 4、 int b(2); 5、int b[4]={0};
6.1 6.2 6.3
一维数组 二维数组 字符数组与字符串
C语言程序设计——第一章 C语言概述
2
SCS-SWPU
float s; • 存放一个学生的学习成绩 • 存放一个班100个学生的成绩呢?
搜索已有知识结构:
C语言程序设计——算法的描述
3
SCS-SWPU
函数:
控制结构: 顺序 基础:
数据类型
C语言程序设计——算法的描述
25
SCS-SWPU
程序流程图如下:
0
C语言程序设计——算法的描述
26
SCS-SWPU
#include <stdio.h> #define N 6 void main( ) { int a[N],temp,i,j; for(i=0;i<N;i++) scanf("%d",&a[i]); for(j=1;j<=N-1;j++) for(i=0;i<=N-j-1;i++) if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } for(i=0;i<N;i++) printf("%4d",a[i]); printf("\n"); }
c语言--- 数组
=10×2
数组名表示数组所 1012 在内存首地址也是 a[0]的地址,是地 1014 址常量 :
1028
80
66 :
第7章 数 组
引言
一维数组 二维数组 字符数组与字符串
7.1 引言
一、数组的引入 为了便于处理一批类型相同的数据,引入了数组类型.
例:某班有40名学生,求该班成绩的平均分
#include <stdio.h> main( ) { int j , sum , s ; float ave ; sum=0; for(j=1; j<=40 ; j++) { scanf(“%d”,&s); sum=sum+s; } ave=sum/40; printf(“ave=%f”,ave); } 假设现在要保存每个学 生的成绩,那就需要40个变 量,但这样一来输入、输出、 计算都会变得繁琐,若成千 上万数据,显然不合适。 在这种情况下,我们可以 使用数组类型,声明一个数 组含有40个整型元素,每个 数组元素存放一个成绩,这 样,成绩的输入、输出、计 算就可通过循环来实现.
• 如果要对n个数据排序,就需要进行n-1轮的比较,每次都对相 邻两个数进行比较,将较大的数交换到后一个元素中。每1轮 的比较都找出未排好的数据中的最大数放在这几个数的后面。 • 例如,第1轮需要比较n-1次,在n个数中找出最大数放在数组 的最后1个元素中;
• 第2轮将对剩下的前n-1个数进行比较,需要比较(n-1)-1次,将 前n-1个数中的最大者放入数组的倒数第2个元素中; • ……以此类推,第n-1轮需要进行1次比较,将剩下的2个数中 的较大者放入a[1]中,将最小的数放入a[0]中。 • 当第n-1轮比较进行完后,所有的数据都按照升序在数组中排 列。
C语言第七章
4、strcpy(字符数组1,字符数组2):
例:main()
把“字符串2”的值拷贝到“字符串1”中。
{char str1[10]; char str2[ ]="Chinese"; strcpy(str1,str2); puts(str1); } 输出: Chinese 说明: (1)字符数组1的长度不应小于字符串2的长度。 (2)“字符数组1”必须写成数组名形式,“串2”可以是字符数 组名,也可以是一个字符串常量。如:strcpy(str1,“China”); (3)拷贝是‘\0‟一起拷贝。 (4)不能用赋值语句将一个字符常量或字符数组直接赋给一个 字符数组。 (5)可以用strcpy函数将字符串2中前面若干个字符拷贝到字符 数组1中去。 例如:strcpy(str1,str2,2);
3、部分元素赋值: int a[3][4] = {{1},{5},{9}}; 1 0 0 0 5 0 0 0 9 0 0 0
仅对a[0][0]、a[1][0]、a[2][0]赋值,编译器自动为未赋
值元素指定初值0。
4、如果对全部元素赋初值,则第一维的长度可以 不指定,但必须指定第二维的长度。 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};
[例6.6]: main() { int i; char c1[ ] = {"How are you?"}; char c2[15]; scanf("%s", c2 ); for(i=0;i<12;i++) printf("%c", c2[i] ); printf("%s", c1 ); } 程序运行时:输入:abcdefghijklmno 结果:abcdefghijklHow are you?
C语言数组1
初始化的方法:
(1)在定义数组时,对全部数组元素指定初始值。 int a[10]={1,2,3,4,5,6,7,8,9,10}; 赋值结果:
a[0] a[1] a[2] a[3] a[4] a[5] a[6 a[7] a[8] a[9]
1
2
3
4
5
6
7
8
9
10
a[0]=1;a[1]=2;a[2]=3;….; a[9]=10;
数组元素在内存中的存放 数组元素被存放在 内存中一段连续的
内存单元中
2000 a[0]
2004
2008 2012 2016
a[1]
a[2] a[3] a[4]
例如:float a[5];
数组名代表数组的首
地址,即a的值与a[0] 的地址值相同。 数组名是一个常量, 不能被赋值。
数组的初始化
数组元素在使用前, 必须进行初始化:
63.8 83.2 81.2 72.2
88.8 89.0
88.8 89.0
92.5 不交换
92.5 二趟完
0 7 88.8 6 76.0 5 63.8 4 3 2 1 63.8
1 76.0 63.8 76.0 76.0
2 63.8 83.2 81.2 72.2
3 83.2 81.2 72.2 81.2
1
2
3
4
5
6
7
8
9
10
a[0]=1;a[1]=2;a[2]=3;….; a[9]=10;
数组的初始化
注意:若数组长度与提供的初值个数不相 同,则数组长度不能省略,必须写成:
int a[10]={1,2,3,4,5};
C语言 数组1
程序编写过程: #include <stdio.h> main( ) { int i, x, a[5],flag=0 ; for ( i=0; i<5; i++ )输入数据, 赋给数组元素 scanf("%4d",a[i]); printf("Input x:"); scanf("%d",&x); 输入需查找的数 printf("\n"); for( i=0; i<5; i++ ) 逐个查找数 if ( x==a[i] ) {printf("下标值=%d\n", i); flag=1; 若找到,输出下标 break;}
fib[0]=fib[1]=1
fib 1 1 2 3 5 8 13 21 34 55
+ + + + + + + +
fib[i]=fib[i-1]+ fib[i-2]
程序编写过程: #include <stdio.h> main( ) { int i;
运行结果:
1 1 2 3 5 8 13 21 32 55
第7章
数组
常用于处理大批量数据 数据特点:存在内在联系 数组——具有相同数据类型的变量集合 这些变量都有相同名字,但下标不同 称这些变量为数组元素 数组元素在内存中连续存放 只有一个下标——一维数组 有两个下标——二维数组
本章将介绍的内容
一维数组
二维数组
字符串
一维数组
数组名 [ 下标 ]
例如: a[2],b[i],b[i+1]是合法引用