1 //?生成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相 加,放到另外?一个数组中 2 #import <Foundation/Foundation.h> 3 4 int main(int argc, const char * argv[]) 5 { 6 7 int num1[10]={0},num2[10]={0},num3[10]={0}; 8 for (int i = 0; i<10; i++) { 9 num1[i]=arc4random()%21+20; 10 num2[i]=arc4random()%21+20; 11 num3[i]=num1[i]+num2[i]; 12 printf("%d + %d = %d\n ",num1[i],num2[i],num3[i]); 13 } 14 printf("\n"); 15 return 0; 16 }
一维数组,数组排序,字符数组
一、一维数组
数组:相同数据类型的成员组成的一组数据
数组里只能放相同数据类型的数据
类型说明符 数组名[常量表达式] ={值1,值2...};
int a[3]={5,3,0};//int [3]为数据类型,a为变量名
数组元素的访问:数组名+下标。
数组下标:数组元素在数组中的序号。从0开始,到数组总个数-1;
下标可以是常量也可以是变量。int a[5]={2,7,4,3,0}; a[0]=2,a[3]=3;
1 //?生成?一个具有20个元素的数组,每个元素的取值范围是30-70之间,求数组元素的和。 2 #import <Foundation/Foundation.h> 3 4 int main(int argc, const char * argv[]) 5 { 6 7 //20个元素的数组 8 int number[20]={0},sum = 0; 9 //随机数 arc4random()%41+30 10 for (int i = 0; i<20; i++) { 11 number[i]=arc4random()%41+30; 12 printf("%d ",number[i]); 13 sum = sum +number[i]; 14 } 15 printf("\n%d",sum); 16 return 0; 17 }
//?生成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相 加,放到另外?一个数组中 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { int num1[10]={0},num2[10]={0},num3[10]={0}; for (int i = 0; i<10; i++) { num1[i]=arc4random()%21+20; num2[i]=arc4random()%21+20; num3[i]=num1[i]+num2[i]; printf("%d + %d = %d\n ",num1[i],num2[i],num3[i]); } printf("\n"); return 0; }
注意:系统不会检测数组元素的下标是否越界,编程时,必须保证数组下标不能越界
数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环。
数组不能参加运算,只能对单个元素进行运算。
二、数组排序
冒泡排序:
1 //随机输出0-30的数,并按从小到大排序 2 #import <Foundation/Foundation.h> 3 4 int main(int argc, const char * argv[]) 5 { 6 7 int num1[10]={0}; 8 for (int i = 0; i<10; i++) { 9 num1[i]=arc4random()%31; 10 printf("%d ",num1[i]); 11 12 }printf("\n"); 13 for (int i = 0; i<9; i++) { 14 for (int j = 0; j<9-i; j++) { 15 if (num1[j]>num1[j+1]) { 16 // num1[j]=num1[j]^num1[j+1]; 17 // num1[j+1]=num1[j]^num1[j+1]; 18 // num1[j]=num1[j+1]^num1[j]; 19 int temp = num1[j]; 20 num1[j] = num1[j+1]; 21 num1[j+1] = temp; 22 } 23 } 24 } 25 for (int i = 0; i<9; i++) { 26 printf("%d ",num1[i]); 27 } 28 return 0; 29 }
三、字符数组
用于存放字符变量的数组称为字符数组
char c[10]={‘i‘,‘p‘,‘h‘,‘o‘,‘n‘,‘e‘};或者 char c[10]="iphone";
有‘\0’结束标识的字符数组也称为字符串。 系统提供了很多字符串处理函数
strlen()计算字符串长度 strcpy()字符串拷贝 strcat()字符串拼接 strcmp()字符串比较
字符串长度:字符串的有效长度,不包含‘\0’
字符串所占的空间至少要比字符串长度大1,因为字符串以‘\0’表示结束,系统提供的字符串处理函数都是根据‘\0’来判断字符数组结束
1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 char name[20]="zhangsan",name1[20]="lisi"; 7 // printf("%s length is %lu",name,strlen(name));//字符串长度 8 // strcpy(name1, name);//字符串拷贝 9 // strcat(name, name1);//字符串拼接输出zhangsanlisi 10 // printf("%s",name); 11 int result = strcmp(name, name1); 12 printf("%d\n",result); 13 if (result>0) { 14 printf("%s 大于 %s",name,name1); 15 }else if(result==0) { 16 printf("%s 等于 %s",name,name1); 17 }else { 18 printf("%s 小于 %s",name,name1); 19 } 20 21 return 0; 22 }
数组通常与循环结合使?用。
数组下标从0开始,最?大到数组容量-1。
一定要注意下标越界问题。
字符串数组在定义的时候一定要多留一个元素位置留 给’\0’。