集成数组的初始化
int a[]={2,4,6,5,68,9,8,56,6};
- 直接用大括号给出数组中所有元素的初始值
- 不需要给出数组的大小,编译器来数
sizeof(a)/sizeof(a[0])
sizeof(a)得到数组整个的字节数的大小
sizeof(a[0])得到数组中单个元素所占的字节
- 集成初始化时的定位
int a[10]={[0]=2,[2]=3,6,}
//{2,0,3,6,0,0,0,0,0,0}
数组的赋值
- 数组本身不能被赋值,因此要将一个数组赋值给另一个数组必须采用遍历
for(i=0;i<length;i++)
{
b[i]=a[i];
}
数组运算
#include<stdio.h>
int search(int key,int a[],int length)
{
int ret=1;
int i;
for(i=0;i<length;i++){
if(a[i]==key){
ret=i;
break;
}
}
return ret;
}
int main(void)
{
int a[]={2,4,6,7,1,3,5,9,11,13,23,14,32};
int x;
int loc;
printf("请输入一个数字:");
scanf("%d",&x);
loc=search(x,a,sizeof(a)/sizeof(a[0]));
if(loc!=-1){
printf("%d在%d个位置上",x,loc);
}else{
printf("%d不存在",x);
}
return 0;
}
数组作为函数的参数时:
- 不能在[]中给出数组的大小
- 不能再用sizeof来计算数组的元素个数
数组作为函数参数时,必须用另一个参数来传入数组的大小
数组构建素数表
//建立素数表
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
const int maxNumber = 100;
int isPrime[100];
int i;
int x;
for (i = 0;i < maxNumber;i++) {
isPrime[i] = 1;
}
for (x = 2;x < maxNumber;x++) {
if (isPrime[x]) {
for (i = 2;i * x < maxNumber;i++) {
isPrime[i * x] = 0;
}
}
}
for (i = 2;i < maxNumber;i++) {
if (isPrime[i]) {
printf("%d\t", i);
}
}
printf("\n");
}