手记

IOS-C基础语法02

//字符数组,存储字符的数组
char str1[7] = {'h','e','l','l','o','a','\0'};
//打印下标为3的字符
printf("%c\n",str1[3]);
//将小写的o改为大写的O
str1[4] = 'O';
printf("%s \n",str1);
//定义字符串--
//字符串 本身就都是字符数组,只是字符串的结尾是以\0来结束的,如果在字符数组中也设置了\0那么此数组也可以当做字符串来输出

    char str2[]="Hello World";    printf("%s \n",str2);   
    //来列举字符串的情况//1.设置元素个数大于实际元素的个数
    char str3[10]={'r','s','y','q'};        printf("%s   \n",str3);    //2.手动设置\0
        char str4[] = {'h','e','\0'};        printf("%s  \n",str4);   
   
    //##########字符串操作函数
    //计算字符串长度,以\0结束的标识
    char string1[]="you are my love";    //注意长度属于计算类型,但是>=0的  strlen只能用来计算字符串
    unsigned long strLenght = strlen(string1);   // printf("%lu \n",strLenght);
    //字符串拼接,将一个字符串拼接给另一个字符串
    //字符串2的内存必须要给大
    char string2[30] = "Wuli xiao fan";    char string3[] = "World";    strcat(string2, string3);//将字符串3拼接到2后面
    printf("%s \n",string2);   
    //长度不用考虑容量,但是字符串拼接和拷贝必须注意变量内存问题
    //3.字符串拷贝
    strcpy(string2, string3);//后面的复制到前面
    printf("%s \n",string2);   
    //4.比较两个字符串对应位置的字符,比较的是字符串的整数值,对应位置的相减,结果不为0就结束比较
    char s1[]="abcde";    char s2[]="bbcdf";    int result = strcmp(s1, s2);//前-后,,,一旦不一样就停止
    printf("差值为%d  \n",result);   
    //练习1:已知一个字符串,计算出字符串中的空格的数量
    char ss[]="slsl lplp lp lpp lpl";//32  回车10
     unsigned long strLenght1 = strlen(ss);    int count=0;    for (int i=0; i<strLenght1; i++) {        if (ss[i] == ' ') {
            count++;
        }
    }    printf("%d \n",count);
}return 0;

//1.数组:帮助创建多个变量
//缺点:数组中只能存储相同类型的数据
//数组定义的规则
//数据类型 数组名[元素个数] = {值1,值2,值3....}
//注意:数组的元素个数只能为整型常量,不要写变量
//开始写
int array[5] = {2,5,89,10,6};

    char a[4] = {'i','h','k','l'}; // 4个字节
    //2.可以不设置数组个数,系统会按照数组的赋值自行分配
    short b[] = {9,80,6,9};//默认就是占8个字节的空间
   
    //函数sizeof()可以帮助计算变量在内存中占用的字节 用lu输出 unsigned--(-127~128)无符号默认正值

//        统计数据 无符号
//lu 无符号长整型  unsigned long
printf("%lu \n",sizeof(array));
printf("%lu  \n",sizeof(b));

    //制定数组元素的个数,所给的数组赋的值得个数必须,小于等于元素个数  只要保证数组不越界

