5.查找数组是否包含指定元素
#includestdio.h
intmain(){
//随便整一个int类型的数组
intscores[]={,,23,,4,,,,,,43,34,};
//计算数组长度
intlength=sizeof(scores)/sizeof(int);
//需要找的数
intzhaoNum=;
for(inti=0;ilength;i++){
if(scores[i]==zhaoNum){
printf(找到了\n);
break;
}
if(i==length-1){
printf(没找到\n);
}
}
return0;
}
6.查找指定元素在数组中第一次出现的下标
#includestdio.h
intmain(){
//随便整一个int类型的数组
intscores[]={,,23,,4,,,,,,43,34,};
//计算数组长度
intlength=sizeof(scores)/sizeof(int);
//需要找的数
intzhaoNum=;
for(inti=0;ilength;i++){
if(scores[i]==zhaoNum){
printf(下标为:%d,i);
break;
}
if(i==length-1){
printf(没找到\n);
}
}
return0;
}
7.选择排序
#includestdio.h
voidselectSort(intarr[],intlength){
//外层控制比较的轮数
for(inti=0;ilength-1;i++){
//内层控制每轮比较的次数
for(intj=i+1;jlength;j++){
//当每轮循环的第一个元素小于后面的元素时
if(arr[i]arr[j]){
//就交换他们的位置
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[i]^arr[j];
}
}
}
}
intmain(){
intarr[]={1,,54,,4,2,,4,,34,34,36,4,24,};
//计算数组长度
intlength=sizeof(arr)/sizeof(int);
//调用函数对数组进行排序
selectSort(arr,length);
//遍历打印出排序后的数组
for(inti=0;ilength;i++){
printf(%d,arr[i]);
}
return0;
}
双色球案例练习:
#includestdio.h
#includestdlib.h
intcha(intarr[],intlength,intzhaoNum){
//遍历数组
for(inti=0;ilength;i++){
//判断数组中有没有要查找的数据
if(arr[i]==zhaoNum){
//有则返回1
return1;
}
if(i==length-1){
return0;
}
}
return0;
}
intmain(){
intarr[6]={0};
intlength=sizeof(arr)/sizeof(int);
for(inti=0;ilength;i++){
//随机生成1-33的整数
intnum=arc4random_uniform(33)+1;
//调用函数判断数组中是否存在,返回0则不存在
if(cha(arr,length,num)==0){
//不存在就存进数组
arr[i]=num;
}else{
//存在就重新生成
i--;
}
}
//打印出随机生成的6个红球
for(inti=0;ilength;i++){
printf(%d,arr[i]);
}
return0;
}
八、数组作为函数的参数
如果函数的形参是一个数组,在调用这个函数的时候,也必须要为这个函数传入一个相同类型的数组,并且是传入数组的地址。然后函数操作的就是我们传进去那个数组,改变数组中的元素,也就是改变传入的那个数组的元素。
#includestdio.h
voidtest(intnum[]){
num[0]=10;
}
intmain(){
//随便整一个int类型的数组
intscores[]={,,23,,44,};
//调用函数,传入数组名,数组名就是数组的地址
test(scores);
printf(%d\n,scores[0]);//打印10
return0;
}
注意:当数组作为函数的参数的时候,传入的是数组的地址,一个地址占据8个字节。但一个数组如果占据的内存大于8字节,将不能在函数里通过sizeof计算数组的长度。而且函数里的形参是去内存中申请8个字节存储指针变量,并将传入的数组地址赋值给这个指针变量。
#includestdio.h
voidtest(intnum[]){
printf(%p\n,num);
}
intmain(){
//随便整一个int类型的数组
intscores[]={,,23,,44,};
//调用函数,传入数组
test(scores);
printf(%p\n,scores);
return0;
}
我们会发现函数中打印的数组地址和我们声明的数组的地址是一致的