您的位置:首页 > 编程语言 > C语言/C++

c/c++第十天

2016-08-04 19:22 218 查看
二维数组初始化形式:

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

如:

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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: