c/c++第十天

来源:互联网 发布:eos utility mac安装 编辑:程序博客网 时间:2024/05/16 11:21

二维数组初始化形式:

数组类型 数组名[行数长度][列数长度]={数组元素};

如:

int a[2][2]={{1,2},{3,4}};

也可以不用{}把数组元素隔开,如:

int a[2][2]={1,2,3,4};

这样的话,依次把第一个值符给a[0][0],第二个值赋给a[0][1],第三个值赋给a[1][0],第四个值赋给a[1][1].

a[0][0]=1;a[0][1]=2;a[1][0]=3;a[1][1]=4;


二维数组定义时可以不写第一位长度,但是第二列长度不可以忽略。

传递数组参数是也一样。

#include<stdio.h>
int fun(int a[][2]){ //要写第二维长度
printf("%d\t%d\n%d\t%d",a[0][0],a[0][1],a[1][0],a[1][1]);
}
void main(){
int a[2][2]={1,2,3,4};
fun(a);
getchar();
}



/*输入10个数找最大值*/
#include<stdio.h>
void main(){
int a[10],x,max=0;
for(int i=0;i<=9;i++){
scanf("%d",&x);fflush(stdin);
a[i]=x;
}
for(int i=0;i<=9;i++){
if(a[max]<a[i]){
max=i;
}
}
printf("最大值:%d",a[max]);
getchar();
}



二分查找

要是按照从小到大的顺序进行排序

/*给数组赋值10个随机数,输入一个数求这个数下标*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int search(int a[],int length){
int start=0,end=length-1,key;
scanf("%d",&key);fflush(stdin);
while(start<=end){
int mid=(start+end)/2;
if(a[mid]==key){
return mid;
}else{
if(a[mid]<key){
start=mid+1;
}else{
end=mid-1;
}
}
}
return -1;
}
void main(){
int a[10];
srand((unsigned)time(NULL));
for(int i=0;i<=9;i++){
a[i]=rand()%100+1;
}
for(int j=0;j<=sizeof(a)/sizeof(int)-2;j++){
for(int k=1;k<=sizeof(a)/sizeof(int)-1;k++){
if(a[k-1]>a[k]){
a[k-1]=a[k-1]^a[k];
a[k]=a[k-1]^a[k];
a[k-1]=a[k-1]^a[k];
}
}
}
for(int i=0;i<=9;i++){
printf("%d\t",a[i]);
}
int c=search(a,sizeof(a)/sizeof(int));
if(c!=-1)printf("数组下标:%d",c);
else printf("未找到");
getchar();
}

0 0