在C语言中只能逐个地使用下标变量,而 不能一次引用整个数组 例如,输出有10个元素的数组必须使用循 环语句逐个输出各下标变量: for(i=0:i<10:i++) printf("%d",a[i〕) 而不能用一个语句输出整个数组。 下面的写法是错误的: printf(" %d",a)
在C语言中只能逐个地使用下标变量,而 不能一次引用整个数组。 例如,输出有10个元素的数组必须使用循 环语句逐个输出各下标变量: for(i=0; i<10; i++) printf("%d",a[i]); 而不能用一个语句输出整个数组。 下面的写法是错误的: printf(" %d",a);
713一维数组的初始化 数组初始化是指在数组定义时给数组元素赋予初值 初始化赋值的一般形式为: 类型说明符数组名[常量表达式]={值,值…值}; 其中在{}中的各数值即为各元素的初值,各值之间用 逗号间隔。 例如: inta[10]={01,2,34,5,6789} 相当于a[]=0:q1]=1∷a[9]=9
7.1.3 一维数组的初始化 数组初始化是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为: 类型说明符 数组名[常量表达式]={值,值……值}; 其中在{ }中的各数值即为各元素的初值,各值之间用 逗号间隔。 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1;...a[9]=9;
C语言对数组的初始化赋值还有以下几点规定: 1)可以只给部分元素赋初值 当〔}中值的个数少于元素个数时,只给前面部分元素 赋值,其余自动赋O值。 例如:inta[10]={0,1,2,3,4] 2)只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋1值,只能写为: inta[10]={1,1,1,1,1,1,1,1,1,1} 而不能写为:inta[10]=1 但全部赋值为O时可以写作inta[10]=0} 3)如给全部元素赋值,则在数组说明中,可以不给出数 组元素的个数 例如:inq[5]={1,2,3,4,5 可写为:inta[={1,2,345}
C语言对数组的初始化赋值还有以下几点规定: 1) 可以只给部分元素赋初值。 当{ }中值的个数少于元素个数时,只给前面部分元素 赋值,其余自动赋0值。 例如: int a[10]={0,1,2,3,4}; 2) 只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋1值,只能写为: int a[10]={1,1,1,1,1,1,1,1,1,1}; 而不能写为:int a[10]=1; 但全部赋值为0时可以写作int a[10]={0}; 3) 如给全部元素赋值,则在数组说明中,可以不给出数 组元素的个数。 例如: int a[5]={1,2,3,4,5}; 可写为: int a[]={1,2,3,4,5};
714一维数组程序举例 例1:用数组来处理求 Fibonacci数列问题。(73c) intf[20]={1,1]: for(i=2i<20:i++) f[]=f[i-1]+fi-2]: 例2:用起泡法将10个整数由小到大排序。(72C) 起泡法的思路:将相邻两个数比较,将小的交换到前面。 fo(=1:=9*) for(i=1;i<=10-j if(@[>a[i+1{a[]:a[i=a[+1]a[i+1]=t} 结论:若有n个数,则要进行n-1趟比较。 在第1趟比较中,要进行η1次两两比较; 在第j趟比较中,要进行nj次两两比较;
例1:用数组来处理求Fibonacci数列问题。(l7_3.c) int f[20]={1,1}; for ( i=2; i<20; i++) f[i]=f[i-1]+f[i-2]; 7.1.4 一维数组程序举例 例2:用起泡法将10个整数由小到大排序。(l7_2.c) 起泡法的思路:将相邻两个数比较,将小的交换到前面。 结论:若有n个数,则要进行n-1趟比较。 在第1趟比较中,要进行n-1 次两两比较; 在第 j 趟比较中,要进行n-j 次两两比较; for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}
【例75】用比较法将数组元素按从大到小的顺 序输出(75c) for(=0<10:i+) p=i: q=a[i] for(j=i+1<10+ if(q<[ p=j: q=a[j]: y if(il=P) [s=a[i]: a[i]=a[p]: a[p]=s: y printf %d,a[iD:
【例7.5】用比较法将数组元素按从大到小的顺 序输出 /*(l7_5.c)*/ for(i=0;i<10;i++) { p=i;q=a[i]; for(j=i+1;j<10;j++) if(q<a[j]) { p=j;q=a[j]; } if(i!=p) {s=a[i]; a[i]=a[p]; a[p]=s; } printf("%d",a[i]); }