首页 > 代码库 > C语言--一维数组,字符数组

C语言--一维数组,字符数组

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
#pragma mark----------数组
   //数组是容器,相同数据类型
    //构造类型
    
//    int  a[3]={5,2,0};
    //类型
//    int[3];
    //变量名
//    a;
    //初值
//    {5,2,0};
    
    
//    int a[4] = {9,8,7,6};
//    float b[6] = {2.5,3.14};
//    char c[3] = "abc";
//    char d[3] = {'a','b','c'};
//    BOOL e[4] = {YES,NO};
    
    //a[0]+a[1]操作数组下标取值赋值
    
    //前有类型修饰符,代表数组,没有类型修饰符,代表下标
    
    //1.生成一个包含20个元素数组,数组的值取值在30到70之间,并求出数组元素的和
//    int sum = 0, a[20]={0};
//    for (int i = 0; i<20; i++) {
//        a[i]=arc4random()%41+30;
//        printf("%d ",a[i]);
//        sum = sum + a[i];
//    }
//    printf("\nsum=%d",sum);
    //2.复制
//    int a[20]={0},b[20]={0};
//    for (int i = 0; i<20; i++) {
//        a[i]=arc4random()%41+30;
//        printf("%d ",a[i]);
//        b[i]=a[i];
//    }
//    printf("\n");
//    for (int j = 0; j<20; j++) {
//        printf("%d ",b[j]);
//    }
    //3.生成两个数组,然后两个数组对应下标元素相加,放到第三个数组中
//    int a[10]={0},b[10]={0},c[10]={0};
//    for (int i = 0; i<10; i++) {
//        a[i]=arc4random()%(40-20+1)+20;
//        b[i]=arc4random()%(40-20+1)+20;
//        c[i]=a[i]+b[i];
//          printf("%d + %d = %d\n",a[i],b[i],c[i]);
//    }
//    printf("\n");
//    for (int j = 0; j<10; j++) {
//            printf("%d ",b[j]);
//    }
//    printf("\n");
//    for (int j = 0; j<10; j++) {
//        printf("%d ",c[j]);
//    }
    
#pragma mark--------------1
    //注意,
    //1,系统不会检测数组元素的下标是否越界,编程时,必须保证数组下标不能越界
    //2,数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常会用到数组的地方,就会用到循环(循环就是为了数组而生)
    
//    scanf("%d",&a);
//    getchar() 打印123def 结果是1
//    printf(""),打印123def 结果是123
    
    /**
     *  从键盘缓冲区读取数据
     */
    
    
//    int a[10]={0};
//    for (int i = 0; i<10; i++) {
//        a[i]=arc4random()%31;
//        printf("%2d ",a[i]);
//    }
//    for (int i = 0; i<10-1; i++) {
//        for (int j = 0; j<10-1-i; j++) {
//            if (a[j]>a[j+1]) {
//                int temp = a[j];
//                a[j]=a[j+1];
//                a[j+1]=temp;
//            }
//        }
//    }
//    printf("\n");
//    for (int i =0; i<10; i++) {
//        printf("%-2d ",a[i]);
//    }
    
//    int a[10]={0};
//    for (int i = 0; i<10; i++) {
//        a[i]=arc4random()%(40-20+1)+20;
//        printf("%d ",a[i]);
//    }
//    for (int i = 0; i<10-1; i++) {
//        for (int j = 0; j<10-1-i; j++) {
//            if (a[j]>a[j+1]) {//max<a[i],min>a[i]
//                int temp = a[j];
//                a[j]=a[j+1];
//                a[j+1]=temp;
//            }
//        }
//    }
//    printf("\n");
//    for (int i =0; i<10; i++) {
//        printf("%d ",a[i]);
//    }
    
//    strlen("hello");
#pragma mark--------------2
    //字符串长度  比如hello,字符串长度5
//    printf("%lu",strlen("hello"));
    //字符串所占空间 比如char[10]="hello" 字符串所占空间10;
//    char c[] = "hello";
//    printf("%lu",sizeof(c));
//    for (int i = 0; i<sizeof(c); i++) {
//        printf(" %c ",c[i]);
//    }
//    printf("\n%s ",c);
    //等同于下面
    //%s,从首地址开始打印,直到打到/0结束
//    char d = 0;
//    int i = 0;
//    while ((d = c[i]) != '\0') {
//        printf("%c",d);
//        i++;
//    }

    //strlen,测量字符串长度
    //strcpy
    //strcmp,比较
    //strcat//拼接
//    char name[20]="zuoyoudong";
//    printf("%s length = %lu",name,strlen(name));
//    int i = 0;
//    while (name[i] !='\0') {
//        printf("%c",name[i]);
//        i++;
//    }
//    printf("%d",i);
    
    
//    char z[]="zuo";
//    char y[5]="yi";
//    strcpy(y, z);
//    printf("%s",strcpy(y, z));
    //1,"hello",2,"abcdefghi",3,拷贝,hello\0ghi

#pragma mark--------------3
//    char str1[50] = "hangsan";
//    char str2[10] = "lisi";
//    strcpy(str2, str1);//前面目的串,后面来源串,const只可读,不可赋值
//    printf("%s",str2);
    
    
    //字符串拼接strcat 注意:是否有足够的空间,放长度
//    strcat(str1, str2);//带const修饰是不变的
//    strcat(str1, str2);
//    printf("%s",str1);
    
    
    //字符串比较strcmp(按ASC码值求大小)
//    int result = strcmp(str1, str2);
//    printf("%d",strcmp(str1, str2));
//    printf("%d",result);
//    if (result>1) {
//        printf("\n%s 大于 %s",str1,str2);
//    }else if (result==0){
//        printf("%s 等于 %s",str1,str2);
//    }else{
//        printf("\n%s 小于 %s",str1,str2);
//    }
    
    
    //strlen
    //strcmp
    //strcat
    //strcpy
    
    
    
    //查找字符串中的空格数
//    char str[50] = "I love iOS,i want an iPhone5s";
//    int i = 0,count = 0;
//    while (str[i]!='\0') {
//        char c = str[i];
//        if (c ==' ') {
//            count++;
//        }
//        i++;
//    }
//    printf("%d",count);

#pragma mark--------------4
    //把字符倒转过来
    //解题思路!
    //凡是交换要定义第三方temp
    char str1[]="hello";
    char str2[5]=" ";
    long length = strlen(str1);
//    printf("%lu",length);
    printf("%lu",sizeof(str1));
//    long length =strlen(str1);
//    printf("%lu",length);
//    int  i = 0;
//    while (str1[i] !='\0') {
//        char temp = str1[i];
//        str1[i]=str2[i];
//        str2[i]=temp;
//        
//    }
//    printf("%s",str2);
//    for (int i = 0; i<sizeof(str1); <#increment#>) {
//        <#statements#>
//    }
//#pragma mark--------------5绝对值
//#pragma mark--------------6for循环
//#pragma mark--------------7作业