//        int c[5] = {90,8,7,9,88,9,99};
//        printf("%d\n",c);

    //3.数组的下标
    //下标从0开始,最大下标就是元素个数减1
    //下标意义:就是帮助准确找到某一个元素
    //使用规则:数组名[元素下标]
    printf("%d \n",array[2]);    //修改
    array[2] = 2222;    printf("%d \n",array[2]);   
    //数组的输出,依赖循环
    //通过循环遍历数组的每一个下标,来取出数组的值
    //注意 初始化变量值要从0开始
    for (int i  = 0; i < sizeof(array) / 4; i++) {        printf("&&%d***\n",array[i]);
    }    //随机数----arc4random()  中间数:(大区间-小区间+1)+小区间
    int num1 = arc4random()%(90-55+1)+55;    printf("随机数为:%d\n",num1);   
    //定义整形数组,包含10个元素,元素的值范围[30,70],数组的初始值是0.给数组赋随机值,并求和还有平均数
    int a1[10] = {0},sum = 0,arg=0.0;    for (int i = 0; i<10 ; i++) {
        a1[i] = arc4random() % (70 - 30 + 1) + 30;        printf("数组%d \n",a1[i]);
        sum += a1[i];
        arg=sum / 10.0;
    }   
    printf("和为%d \n 平均值%d \n",sum,arg);    //l2 有两个元素的个数为10整型数组a和b(数组个自定义)数组a中的元素随机赋值[20,40],然后将数组a的元素赋值到b中
    int a2[10],b2[10];    for (int i = 0; i < 10; i++) {
        a2[i] = arc4random() % (40-20+1) +20;       printf("a2   %d\n",a2[i]);
        b2[i] = a2[i];        printf("b2   %d\n",b2[i]);
    }   //输出打印,数组之间不能相互赋值也不能相互打印

//        for (int i = 0; i<10; i++) {
//               printf("a2   %d  %db2 \n",a2[i],b2[i]);
//        }
//3.元素个数为10的整形数组,元素赋值随机的范围[30,70],求数组中的最小值和最大值
int a3[10],min=70,max=0;
//        for (int i = 0; i<10; i++) {
//            for (int j = 0; j<10; j++) {
//                a3[i] = arc4random() % (70-30+1) + 30;
//              a3[j] = a3[i+1];
//                if (a3[i]>a[j]) {
//                    a[j] = a3[i];
//                    max = a[j];
//
//                }
//        }
//
//        }
//          printf("max===%d  \n",max);
//
//
//        for (int i = 0; i<10; i++) {
//
//                a3[i] = arc4random() % (70-30+1) + 30;
//                if (a3[i]< min) {
//                    min = a3[i];
//
//                }
//                           }
//
//             printf("min====%d  \n",min) ;

    for (int i=0; i<10-1; i++) {        for (int j=0; j<10-i-1; j++) {
             a3[i] = arc4random() % (70-30+1) + 30;            if (a3[j]>a3[j+1]) {                int temp = a3[j];
                a3[j]= a3[j+1];
                a3[j+1] = temp;
                max=a3[j+1]; printf("max===%d  \n",max);
            }
        }
    }  
    //4定义两个整型数组,元素的个数为10,数组的取值范围为随机[20,60]将这两个数组的元素放入一个新的数组中

//        int a4[10],b4[10],c4[20];
//        for (int i = 0; i<10; i++) {
//            a4[i]=arc4random() % (60 - 20+1) +20;
//            b4[i]=arc4random() % (60 - 20+1) +20;
//
//            c4[i] = a4[i];
//            c4[i+10] = b4[i];
//            printf("a4=%d \n  b4=%d",a4[i],b4[i]);
//        }
//        for (int i =0; i<20; i++) {
//             printf("cccccc4=%d\n",c4[i]);
//        }

    //-------------------------------------------------------------------
    //冒泡排序
    //1.需要双层循环,外层控制循环的趟数,内层控制每趟循环的次数
    //2.提高效率而言.外层趟数为元素个数-1,内层循环次数处于递减的状态,为元素个数-1(必须减,会越界)-i(为了提高效率,不和最后一个比较)
    //3.VIP--内存循环必须设置元素的个数-1的操作要防止下标越界

//        int f[6]={89,7,9,66,24,18};
//        for (int i=0; i<6-1; i++) {
//            for (int j = 0; j<6-1-i; j++) {
//                //升序
//                if (f[j]>f[j+1]) {
//                    //前者大于后者的话就交换位置
//                    int temp = f[j];
//                    f[j]= f[j+1];
//                    f[j+1] = temp;
//
//                }
//            }
//        }
//
//        for (int i = 0; i<6; i++) {
//            printf("%d\n",f[i]);
//        }



作者:任任任任师艳
链接:https://www.jianshu.com/p/1333d8bde7bb


0人推荐
随时随地看视频
慕课网APP