C语言程序设计第七章数组
说明 定义数组a有5个元素,大括号只提供3个初值, 则将前三个元素依次赋值,后面元素值为0 等价于:int a[5]; a[0]=1; a[1]=2; a[2]=3; a[3]=a[4]=0;
一维数组的初始化
2020年8月13日星期四
一维数组的初始化
当给全部数组元素赋初值时,可以不指定数组长度
如 可以写成
7次
用变量j来表示第i趟比较的次数,则1<=j<=n-i
第每2次趟比较33的88是a44[99j-1]66和55 a[j771]663 1177233667 2277376760 337006 97
6次
第3趟
38 49 6153 16623557 26637550 336005 76 97
5次
第4趟
else grade = 'B'; ……
数组
}
第七章 数组
主要内容
一维数组 二维数组和多维数组 字符数组和字符串
2020年8月13日星期四
一维数组
主要内容
一维数组的定义 一维数组元素的引用 一维数组的初始化 一维数组举例
2020年8月13日星期四
一维数组的定义
2020年8月13日星期四
一维数组的定义方式: 合法标识符
printf("%d", a);
} • 数组元素a[i]表示数组的第i+1个分量, i表示数组元素相对于数组起始地址的偏移量
• 引用数组元素时,根据首地址和下标数,计算出该元素的 实际地址,取出该地址的内容进行操作。
一维数组的初始化
2020年8月13日星期四
一维数组的初始化 可以在定义数组的时候,给它赋初值
一# d维efi数ne N组10举例 Enter 10 integers:
2020年8月13日星期四
m{ ain(读) 入10个整数,找出m1其2ax中3=4最105N大,6-mS值7流in、8程=9最1图1,小0av值e=、5平.5均00值00:0
int a[用N]f,oi,r循ma环x,读m入in,1s0u个m;整数到f数loa组t aa中ve;
数组元素引用格式:
例 int a[10];数组名 [下标表达式] 其中…:…下标/*表对达a式[0可] ~以a是[整9]型赋常值量*/或整型表达式
pforrin(tif=(0";%i<d=",9a;)i;++) printf("%d", a[i]);
一维数组元素的引用
分析该程序的运行结果
main() {
printf("Enter %d integers:\n", N);
for
i=0 to 9 读入数据a[i]
for(i=令0最; i<大1值0;mi+a+x和) 最小sc值anmf(in"% 以d及"m,总&a和xa=[sim]u)imn; =为suam[0=]a[0]
max = min = sum = a[0];
for(i=0; i<20; i++)
s读ca入nf2("0% hN个oac字tf"o8,u符&nc在d[!i数]);组c中
printf(读"P入lea要se查in询pu的t t字he符chcahractor what you want to search:\n");
scanf ("%c", &ch);
1次
结 果 13 27 30 38 49 65 76 97
一#de维fine数N 组10举例
2020年8月13日星期四
m{ aiinn用t()a冒[N泡], 法i, j对, t;n个数进行排序:
printfn("个In数pu比t %较d大nu小m共be进rs:行\n了", nN)-;1趟比较
for(i=s用c0a;变ni<f(量="%Ni来d-1"表;,&i+示a[+i趟]));,则1<=i<=n-1
如 int a[3]; printf("%d,%d,%d",a[0], a[1], a[2]);
0, 64, 3117
Error … : Too many initializers in function main
若所赋初值数多于定义的数组长度时,系统报错
如
int a[3]={1, 2, 3, 4, 5};
3388 441993 1144233997 2244377990 334009 65 76 97
4次
第5趟
331883 1133233887 223377880 33080 49 65 76 97
3次
第6趟
1133 2277 3300 38 49 65 76 97
2次
第7趟 1133 2277 30 38 49 65 76 97
for(i=在1第; i<趟=比N较-1中; i+,+共) 比较了n-i次
f{用or变(j=量1ijf;来(ja<表[=j示-N1第-]i>;ia趟j+[j比+]))较的次数,则1<=j<=n-i 每次比{较的是ta=[aj-[1j-]1和];a[j] 输入N 个数给a[0] 到 a[N-1]
4 a[4]
5 a[5]
注意:不能使 编译时分用配a[内6存] ,并且是连续的
内存字节数= 数组元素个数*sizeof(元素数据类型)
到a[5]结束
一维数组的定义
例 int i=15;
int a[i];
不能使用变量定义数组元素 只能使用整型常量
#define SIZE 10 main() {
P int a[SIZE], b[10];
数组类型说数明组符a共有数6组个名元[素常量表达式];
数例组元in素t 的a[[类6]]型:; 下标运算符 不能用(表) 示元素个数
单目运算符
只能是整型常量
a
0优先级a[(01]) 左结数合组元素从也a[表0示]开数始组长度
1 a[1]
数组名表示该2数组所a占[2的] 内 址常存量单元的首3地址,a[是3地]
一维数组举例
2020年8月13日星期四
所有计算过的中间值都无法
可以取出数组中的任意
main()用数组求Fibonacci 数列的前m4a0i再n个(次)数使:用,剩下的只有最后
{
一个元素f[i]再次使用
int Fi;1 = 1 (n=1)
int f[40]={1,1};
F2 = 1 (n=2)
for(i=2; i<40; i++)
for(i=用1f;oi<r循10环; ,i+实+)现当i从1~9时:
{ if若(aa[[ii]]>大m于axm)axm,amx=axa[=i]a;[i]
if (a[i]<min) min=a[i];
s若uma[=i]小su于mm+ina[,i]m; in=a[i]
for i=1 to 9
max<a[i]
} 若已经检查到c[19]且c[19]!=ch,则输出“未找到”
}
一维数组举例
2020年8月13日星期四
用冒泡法对n个数进行排序:
思路:相邻的两个数比较,将大的调到后头 过程:
比较第一个数和第二个数,把较大的数放后面; 然后比较第二个数与第三个数,仍把较大的数放后面; 依次类推,直至第n-1个数和第n个数比较完为止 —— 结果最大的数被安置在最后的位置上, 这就是第一趟冒泡排序。 对前n-1个数进行第二趟冒泡排序 结果使次大的数被安置在第n-1个元素位置上 重复上述过程,共经过n-1趟冒泡排序后,排序结束
如 int a[5]={1, 2, 3, 4, 5};
说明
将数组元素的初值依次放在一个大括号内
等价于:
int a[5]; for (i=0; i<5; i++) a[i]=i+1;
一维数组的初始化
2020年8月13日星期四
一维数组的初始化 可以只给部分数组元素赋初值
如 int a[5]={1, 2, 3};
第七章 数组
提ma出in()数问组题是一种构造数据类型
2020年8月13日星期四
{ in要t s求1数,输s组2入,:1…有0,0序s个10数学0据,生a的v的e集;成合绩,,用根数据组他名们标的识平均分来划分等级
char大元gr于素ad等:e;于是平构均造分数1组0的分基的本为组A级成成份,
它们应属同一数据类型,用数组名和下标确定 scan小f("于%平f"均, &分s11)0; 分的为C级
一• 维n个数数组比较举大例小共进行了 n-1 趟比较
2020年8月13日星期四
用变量i来a[表0] 示a趟[1],则a[21] <a=[3i<] =an[4-]1 a[5] a[6] a[7]
• 在第i趟比较中,共比较了 n-i 次
第1趟
443998 33448899 6655 979767 7799166773 119923377 29932770 393070
{ 两个数列的值f1和f2
long f10=1, f2=1 1; f[0]
int i; 1
1
f[1]
for(i=12; i<=220; i++f)[2]
Fnf[=i]=Ffn[-1i-+2F]+n-f2[i-(1n];≥3)
{
3
3
f[3]