首页 > 代码库 > IOS学习笔记---C语言第四天

IOS学习笔记---C语言第四天

 

 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’。