随风而动,随遇而安......
C语言一维数组-学习十二
02/03
本文最后更新于
2022年08月13日,已超过
849天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
数组
- 数组是一组有有序数据的集合,数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号。
- 数组中的每一个元素都属于同一个数据类型。
- 数组必须先定义后使用。
定义
类型符
数组名
[常量表达式]
一维数组
定义的一般形式
类型符
数组名
[常量表达式];
- 例如:
int a[4+6];
int b[10];
引用数组元素的表示形式
数组名
[下标]
-例如:a[1] = 10;
a[0]=a[5]+a[7]-a[2*3];
- 注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值
数组的复制
#include<stdio.h>
void main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 }, b[10];
for (int i = 0; i < 10; i++){
b[i] = a[i];
printf("%d ", b[i]);
}
}
一维数组的赋值
给数组赋值的方法:
- 用赋值语句对数组元素逐个赋值;
- 采用初始化赋值;
- 动态赋值(scanf())。
数组初始化赋值:
- 在数组定义时给数组元素赋初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。
一般形式
类型说明符 数组名[常量表达式] = {值,值,...,值};
- 例如:
int a [10] ={0,1,2,3,4,5,6,7,8,9};
int a [10] ={0,1,2,3,4};
如果想使一个数组中全部元素值为0。
- 可以写成:
int a[10]={0,0,0,0,0,0,0,0,0,0};
或int a[10]={0};
- 可以写成:
在对全部数组元素赋初值时,可以不指定数组。
- 例如:
int a[5]={1,2,3,4,5};
可以写成:int a[]={1,2,3,4,5};
- 例如:
动态赋值
- 可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
- 例如:
for( i=0;i<10;i++)
scanf_s( "%d", &a[il);
例子
对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输
#include<stdio.h>
void main()
{
int a[10], i;
for (i = 0; i < 10; i++)
a[i] = i;
for (i=9; i >= 0 ; i--)
printf("%d ",a[i]);
}
将数组中各元素交换,将数组的第一个元素与最后一个交换,第二个元素与倒数第二个交换,以此类推。
#include<stdio.h>
void main()
{
int a[10], i,j;
for (i = 0; i <= 9; i++)
a[i] = i;
for (i = 0; i < 10 / 2; i++) {
j = a[i];
a[i] = a[9 - i];
a[9 - i] = j;
}
for(i=0;i<=9;i++)
printf("%d ",a[i]);
}
求一维数组中最大元素及其下标。
#include<stdio.h>
void main()
{
int a[10], i,j,max;
for (i = 0; i < 10; i++)
scanf_s("%d",&a[i]);
max = a[0];
for (i = 0; i <10; i++)
if (a[i]>max){
max = a[i];
j = i;
}
printf("max=%d,j=%d\n", max, j);
}
用数组处理求Fibonacci数列问题
#include<stdio.h>
void main()
{
int i;
int f[10] = { 1,1 };
for (i = 2; i < 10; i++)
f[i] = f[i - 2] + f[i - 1];
for (i = 0; i < 10; i++)
{
printf("%12d\n",f[i]);
}
}
练习
练习
1、以下对一维数组a的正确说明是___。
(A)int a(10);
(B)int n=10,a[n];
(C)int n;scanf("%d",&n);
(D)
#define SIZE 10
int a[SIZE];
2、以下能对一维数组a进行正确初始化的语句是___。
(A) int a[10]= (0,0,0,0,0);
(B)int a[10] = {};
(C)int a[] = {0};
(D)int a[10] = {10*1};
3、当从键盘输入18并回车后,下面程序的运行结果是___。
#include<stdio.h>
main()
{
int x, y, i, a[8], j, u, v;
scanf_s("%d", &x);
y = x;
i = 0;
do {
u = y / 2;
a[i] = y % 2;
i++;
y = u;
}while (y >= 1);
for (j = i - 1; j >= 0; j--)
printf("%d", a[j]);
}
(A)10010
(B)10001
(C)01001
(D)00110
答案
1、D 2、C 3、A