C语言初体验

 C语言第一天:

// insert code here...

        // 单行注释  //  多行注释(/*  */)

       /*

        printf("我是一名应届毕业生\n");

        printf("我的名字叫 ***\n");

        printf("我毕业于 河南师范大学 \n");

        printf("我现在在蓝鸥河南校区学习iOS\n");

        printf("本人单身,至今未婚!!!\n");

         = 的作用是将等号 右边的值赋值于 左边

        int a = 5 ;

        char b = '4';

        float c = 5.5;

        

        printf("a的内存位置:%p\n",&a);

        printf(" a = %d b = %c c = %.1f \n",a,b,c);

         */


       /*

        int a1 = 8;

        int a2 = 9;

        int a3 = 0;

        a3 = a1 + a2;

        printf("%d = %d + %d\n",a3,a1,a2);

        printf("你今年多大了?");

        int age = 23;

        printf("我今年:%d \n",age);

        NSLog(@"\n尹江涛的iOS之旅");

         */

        

        //常量与变量的区别:

        //常量:值不能被改变

        //变量的定义:值能够被改变的存储区域。一般形式:变量类型 变量名 =常量

        

       /*

        //定义一个整形变量(内存空间:)

        int a = 5 ;

        

        //定义一个字符型变量 ,单引号里面只能写一个字符

        char b = 'u';

        

        //定义一个浮点型的变量(用来存放小数,内存空间:字节)

        float c = 3.60 ;

        

        //定义一个短整形的变量(内存空间:2个字节)

        short d = 5;

        

        //定义一个长整形的变量(内存空间大小:48个字节)

        long e = 78;

        

        //定义一个双精度的变量(内存空间:)

        double f = 78.98;

        */

        

       //变量的使用

        //1、变量的使用必须在变量被定义之后,即使用之前必须先定义

        //2、变量的使用,一个变量只能被定义一次,不能被多次定义即重定义

        //3、变量被多次赋值时,以最后一次的赋值为准

        //直接拿变量的名字就可以使用

       /*

         int a = 8;

         a = 5;

         int b = -8;

         printf(" a = %d\n",a);

         printf(" b = %d\n",b);

         char c = 128;

         printf(" c = %d \n",c);

         */

       /*

         //变量名的命名规则

         //1、变量的命名只能以字母、下划线、数字组成(不能以数字开头)

         //2、不能与系统关键字重名

         //3、变量的命名 见名知意

         int age = 17;

         int wight = 67;

         //4、变量名的驼峰命名法

         int studentAge = 22;

         int teacherAge = 36;

         //5·变量名的明明不能重复定义

         */

      /*

        //赋值运算符: =

        int a = 9 ;

        a = 8 ;

        //同一类型的变量可以在同一行定义,中间用 隔开

        int b ,c ,d ;

        b = 3;

        c = 4;

        d = 5;

        printf("b = %d c = %d d = %d \n",b,c,d);

        //交换两个变量的值

        int temp = b;

        b = c;

        c = temp;

        printf("b = %d c = %d d = %d \n",b,c,d);

        

        int xueBi = 5;

        int keLe = 9;

        printf("xueBi = %d , keLe = %d \n",xueBi,keLe);

        int beiZi = xueBi;

        xueBi = keLe;

        keLe = beiZi;

        printf("xueBi = %d , keLe = %d \n",xueBi,keLe);

        */

        

       //运算符

       /*

        int a = 5;

        int b = 7;

        int c = a + b;

        printf("c = %d \n",c);

        c = a - b ;

        printf("c = %d \n",c);

        c = a * b ;

        printf("c = %d \n",c);

        c = a / b;

        printf("c = %d \n",c);

        c = b / a;

        printf("c = %d \n",c);

        //两个整型变量相除,得到的结果依然是整型

        //两个变量相除,只要有一个浮点型变量,则结果也是浮点型

        float d = b / a ;

        printf("d = %.2f \n",d);

        float b1 = 7.0;

        float a1 = 5.0;

        d = b1 / a1;

        printf("d = %.2f\n",d);

        //求余运算符 %

        c = b % a;

        printf("c = %d \n",c);

        c = a % b ;

        printf("c = %d \n",c);

         */

       /*

        // 自增++自减--

        int a = 5, b = 8 ;

        printf("在后面:a = %d , b = %d \n",a++,b--);

        printf("     a = %d , b = %d \n",a,b);

        printf("在前面:a = %d , b = %d \n",++a,--b);

        */

       /*

        //复合运算符

        int a = 6 ;

        int b = 8;

        a += b;

        printf("a = %d ,b = %d \n",a ,b);

        */

       /*

        //输入函数scanf

        //从键盘输入

//        char a = '\0';

//        scanf("%c",&a);

//        printf("a = %c\n",a);

        //输出函数

//        int a = 5;

//        float b = 8.123456200;

//       // printf("a = %-4d \n",a);

//        printf("a = %04d \n",a );

//        printf("b = %f \n",b);

        */

       //转义字符

        //《第一讲:C语言基础》课后作业

       // 1 (*)计算十进制 42转换为二进制、八进制、十六进制分别对应的值。42的二进制101010522A

        

        

        //2 (*)计算二进制 11010110对应的十进制值  214

        

        

        //3 (*)计算八进制 075对应的十进制值      61

       

        

        //4 (*)计算十六进制 0xA8对应的十进制值   168

       

        

        //5 (*)打印下面图形:* ** ***

        

//        printf("*\n");

//        printf("**\n");

//        printf("***\n");

      

        

        /*6(**)编写一个程序,要求用户输入一个美元数量,然后显示出增加%5

        率后的相应金额。格式如下所示:

        Enter an amount:100.00 With tax added:$105.00

         */

//        float money1 = 0;

//        printf("请输入你要兑换的美元数量:");

//        scanf("%2f",&money1);

//        float money2 = (1 + 0.05) * money1 ;0+

//        printf("税率以后的相应金额:%.2f ",money2);

        

        

        

       /* 7(**)从键盘输入两个实数 a b,输出 a b 的百分之几。小数点后保留 2位。

        例如:输入 1 4,输出:25.00% 

        //scanf  3个变量 c = a / b * 100;

        */

//        printf("请输入两个实数:");

//        float a , b ;

//        scanf("%2f %2f",&a ,&b);

//        float c = a / b * 100;

//        printf("%.2f%%",c);

        

        

        

       /*

        8(**)编写一个程序,要求用户输入一个美金数量,然后显示出如何用最 少的 20美元、10 美元、5美元和 1 美元来付款:

        Enter a dollar amount:93 

        $20 bills: 4

        $10 bills: 1

        $5 bills:0

        $1 bills:3 

         */

//        printf("Enter a dollar amount");

//        int money ;

//        scanf("%d",&money);

//        int a = money / 20 ;

//        int b = (money - 20 * a ) / 10 ;

//        int c = (money - 20 * a - 10 * b ) / 5  ;

//        int d = (money - 20 * a - 10 * b - 5 * c)  / 1  ;

//        printf("%d 20美元, %d10美元,%d5美元,%d1美元\n",a,b,c,d);

//        

        

        //9(*)输入两个整数,打印这两个数的和,,,余数

//        printf("输入两个整数");

//        int a , b ;

//        scanf("%d %d",&a ,&b);

//        int sum = a + b ;

//        int cha = a - b ;

//        int ji = a * b ;

//        int yuShu =  a % b;

//        printf("sum = %d, cha = %d , ji = %d , yuShu = %d\n",sum,cha,ji,yuShu);

//        

        

        

        

        //10(*)查找 ASCII码表,分别用%d输出字符,%c输出整数。

//        char i = 0;

//        for (i = 0; i<127; i++)

//        {

//            if (isalpha(i))

//            {

//                printf("%c    %d\n",i,i);

//            }

//        }

//        int a  = 0;

//        char b  = '\0';

//        printf("请输入:");

//        scanf("%d%c",&a,&b);

//        if (a >= 0 && a <= 127  )

//        {

//            printf("%c\n",a);

//        }

//        if ((b > 'A'&& b < 'Z' )|| (b > 'a' && a <= 'z') )

//        {

//            printf("%d\n",b);

//        }

//        char a = '\0';

//        scanf("%c",&a);

//        printf("%d\n",a);

//        int b =0;

//        scanf("%d",&b);

//        printf("%c\n",b);

        

            

    }

       return 0;

}

:作业:


C语言第二天:

//顺序结构  程序从上到下依次运行

       //分支结构

        //布尔类型 非零既真

       /*

        int a = 6;

        

        BOOL result = NO;

        

        if (result) {

            printf("a = %d \n",a);

        }

        

        printf("Hello,World!");

        

        

        char a = '\0';

        printf("请输入一个字符:\n");

        scanf("%c",&a);

        if (a == 'w') {

            printf("我是女孩!");

        }else if(a == 'm')

        {

            printf("我是男孩!");

        }else{

            printf("请输入你的性别的英文缩写'w' or 'm'");

        }

        */

       /*

        int a = 0;

        printf("请输入一个数字:");

        scanf("%d",&a);

        if (a >= 18) {

            printf("你的年龄是 %d 已经是成年人,可以进入观看:",a);

        } else {

            printf("你是 %d 未成年人,禁止观看本视频!",a);

        }

        */

       /*

        //逻辑运算符:||一真皆真 &&一假皆假 真既是假假即是真

        int age = 0;

        printf("请输入你的年龄,谢谢合作:");

        scanf("%d",&age);

        if (age < 18 ) {

            printf("你是 %d ,禁止进入网吧",age);

        }else if(age >= 18 && age <= 25){

            printf("你是 %d ,可以进入网吧",age);

        }else{

            printf("你是 %d ,请注意节制,保重身体!",age);

        }

         */

       /*

        int a = 0 ,b = 6;

        int c = a && b ;

        printf("c = %d\n",c);

        

        int a1 = 5,b1 = 6;

        int c1 = a1 || b1 ++;

        printf("c1= %d\n",c1);

        printf("b1 = %d\n",b1);

        

        //bool 只有两个结果:真 或者

        //C语言中 非零既真

        //逻辑运算符 &&只要一个为假即为假(短路现象: &&**不会执行)

        //逻辑运算符 ||只要一个为真即为真(短路现象: ||*,当第一个为真,后面的*就不会再执行)

        */

       

        //对于if来说,如果没有{}则默认紧跟着if的第一个if管理的语句

       /*

        int a = 7 ;

        if(a==6)

            printf("*********\n");

        printf("%%%%%%%%%%%%%%\n");

        */

       /*

        int a ;

        printf("请输入1234中的任意一个数字,出现相应的季节:");

        scanf("%d",&a);

        if(a == 1)

            printf("春天");

            else if(a == 2 )

                printf("夏天");

                    else if(a == 3)

                        printf("秋天");

                            else if(a == 4)

                                printf("冬天");

        else

            printf("一年之内没有这个季节!\n谢谢配合,请重新输入:");

        */

        

        //逻辑运算符的优先级顺序:

        // > && > ||

       /*

        int a = 5;

        int c = 0;

        c = (2 || 0) && a++;

        printf("c = %d  a = %d \n",c ,a );

        */

      /*

        //求两个数的最大值

        int a = 5,b = 7;

        printf("请输入两个整数:");

        scanf("%d %d",&a,&b);

        int max = 0;

        if (a > b) {

            max = a ;

            printf("max = %d a = %d  b = %d \n",max , a , b );

        }else{

            max = b ;

            printf("max = %d a = %d b = %d\n",max, a ,b);

        }

        */

      /*

        //三国杀

        

        int hp = 5;

        int count = 0;

        char color = '\0';

        printf("请输入点数和桃色:");

               scanf("%d,%c",&count,&color);

        if ((color == 'B') && ((count >= 2) && (count <= 9))) {

            hp -= 3;

            printf("人不犯我我不犯人,人若犯我我必犯人!\n");

        }else{

            printf("能不能快点啊,我等的花都谢了!\n");

        }

        printf("玩家剩余血量:hp = %d\n",hp);

        */

        //从控制台输入一个年份,并判断是否是闰年

        //闰年的判断条件: 14的整数倍且不被100整除  2、能被400整除

        /*

        if (year % 400 == 0) {

            printf("这一年是闰年!");

        }else{

            //不能被400整除

            if (year % 4 == 0) {

                //判断是不是100的整数倍

                if(year % 100 == 0){

                    printf("今年是平年!");

                }else{

                    printf("今年是闰年!");

                }

                

            }else{

                printf("这一年是平年!");

            }

        }

         */

       /*

        int year = 0;

        printf("请输入一个年份:");

        scanf("%d",&year);

        if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){

            printf("你输入的年份是闰年!");

        }else{

            printf("你输入的年份不是闰年!");

        }

        

        int i = 0;

        for (i = 1; i <= 2015; i++) {

            if ((i % 4 == 0 && i %100 != 0) || i % 400 == 0) {

                printf("%d, ",i);

            }

        }

        */

       /*

        //三个数的最大值

        int a = 0 ,b = 0 ,c = 0;

        printf("输入abc三个数:\n");

        scanf("%d,%d,%d",&a,&b,&c);

        if(a > b && a >c){

            printf("最大值:a = %d\n",a);

        }else if (b > a && b > c){

            printf("最大值:b = %d\n",b);

        }else{

            printf("最大值:c = %d\n",c);

        }

        //三目运算符  :如果?前面的表达式真,则执行:前面的部分

        //          : 如果?前面的表达式为假,则执行:后面的部分

        //先求两个数的最大值

        int max = 0;

        max = a > b ? a : b ;

        max = a > b ? (a>b?a:b) : (b>c?b:c);

        printf("max = %d\n",max);

        */

        //switch  case

        //break 跳出整个switch循环

       /*

        int month = 0;

        printf("请输入一个月份:\n");

        scanf("%d",&month);

                switch (month) {

            case 1:

            case 3:

            case 5:

            case 7:

            case 8:

            case 10:

            case 12:

                printf("31");

                break;

            case 2:

            case 4:

            case 6:

            case 9:

            case 11:

                printf("30");

                break;

            default:

                printf("请重新输入月份:");

                break;

        }

        */

       /*

        int telephoneNumber = 0;

        printf("请输入一个电话号码:");

        scanf("%d",&telephoneNumber);

        switch (telephoneNumber) {

            case 801:

                printf("职业规划部电话!");

                break;

            case 802:

                printf("财务部");

                break;

            case 803:

                printf("市场营销部");

                break;

            case 804:

                printf("教育部");

                break;

            case 805:

                printf("行政部");

                break;

            default:

                printf("请查证后再拨!");

                break;

        }

        */

        

        

        //1.(*)输入一个整数,判断奇偶,并输出某某是奇数或者某某是偶数

       /*

        int num = 0;

        scanf("%d",&num);

        if (num / 2 == 0) {

            printf("%d是偶数",num);

        }else {

            printf("%d是奇数",num);

        }

        */

        

        //2.(*)输入一个数,判断符号。如果大于 0,输出正数”;如果小于 0, 负数”;如果等于 0,输出“0”

      /*

        int num = 0;

        if(num > 0){

            printf("正数");

        }else if(num < 0){

            printf("负数");

        }else{

            printf("0");

        }

        */

        

        //3.(***)输入生日,输出年龄(周岁)和星座。

       //第一种方法:

       /*

        int year,month,day;

        printf("请输入按照年月日,输入你的生日:");

        scanf("%d,%d,%d",&year,&month,&day);

        int age;

        age = 2015 - year;

        if (( month = 3 && day >= 21 ) || (month = 4 && day <= 20)) {

            printf("你是白羊座,年龄%d",age);

        }else if((month = 4 && day >= 21 ) || (month = 5 && day <= 21)) {

            printf("你是金牛座,年龄%d",age);

        }else if((month = 5 && day >= 22 ) || (month = 6 && day <= 21)) {

            printf("你是双子座,年龄%d",age);

        }else if((month = 6 && day >= 22 ) || (month = 7 && day <= 22)) {

            printf("你是巨蟹座,年龄%d",age);

        }else if((month = 7 && day >= 23 ) || (month = 8 && day <= 22)) {

            printf("你是狮子座,年龄%d",age);

        }else if((month = 8 && day >= 23 ) || (month = 9 && day <= 23)) {

            printf("你是处女座,年龄%d",age);

        }else if((month = 9 && day >= 24 ) || (month = 10 && day <= 23)) {

            printf("你是天秤座,年龄%d",age);

        }else if((month = 10 && day >= 24 ) || (month = 11 && day <= 22)) {

            printf("你是天蝎座,年龄%d",age);

        }else if((month = 11 && day >= 23 ) || (month = 12 && day <= 21)) {

            printf("你是射手座,年龄%d",age);

        }else if((month = 12 && day >= 22 ) || (month = 1 && day < 21)) {

            printf("你是魔蝎座,年龄%d",age);

        }else if((month = 1 && day >= 21 ) || (month = 02 && day < 20)) {

            printf("你是水瓶座,年龄%d",age);

        }else{

            printf("你是双鱼座,年龄%d",age);

        }

        */

       //第二种方法:

       /*

        printf("请按照年月日输入你的生日:");

        int year ,month ,day ;

        int age = 2015 - year;

        scanf("%d,%d,%d",&year,&month,&day);

        switch (month) {

            case 1:

                if (day >= 20) {

                    printf("年龄为:%d星座为:水瓶座!\n",age);

                }else{

                    printf("年龄为:%d星座为:魔蝎座!\n",age);

                }

                break;

            case 2:

                if (day >= 19) {

                    printf("年龄为:%d星座为:双鱼座!\n",age);

                }else{

                    printf("年龄为:%d星座为:水瓶座!\n",age);

                }

                break;

            case 3:

                if (day >= 21) {

                    printf("年龄为:%d星座为:白羊座!\n",age);

                }else{

                    printf("年龄为:%d星座为:双鱼座!\n",age);

                }

                break;

            case 4:

                if (day >= 20) {

                    printf("年龄为: %d星座为:金牛座!\n",age);

                }else{

                    printf("年龄为: %d星座为:白羊座!\n",age);

                }

                break;

            case 5:

                if (day >= 21) {

                    printf("年龄为:%d星座为:双子座!\n",age);

                }else{

                    printf("年龄为:%d星座为:金牛座!\n",age);

                }

                break;

            case 6:

                if (day >= 22) {

                    printf("年龄为:%d星座为:巨蟹座!\n",age);

                }else{

                    printf("年龄为:%d星座为:双子座!\n",age);

                }

                break;

            case 7:

                if (day >= 23) {

                    printf("年龄为: %d星座为:狮子座!\n",age);

                }else{

                    printf("年龄为: %d星座为:巨蟹座!\n",age);

                }

                break;

            case 8:

                if (day >= 23) {

                    printf("年龄为: %d星座为:处女座!\n",age);

                }else{

                    printf("年龄为:%d星座为: 狮子座!\n",age);

                }

                break;

            case 9:

                if (day >= 23) {

                    printf("年龄为:%d星座为:天秤座!\n",age);

                }else{

                    printf("年龄为:%d星座为:处女座!\n",age);

                }

                break;

            case 10:

                if (day >= 23) {

                    printf("年龄为: %d星座为:天蝎座!\n",age);

                }else{

                    printf("年龄为: %d星座为:天秤座!\n",age);

                }

                break;

            case 11:

                if (day >= 23) {

                    printf("年龄为:%d星座为:射手座!\n",age);

                }else{

                    printf("年龄为:%d星座为:天蝎座!\n",age);

                }

                break;

            case 12:

                if (day >= 22) {

                    printf("年龄为:%d星座为:摩羯座!\n",age);

                }else{

                    printf("年龄为:%d星座为:射手座!\n",age);

                }

                break;

                

            default:

                printf("你的生日输入错误,请重新输入!");

                break;

        }

        */

        

        //4.(**)编程判断 3人中谁的年龄最大,并打印最大者的年龄

       /*

        printf("请输入3个人的年龄:");

        int age1,age2,age3;

        scanf("%d,%d,%d",&age1,&age2,&age3);

        int ageMax = 0;

        ageMax = age1 > age2 ? (age1 > age3 ? age1: age3) : (age2 > age3 ? age2 : age3);

        printf("最大者的年龄:ageMax = %d\n",ageMax);

        */

        

        

        //5.(**)铁路托运行李规定:行李重不超过 50公斤的,托运费按 0.15元每 公斤计算,如果超过 50公斤,超出部分每公斤加收 0.1元。编程实现上述功能

       /*

        float wight = 0;

        float money = 0;

        printf("请输入你的行李重量:");

        scanf("%2f",&wight);

        if (wight < 50) {

            money = wight * 0.15;

            printf("需要缴费:money = %.2f\n",money);

        }else{

            money = 50 * 0.15 + (wight - 50) * (0.15 + 0.1);

            printf("需要缴费:money = %.2f\n",money);

        }

        */

        

        

        //6.(**)有一个函数:x<1的时候,y = x;1<=x<10 的时候,y=2x-1; x>=10 的时候,y=3x-11。写一段程序,输入 x,输出 y

       /*

        int x , y;

        printf("请输入X的值:");

        scanf("%d",&x);

        if (x < 1) {

            y = x;

        }else if ( x >= 1 && x < 10){

            y = 2 * x - 1;

        }else{

            y = 3 * x - 11;

        }

        printf("y = %d\n",y);

        */

        

        

        //7.(**)编制一个完成两个数四则运算程序。如:用户输入 34+56则输出结 果为 90.00,要求运算结果保留 2位有效小数,用户输入时将 2个运算数以及运算符都输入,根据运算符求结果

       /*

        printf("请输入两个数:");

        float a ,b;

        char c = '\0';

        scanf("%f%c%f",&a,&c,&b);

        switch (c) {

            case '+':

                printf("%.2f\n",(a + b));

                break;

            case '-':

                printf("%.2f\n",(a - b));

                break;

            case '*':

                printf("%.2f\n",(a * b));

                break;

            case '/':

                printf("%.2f\n",(a / b ));

                break;

                

            default:

                printf("输入错误,请重新输入!");

                break;

        }

        */

        

        

        

        

        

        //8.(***)输入 3个数,判断是否能构成三角形

        

//        printf("请输入3个数:\n");

//        float a ,b, c ;

//        scanf("%f,%f,%f",&a,&b,&c);

//         //不知道哪个便是最长边,哪个是最短边

//        if ((a + b) > c && (a + c) > b && (b + c ) > a ) {

//            printf("%.2f ,%.2f ,%.2f 能够构成三角形!",a,b,c);

//        }else{

//            printf("这三个数不能构成三角形,请重新输入!");

//        }

        

        

        

        

        //9.(****)输入三个数,用两种方法打印出中间值(即第二大值)提示:第一种,先求最大最小;第二种,只使用条件运算符

        

        //第一种方法:冒泡

       /*

        int array[3];

        printf("请输入三个数:");

        int mid;

        scanf("%d,%d,%d",&array[0],&array[1],&array[2]);

        for (int i = 0; i< 2; i++) {

            for (int j = 0; j< 1; j++) {

                if(array[i] < array[i+1])

                {

                    int temp = array[i];

                    array[i] = array[i+1];

                    array[i+1] = temp;

                }

            }

        }

        mid = array[1];

        printf("三个数的中间值:%d",mid);

        */

        

        //第二种方法:条件运算

       /*

        printf("请输入3个数:");

        int a ,b ,c;

        scanf("%d,%d,%d",&a,&b,&c);

        if (a > b && a < c ) {

                printf("三个数的中间值为 %d\n",a);

            }else if(b > c){

                printf("三个数的中间值为:%d\n",b);

            }else{

                printf("三个数的中间值为;%d\n",c);

            }

         */

        

        

        

        

         

    }

    

   return 0;

}


C语言第三天:

 

       //循环语句

        //循环结构:在某个特定条件之下,重复执行一个语句段(代码块)

        //用来控制循环的变量:保证循环变量的改变,防止死循环导致程序崩溃

        //int i = 1;

       /*

         //输出100之内的整数

         while (i < 100) {

         //i小于100时,输出i的值

         

         printf("%d ",i);

         i++;

         }

         */

       /*

         //100之内的偶数,并向控制台输出

         while (i<=100) {

         //判断i是不是偶数

         if (i % 2 == 0) {

         printf("%d ",i);

         }

         i++;

         }

         */

       /*

         //循环 打印 7 的倍数

         printf("100以内的7的倍数:\n");

         while (i <= 100) {

         if (i % 7 == 0) {

         printf("%d ",i);

         }

         i++;

         }

         */

       /*

         //循环打印个位为7

         printf("100以内的个位为:\n ");

         while (i <= 100) {

         if ( i % 10 == 7) {

         printf("%d\t",i);

         }

         i++;

         }

         

         

         //循环打印十位为7

         printf("100以内十位为7 \n");

         while (i <= 100) {

         if (i / 10 ==7) {

         printf("%d\t",i);

         }

         i++;

         }

         */

       /*

         //循环打印100以内,不是7的倍数并且不包含7的整数

         while (i <= 100) {

         if ( ( i % 7 != 0 ) && ( (i % 10 != 7) && (i / 10 != 7) ) ) {

         printf("%d\t", i);

         }

         i++;

         }

         */

        //随机数的取值范围:

       /*

        int i =  arc4random() % 3;

        printf("i = %d\n",i);

        */

        //循环打印1-100之间的随机数(打印18个数)

//        int i = 1;

//        while (i <= 18) {

//            printf("%d\t", (arc4random() % 100) + 1 );

//            i++;

//        }

        //随机数取值范围

        //循环打印【30 - 50】的随机数(打印18个)

       /*

        int i = 1;

        while (i <= 18) {

            int k = arc4random() % ((50-30)+1) + 30;

            printf("%d\t",k);

            i++;

        }

        */

       /*

        //打印34-78之间的随机数循环打印n

        int count = 0;

        //存放随机数里面的最大值

        int max = 0;

        printf("输入打印的次数:\n");

        int i = 0;

        scanf("%d",&count);

        while (i < count) {

            int k = arc4random() % ( (78-34) + 1 ) + 34;

            //如果随机数 k 里面的数有比 max 大的,将之取出并赋值于 max

            if (k > max) {

                max = k ;

            }

            printf("%d\t",k);

                        i++;

        }

        printf("随机数中的最大值 max = %d\n",max);

        */


        //打印37-78之间的18个随机数并求出最小值

        //求一个变量控制循环次数

       /*

        int i = 1;

        //保存最小值的变量

        int min = 0 ;

        //声明一个变量,用来保存是第几次进入循环体

        while (i <= 8) {

            int count = 1;

            int k = arc4random() % ( 78 - 34 + 1 ) + 34;

            printf("%d\t",k);

            

             //如果是第1次进入循环体,则把循环体中的第一个随机数赋值于min

            if (count == 1) {

                count ++;

                min = k;

            }

            //比较大小,并将较小的值赋值于 min

            if (k > min) {

                min = k;

            }

            i++;

         }

         printf("\n随机数中的最小值:min = %d\n",min);

        */

        

       //for循环

       /*

        //for循环打印1-100之间的数

//        for (int i = 1; i <= 100 ; i++) {

//            printf("%d\t",i);

//        }

        //for循环打印1-100之间的7的倍数

//        for (int i = 1; i <= 100; i++) {

//            if (i % 7 == 0 ) {

//                printf("%d\t",i);

//            }

//        }

        //个位为7

        for (int i = 1; i <= 100; i++) {

            if (i % 10 == 7 ) {

                printf("%d\t",i);

            }

        }

        //十位为7

        for (int i = 1; i<=100; i++) {

            if (i / 10 == 7 ) {

                printf("%d\t",i);

            }

        }

        

        //1-100之间个位和十位都不包含7且不是7的倍数

        for (int i = 1; i <= 100; i++) {

            if ((i % 10 != 7) && (i / 10 != 7) && (i % 7 != 0)) {

                printf("%d\t" , i );

            }

        }

        */

        //23 - 77打印13个随机数

//        for (int i = 0 ; i < 13 ; i++ ) {

//            printf("%d\t",arc4random()%(67-23+1)+23);

//        }

        //双层for循环外层控制行,内层控制列

        //外层for循环,控制外行

       /*

        for (int i = 0; i < 3; i++ ) {

            //内层for循环

            for (int j = 0; j < i +1 ; j++ ) {

                printf("%d\t",j + 1 );

            }

            printf("\n");

        }

        */

       /*

         //乘法口诀表

        for (int i = 0 ; i < 7; i++) {

            for (int j = 0; j< i+1; j++) {

                printf("%d ",j+1);

            }

            printf("\n");

        }

        

        for (int i = 0 ; i < 9; i++) {

            for (int j = 0; j< i + 1; j++) {

                printf("%d*%d=%d ",j + 1, i + 1, ((i+1) * (j+1)));

            }

                       printf("\n");

        }

        */

       /*

         打印如图图案:

             *

           *   *

         *   *   *

       *   *   *   *

         *   *   *

           *   *

             *

        */

        

        

        

       /*

        // 0 - 9 打印所有可能的三位数

        for (int i = 0 ; i < 10 ; i++) {

            for (int j = 0 ; j < 10; j++) {

                for (int k = 0; k < 10; k++) {

                    printf("%d%d%d\t", i , j, k);

                }

            }

        }

        //打印所有三位有效数

        for (int i = 0; i < 10; i++) {

            for (int j = 0; j < 10; j++) {

                for (int k = 0; k < 10; k++) {

                    printf("%d%d%d\t", i,j,k);

                }

            }

        }

        */

       /*

        while for 的区别

        while 先条件再循环

        for   先确定循环次数,当循环次数达到限定条件之后结束循环

         while 循环是一个临界点的问题

        for 是一个循环多少次的问题

        */

        

        //break continue 在循环中的作用

        //break 结束当前循环

        //continue 结束本次循环

        //continue 练习:

        //循环打印 1-10之间的所有数,但是不打印5

       /*

        for (int i = 0; i < 10; i++) {

            if (i == 5) {

                //结束本次循环,但是循环体继续循环

                continue;

            }

            printf("%d\t",i);

        }

       

        for (int i = 0; i < 10; i++) {

            if (i == 5 ) {

                //结束循环体,结束当前循环并且以下的循环不再执行

                break;

            }

            printf("%d\t",i);

        }

         */

        // do …… while

       /*

        int i = 1 ;

        do {

            printf("%d\t",i);

            i++;

        } while (i <= 6);

        */

        //求两个数的最大公约数

       /*

        printf("任意输入俩个整数:\n");

        int a ,b ;

        scanf("%d,%d",&a,&b);

        //利用for循环

        int gy = 0;

        int max = (a > b ? a : b );

        int min = (a < b ? a : b );

        for (int i = 1 ; i <= min; i++) {

            if ((max % i == 0) && (min % i == 0)) {

                gy = i;

            }

        }

        printf("最大公约数:%d",gy);

        */

       //求最小公倍数

       /*

        int a = 12, b = 16;

        for (int i = 16; i < ( a * b); i++) {

            if ((i % a  == 0) && (i % b == 0)) {

                printf("%d ",i);

                break;

            }

        }

        */

        

        

        

        

        

        

       /*

        int i,j,k;

        for(i=1;i<=4;i++)

        {for(j=1;j<=4-i;j++) printf(" ");

            for(k=1;k<=2*i-1;k++) printf("*");

            printf("\n");

        }

        for(i=1;i<=4;i++)

        {for(j=1;j<i+1      ;j++) printf(" ");

            for(k=1;k<=7-2*i;k++) printf("*");

            printf("\n");

        }

        */

        

//        int m ,n ,r , p ,q;

//        printf("输入两个数:\n");

//        scanf("%d,%d",&m,&n);

//        p = m * n;

//        while (m != 0) {

//            r  = n % m;

//            n = m ;

//            m = r ;

//        }

//        q = p / n ;

//

//        printf("%d,%d\n",n,q);

            

        

    }

   return 0;

}




C语言第四天:


int main(int argc,const char * argv[]) {

    @autoreleasepool {

        

    //数组:

        

       // 1、构造类型

       // 2、一般形式:类型数组名 【元素个数】 =  {元素集};(元素之间用 隔开)

       // 3、数组中的内存分配:从高到底分配,从低到高存取  栈区

       // 4、在知道数组个数的前提下,只给第一个元素赋值为0,其他元素默认为0

       // 5、若在初始化时,没有数组长度,则默认数组的长度为初始化的元素个数

       // 6、定义数组长度时,只能用常量定义

       // 7,数组的元素访问:通过元素在该数组的下标位置,访问该元素

          //数组下标的最大值是 =数组长度 - 1 ;否则越界,越界会导致系统潜在危险,甚至系统崩溃

       // 8、数组不能整体赋值,只能通过下标一个一个赋值(数组名代表整个数组的首地址,地址是常量,不能被赋值)

       // 9、求一个数组的长度 int length = sizeof(数组名)/sizeof(数组的类型)

     

    //定义一个数组,用来存放5个年龄

       /*

//        int array[5] = {12,25,88,43,21};

//        int a = 5;

        

    

    //sizeof  运算符 运来计算一个变量 一个类型在内存中所占用的空间

//        int  c = sizeof(array);

//        int b = sizeof(a);

//        printf("数组array所占用的内间:%d a所占的空间:%d",c,b);

    

    

//        int array[] = {3,5,7};

//        printf("sizeof = %d\n",sizeof(array));

    

//        int a = 5 ;

//        int array[a] = {1,5,8,6,7};

//        int array[5] = {3,6,2,8,1};

//        int c = array[4];

//        printf("c = %d\n",c);

        */

        //定义两个数组,将一个数组的元素赋值于另外一个数组

       /*

         int array1[3] = {4, 6, 8 };

         int array2[3] = {3, 7, 1 };

         for (int i = 0; i < 3; i++) {

         array1[i] = array2[i];

         printf("%d\t",array1[i]);

         }

         */

       /*

         int array[10] = {12,14,13,17,24,90,55,22,34,59};

         for (int i = 0; i < sizeof(array)/sizeof(int) ; i++) {

         printf("array[%d] = \t",i);

         printf("%d\t",array[i]);

         }

         //随机数的范围30 - 78

         int array[30]={0};

         printf("随机的30个数:\n");

         for (int i = 0; i < 30; i++) {

         int k = arc4random() % (78 - 30 + 1) + 30;

         array[i] = k;

         printf("%d ",k);

         }

         printf("\n");

         for (int i =0; i < 30; i++) {

         printf("array[%d] = ",i);

         printf("%d\t",array[i]);

         }

         */

        //一个数组 30个元素 随机赋值(30 - 78

        //另一个数组 30个元素将第一个数租的元素按赋值于第二个数组

        //打印两个数组 检查 数组是否一样

       /*

         int array1[30] = {0};

         int array2[30] = {0};

         printf("array1[30]:\n");

         for (int i = 0; i < 30; i++) {

         int k = arc4random()%(78-30+1)+30;

         array1[i] = k;

         }

         for (int i = 0; i < 30 ; i++) {

         printf("%d\t",array1[i]);

         }

         

         printf("\n");

         printf("array2[30]:\n");

         for (int i = 0; i < 30; i++) {

         int k = arc4random()%(78-30+1)+30;

         array2[i] = k;

         }

         for (int i = 0; i < 30; i++) {

         printf("%d\t",array2[i]);

         }

         

         printf("\n");

         printf("array2[30]:\n");

         for (int i = 0; i < 30; i++) {

         array2[i] = array1[i];

         printf("array2[%d] = ",i);

         printf("%d\t",array2[i]);

         }

         */

       /*

         // 数组 30个元素 30 - 78随机赋值

         // 循环遍历 打印这30个元素的和

         int array[30] = {0};

         int sum = 0;

         for (int i = 0; i < sizeof(array)/sizeof(int); i ++) {

         int k = arc4random()%(78-30+1)+30;

         array[i] = k;

         }

         for (int i = 0; i < 30; i++) {

         sum += array[i];

         printf("%d\t",array[i]);

         }

         printf("\n");

         printf("sum = %d\n",sum);

         

         

         // array1  10个随机值并打印array1

         // array2  10个随机值并打印array2

         // array3  10个随机值  每个元素是对应的array1array2的元素和

         int array1[10] = {0};

         int array2[10] = {0};

         int array3[10] = {0};

         printf("array1:\n");

         for (int i =0; i < 10; i++) {

         int k = arc4random()%(78 - 30 + 1) + 30;

         array1[i] = k;

         printf("%d\t",array1[i]);

         }

         printf("\narray2:\n");

         for (int i = 0; i < 10; i++) {

         int k = arc4random() % 49 + 30;

         array2[i] = k;

         printf("%d\t",array2[i]);

         }

         printf("\narray3:\n");

         for (int i = 0; i < 10 ; i++ ) {

         array3[i] = array1[i] + array2[i];

         printf("%d\t",array3[i]);

         }

         */

        

        

       //排序:

        

       //冒泡排序:

           //两层for循环,,

            //外层控制比较的次数    n-1

            //内层控制每一趟的次数  n-1-i

        

        //选择排序:n-1

    

       /*

        int array[5] = {6,3,8,7,11 };

        for (int i = 0; i < 5 - 1; i++) {

            for (int j = 0; j < 5 - 1 - i; j++) {

                if (array[j] > array[j+1]) {

                    int temp = array[j] ;

                    array[j] = array[j+1] ;

                    array[j+1] = temp;

                }

            }

        }

        for (int i = 0; i<5; i++) {

            printf("%d\t",array[i]);

        }

    */

       /*

        int array[5] = {8,3,77,22,89};

        for (int i = 0; i < 5 - 1; i++) {

            //认为下标为0的元素为最小

            int mininder = i;

            //使mininder始终指向较小

            for (int j = i + 1; j < 5 ; j++) {

                if( array[mininder] > array[j]){

                    mininder = j;

                }

            }

            //如果存放的最小位置,与之前认为的这个位置不一样,就要交换两个位置的存放的内容

            if (mininder != i) {

                int temp = array[mininder];

                array[mininder] = array[i];

                array[i] = temp;

            }

        }

        //本次for将排好序的数组打印出来

        for (int i = 0; i < 5; i++) {

            printf("%d\t",array[i]);

        }

        */

    

        //随机赋值 从小到大排序  打印输出

       /*

        printf("冒泡排序:\n");

        int array[30] = {0};

         printf("随机赋值后的array:\n");

        for (int i = 0; i < 30; i++) {

            int k = arc4random() % 49 + 30;

            array[i] = k;

            printf("%d\t",array[i]);

        }

        //冒泡排序

        for (int i = 0; i < 30-1; i++) {

            for (int j = 0 ; j < 30 - i; j++) {

                if (array[j] > array[j+1]) {

                    int temp = array[j];

                    array[j] = array[j+1];

                    array[j+1] = temp;

                }

            }

        }

        printf("\n拍完序之后的array\n");

        for (int i = 0; i<30; i++) {

            printf("%d\t",array[i]);

        }

        */

       /*

        printf("选择排序:\n");

        int array[30] = {0};

        printf("没排序之前的array\n");

        for (int i = 0; i < 30; i++) {

            int k = arc4random() % 49 + 30;

            array[i] = k;

            printf("%d\t",array[i]);

        }

    //选择排序

        for (int i = 0; i < 30-1; i++) {

            int minindex = i;

            for (int j = i + 1; j < 30 - i; j++) {

                if (array[minindex] > array[j]) {

                    minindex = j;

                }

            }

            if (minindex != i) {

                int temp = array[minindex];

                array[minindex] = array[i];

                array[i] = temp;

            }

        }

        printf("\n排完序后的array\n");

        for (int i = 0; i < 30; i++) {

            printf("%d\t",array[i]);

        }

    */

        

        

        //字符数组: %s从地址开始打印,到‘\0’结束。

//        char array[10] = {'i','P','h','o','n','e'};

//        for (int i = 0; i< sizeof(array)/sizeof(char); i++) {

//            printf("%c",array[i]);

//        }

//        char array2[10] = "iPhone";

//        printf("%s\n",array2);

//        printf("%s\n",array);

    

//        char a1[] = {'i','P','h','o','n','e'};

//        char a2[] = "iPhone";

//        int a1Size = sizeof(a1);

//        int a2Size = sizeof(a2);

//        printf("a1SIze = %d , a2Size = %d \n", a1Size , a2Size);

        

        //计算字符串中的空格数

       /*

        char str[] = "iPhone 6 Plus";

        char str1[] = "iPhone 7 minPlus";

        

        int i = 0;

        int blankCount = 0;

        while (str[i] != '\0') {

            if (str[i] ==' ') {

                blankCount++;

            }

            i++;

        }

        printf("blankCount = %d , i = %d\n",blankCount,i);

        

        

        //计算字符串中的P的个数

        int i = 0;

//        int count = 0;

//        while (str[i] != '\0') {

//            if (str[i] == 'P') {

//                count++;

//            }

//            i++;

//        }

//        printf("字符串中的P %d",count);

    

       //计算字符串str1的长度

        int lengh = 0;

        //只要没有配到‘\0’,lengh一直相加

        while (str1[i] != '\0') {

            lengh++;

            i++;

        }

        printf("lengh = %d\n",lengh);

        

    */

        

        //把字符串str1拷贝到str2 str1\0为准

       /*

        char str1[] = "iPhone 6 Plus";

        char str2[] = "iPhone 7 minPlus";

        int i = 0;

        while (str1[i] != '\0') {

            str2[i] = str1[i];

            i++;

        }

        str2[i] = '\0';

        printf("%s\n",str2);

      */

        //字符串的比较 判断条件:1、不同之处   2 都为'\0'

       /*

        char str1[] = "iPhone 6 Plus";

        char str2[] = "iPhone 7 minPlus";

        int i = 0;

        while (!(str1[i] != str2[i])|| ((str1[i] == '\0') && (str2[i] == '\0'))) {

            i++;

        }

        printf("%d\n",str1[i] - str2[i]);

     */

       /*

        char str1[100] = "iPhone 6 Plus";

        char str2[100] = "iPhone 7 minPlus";

        //字符串求长度

        unsigned long length1 = strlen(str1);

        unsigned long length2 = strlen(str2);

        printf("%lu ,%lu\n",length1,length2);

        

        //字符串比较  strcmp(1,2)  ‘1’ - ‘2’

        int cmplength = strcmp(str2, str1);

        int a = strcmp(str1, str2);

        printf("%d\n",cmplength);

        printf("%d\n",a);

        //字符串拷贝  strcpy(1,2)  ‘2’拷贝到‘1’ 并且‘1’一定要有足够的空间

        strcpy(str1, str2);

        printf("%s\n",str1);

        //字符串拼接   strcat(1,2)  ‘2’ 拼接到 ‘1’ 并且‘1’要有足够的空间

        strcat(str1, str2);

        printf("%s\n",str1);

        */

    

  /*

    

    输入一行字符,分别计算其中的字母,空格,数字和其他的个数

    

   */

        //声明4各变量分别存储字母空格  数字 其他

        /*

        char c;

        int letters=0,space=0,digit=0,other=0;

        printf("请输入一行字符:\n");

        while((c=getchar())!='\n')

        {

            if ((c>='a' && c<='z') || ( c>='A' && c<='Z'))

                letters++;

            else if (c==' ')

                space++;

            else if (c>='0' && c<='9')

                digit++;

            else

                other++;

        }

        printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);

       

        int i;

        char str[100] = "iopdfds dsa dlfk* $$d ^^ jndlas !!!";

        int leller=0,space=0,digit=0,other=0;

        while (str[i] != '\0') {

            if((str[i] >= 'a' &&  str[i] <= 'z' )||( str[i] >= 'A' && str[i] <= 'Z')){

                leller++;

            }else if( str[i] == ' '){

                space++;

            }else if( str[i] >= '0' && str[i] <= '9'){

                digit++;

            }else{

                other++;

            }

            

            i++;

        }

        

        printf("letter = %d\nspace = %d\ndigit = %d\nother = %d\n",leller,space,digit,other);

         */

        

    }

   return 0;

}




C语言第五天:


int main(int argc,const char * argv[]) {

    @autoreleasepool {

      /*

        //二维数组

        int a[][4] = { { 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9, 10, 11, 12} };

          //打印二维数组

           //外层for循环控制行

           //内层for循环控制列

//        int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                printf("%d\t",a[i][j]);

            }

            printf("\n");

        }

        

        //关于二维数组 行可以省略   但是列不能省略

       */

        

       //

       /*

        int a[3][4] = {0};

        //随机赋值 10-50

        printf("**************\n");

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                int k = arc4random() % (50-10) + 10;

                int l = arc4random() ;

                BOOL isDoubleSingle = NO;

                if (l % 2 == 0) {

                    isDoubleSingle = YES;

                }else{

                    isDoubleSingle = NO;

                }

                if (isDoubleSingle) {

                    a[i][j] = k;

                }else{

                    a[i][j] = k *(-1);

                }

           }

            printf("\n");

        }

        //打印二维数组

        printf("**************\n");

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                printf("%d\t",a[i][j]);

            }

            printf("\n");

        }

        //打印二维数组中的最大值

        //准备一个变量存放最大值

        int max = 0;

        int min = 0;

        int sum = 0;

        //最大值 最小值

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                //先把第一个元素拿到,在进行比较大小

                if (i == 0 && j == 0) {

                    min = a[i][j];

                    max = a[i][j];

                }else{

                    //比较并拿到最小值

                    if (min > a[i][j]) {

                        min = a[i][j];

                    }

                    if (max < a[i][j]) {

                        max = a[i][j];

                    }

                }

                sum += a[i][j];

            }

        }

        printf("max = %d\n",max);

        printf("min = %d\n",min);

        printf("sum = %d\n",sum);

       */

       /*

    //二维数组排序 对每一行进行排序然后输出

        int a[3][4] = {0};

    // 随机赋值  10-50

        printf("原始数组\n");

        printf("********************\n");

        for (int i= 0; i<3; i++) {

            for (int j = 0; j<4; j++) {

                int k = arc4random() % 41 + 10;

                a[i][j] = k;

                printf("%d\t",a[i][j]);

            }

            printf("\n");

        }

        printf("********************\n");

        for (int i = 0; i < 3; i++) {

            //每一次进来,都能得到一行 数组

            //开始对每一个小数组进行排序  j控制趟数 k控制比较次数

            for (int j = 0; j < 4 - 1; j++) {

                for (int k = 0; k < 4-1-j; k++) {

                    if (a[i][k] > a[i][k+1]) {

                        int temp = a[i][k];

                        a[i][k] = a[i][k+1];

                        a[i][k+1] = temp;

                    }

                }

            }

        }

        printf("排序之后的二维数组:\n");

        for (int i =0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                printf("%d\t",a[i][j]);

            }

            printf("\n");

        }

         */

       /*

        //行和列交换的二维数组

        int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

        int b[4][3] = {0};

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                b[j][i] = a[i][j];

                

            }

        }

        for (int i = 0; i < 4; i++) {

            for (int j = 0; j < 3; j++) {

                printf("%d\t",b[i][j]);

            }

            printf("\n");

        }

        */

            

    //字符串数组

       /*

        char a[6][100] = {"jfiosdaf","facbvewef","lkasjfod","mfdkdsfpdf","dkdkfd","fdsfkdkf"};

        for (int i = 0; i < 6; i++) {

            printf("%s\n",a[i]);

        }

        printf("*********************");

        printf("\n开始排序\n");

        for (int i = 0; i < 6 - 1; i++) {

            for (int j = 0; j < 6 - 1 - i; j++) {

                if (strcmp(a[j], a[j+1]) > 0) {

                    char temp[100] = {"\0"};

                    strcpy(temp, a[j]);

                    strcpy(a[j], a[j+1]);

                    strcpy(a[j+1], temp);

                }

            }

        }

        for (int i = 0; i < 6; i++) {

            printf("%s\n",a[i]);

        }

        */

        

       /*

        //字符串数组中最长的打印出来

        char a[5][100] = {"shfjdlf","dooppdo","fansiofni","fdoiasefp","polknqwytfd"};

        printf("定义一个变量用于存储最长的字符串,并打印!:\n");

       char maxlen[100] = {"\0"};

        for (int i = 0; i < 5; i++) {

            if (strlen(maxlen) < strlen(a[i])) {

                strcpy(maxlen, a[i]);

            }

       }

        printf("%s\n",maxlen);

        printf("找到最长的字符串的位置,标记出来,并打印:\n");

        unsigned long lenth = 0;

        int index = 0;

        for (int i = 0; i < 5; i++) {

            if (strlen(a[i]) > lenth) {

                lenth = strlen(a[i]);

                index = i;

            }

        }

        printf("%s\n",a[index]);

     */

   /*

    //按照字符串的长度排序

        char a[6][100] = {"jkdlasfn","fidosafnd","zdfldf","dfodpsoanfe","dfnsouaieuge","adndfk"};

        for (int i = 0; i < 6 - 1; i++) {

            for (int j = 0; j < 6 - 1 - i; j++) {

                if (strlen(a[j]) > strlen(a[j+1])) {

                    char temp[100] = {"\0"};

                    strcpy(temp, a[j]);

                    strcpy(a[j], a[j+1]);

                    strcpy(a[j+1], temp);

                }

             }

        }

        for (int i = 0; i < 6; i++) {

            printf("%s\n",a[i]);

        }

    */

       //三维数组

       /*

        //对一个三位数字随机赋值,并打印输出

        int a[2][3][4] = {0};

        for (int i = 0; i < 2; i++) {

            printf("******************\n");

            for (int j = 0; j < 3; j++) {

                for (int k = 0; k < 4; k++) {

                    int n = arc4random() %41 + 10;

                    a[i][j][k] = n;

                    printf("%d\t",a[i][j][k]);


              }

               printf("\n");

           }

        }

        for (int i = 0; i < 2; i++) {

            for (int j = 0; j < 3; j++) {

                for (int k = 0; k < 4; k++) {

                    printf("%d\t",a[i][j][k]);

                }

                printf("\n");

            }

            printf("***********************\n");

        }

    

    

    */

        

        

        

    

    

    }

   return 0;

}




C语言第六天


//

//  main.m

//  C-Lesson6

//

//  Created by lanouhn on 15-6-30.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>

//相当于把Function文件整个.h.m全部拷贝到本文件

#import "Function.h"


//函数

    //声明一个函数

        //返回值 函数名   参数列表(参数中用逗号隔开)

    // 有参函数

    // 无参函数


//int xiaoSanMaiYan(int a);

//int xiaoSanMaiYan2(int a,int b);


//打印 Hello World

  //函数声明

//函数只能嵌套调用,不能嵌套定义







int main(int argc,const char * argv[]) {

    @autoreleasepool {

        

       /*

         printfHelloWorld();

         

         printf("%d\n",studentCount());

         

         int max = maxValue(7, 9);

         printf("max = %d\n",max);

         

         int x = 8, y = 9;

         printf("max = %d\n",maxValue(x, y) );

         */

       /*

         int a = 8 , b = 4;

         printf("maxValue = %d\n",maxValueFromTwo(a, b));

         printf("minValue = %d\n",minValueFromTwo(a, b));

         printf("女生人数 %d\n",girlNumber());

         printf("全班人数 %d\n",studentNumber());

         printf("男生人数 %d\n",boyNumber());

         */

        

       /*

         printfOneToN(5);

         int a = 5;

         printf("%d\n",squareN(a));

         printf("%d\n",sumFrom1ToNSquare(a));

         

         

         int max = 0;

         max = maxValueNumber(3, 5, 9);

         printf("%d\n",max);

         int min = 0;

         min = minValueNumber(3, 5, 7);

         printf("%d\n",min);

         

         int mid = midValueNumber(5, 6, 9);

         printf("%d\n",mid);

         int max1 = max4Number(3, 6, 9, 7);

         printf("%d\n",max1);

         int sum =  dayOfYear(1990, 12, 16);

         printf("%d\n",sum);

         printf("位数:%d\n",numberOfWeiShu(112));

         printf("四则运算: %.2f\n",resultOfSiZe(4,'+',9));

         

         */

        

        

    }

   return 0;

}


//

//  Function.h

//  C-Lesson6

//

//  Created by lanouhn on 15-6-30.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Function :NSObject


//函数的声明


 //两个数的最大值

int maxValueFromTwo(int a ,int b);


int studentCount();


void printfHelloWorld();


int maxValue(int a ,int b );


int minValueFromTwo(int a,int b);


//函数调用

 //全班人数

int studentNumber();

 //男生人数

int boyNumber();

 //女生人数

int girlNumber();


//打印1 - n

void printfOneToN(int count);


//n的平方


int squareN(int a);


//1 - n 的平方和

int  sumFrom1ToNSquare(int n);


//求三个数的最大值


int maxValueNumber(int a ,int b ,int c);


//三个数的最小值

int minValueNumber(int a ,int b ,int c );


//三个数的中间值

int midValueNumber(int a ,int b ,int c);


int sumNumber(int a ,int b ,int c);


//四个数的最大值


int max4Number(int a ,int b ,int c ,int d);


//day是这一年的第几天

int dayOfYear(int year,int month ,int day);


//求一个数字的位数

int numberOfWeiShu(int a);


//四则运算


float resultOfSiZe(float a ,char b , float c);



@end


//

//  Function.m

//  C-Lesson6

//

//  Created by lanouhn on 15-6-30.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import "Function.h"

//函数的实现

@implementation Function



int maxValueFromTwo(int a ,int b)

{

   if (a > b) {

       return a;

    }else{

       return b;

    }

    

}

//实现两个数求大小

int maxValue(int a ,int b )

{

    //测试参数实参和形参

    a++;

   return (a > b ? a : b);

    

}

int studentCount()

{

   return 42;

}

void printfHelloWorld()

{

    printf("******************\n");

    printf("   Hello World!\n");

    printf("******************\n");

}

int minValueFromTwo(int a ,int b)

{

   if (a < b) {

       return a;

    }else{

       return b;

    }

}



//全班人数

int studentNumber()

{

    returnboyNumber() + girlNumber();

}

//男生人数

int boyNumber()

{


   return 40;


}

//女生人数

int girlNumber()

{

   return 4;

}


void printfOneToN(int count)

{

   for (int i =1; i <= count; i++) {

       printf("%d\t",i);

    }

   printf("\n");

}

int squareN(int a)

{

   return (a * a);

}

int  sumFrom1ToNSquare(int n)

{

   int sum = 0;

   for (int i =0; i <= n; i++) {

       sum +=squareN(i);

    }

   return sum;


}


int maxValueNumber(int a ,int b ,int c)

{

   int max = 0;

    max = (a > b ? a : b) > c ? (a > b ? a : b) : c ;

   return max;

    

    

}

int minValueNumber(int a ,int b ,int c )

{


   int min = 0;

    min = (a < b ? a : b) < c ? (a < b ? a : b) : c ;

   return min;



}

int sumNumber(int a ,int b ,int c)

{


   int sum = a + b + c ;

   return sum ;

}


int midValueNumber(int a ,int b ,int c)

{

   int mid = 0;

   int max = maxValueNumber(a, b, c);

   int min = minValueNumber(a, b, c);

    mid =sumNumber(a, b, c) - max - min ;

   return mid;

}


int max4Number(int a ,int b ,int c ,int d)

{


   int p = maxValueNumber(a, b, c);

   int q = maxValueFromTwo(p, d);

   return q;

}


int dayOfYear(int year,int month ,int day)

{

   /*

    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

    int i,s = 0;

    printf("请输入日期:");

    scanf("%d%d%d",&year,&month,&day);

    if (year%400==0||(year%4==0&&year%100!=0)) {

        a[2]=29;

    }

    for (i=0; i<month; i++) {

        s=s+a[i];

    }

    if (day>a[month]||month>13) {

        printf("没有这一天");

    }else{

        printf("%d",s+day);

    }

    return s;

*/

   BOOL isRunNian = YES;

    //判断是否是闰年

   if (year % 400 ==0 || (year % 100 !=0 && year % 4 ==0)) {

        isRunNian =YES;

    }else{

        isRunNian =NO;

    }

    

   int monthDays[12] = {31 ,28,31,30,31,30,31,31,30,31,30,31};

    //存放所有的天数

   int allDays = 0;

   for (int i =0 ; i < month - 1; i++) {

        allDays = allDays + monthDays[i];

    }

    allDays = allDays + day;

    //判断是否是闰年,并且是否超过二月

   if(isRunNian && (month > 2)){

        allDays++;

    }

    

   return allDays;

    

}


int numberOfWeiShu(int a)

{

   int count = 0;

   while ( a / 10 !=0) {

        a = a /10;

        count ++;

    }

    

   return count + 1;

    

}



float resultOfSiZe(float a ,char b , float c)

{

   float result = 0.0;

   switch (b) {

       case '-':

            result = a - c ;

           break;

       case '+':

            result = a + c ;

           break;

       case '*':

            result = a * c;

           break;

       case '/':

        {

           if ( c != 0) {

                result = a / c ;

            }else {

               printf("除数不能为0\n");

            }

            

        }

           break;

       default:

            printf("四则运算中没有这个符号,请重新输入:\n");

           break;

    }

   return  result;

    

}





@end


//

//  main.m

//  C-Lesson6.1

//

//  Created by lanouhn on 15-6-30.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>


int addTwo(int a )

{

   return  a + 2;

}

void function1(int a[],int count)

{

   for (int i =0; i < count; i++) {

        a[i] =1;

    }

}


//升序排序方法

void sortArray(int a[],int count)

{

   for (int i =0; i < count -1; i++) {

       for (int j =0; j < count - 1 - i; j++) {

           if (a[j] > a[j+1]) {

               int temp = a[j];

                a[j] = a[j+1];

                a[j+1] = temp;

            }

        }

    }

   for (int i =0; i < count; i++) {

       printf("%d\t",a[i]);

    }


}

//求一个字符串中的空格数

int blankOfString(char a[])

{

   int i = 0;

   int count = 0;

   while (a[i] != '\0') {

       if (a[i] == ' ') {

            count ++;

        }

           i++;

    }

   return count;

}


//递归调用


//n!

int nnnnn(int n)

{

   if (n > 0) {

      return  nnnnn(n -1) * n;

    }else{

       return 1;

    }


}









int main(int argc,const char * argv[]) {

    @autoreleasepool {

      

       /*

        int x = 6;

        int b = addTwo(x);

        printf("x = %d\nb = %d\n",x ,b);

     

        function1(b,5);

        for (int i = 0; i<5; i++) {

            printf("%d\t",b[i]);

        }

        

        int b[5] = {4,5,6,7,8};

        sortArray(b, 5 );

         

        char str[100] = "sfjid fdsfodns dofn d fdsfidsfo ndfdsof nd ondf dnf";

        int count = blankOfString(str);

        printf("空格数:%d\n",count);

        

        int result = nnnnn(5);

        printf("%d\n",result);

        */

       /*

        int a ,b ,c ;

        printf("请输入三个数:\n");

        scanf("%d %d %d",&a,&b,&c);

        int min = a < b ? (a < c ? a : c ):( b < c ? b : c  );

        printf("%d\n",min);

        int mid = a < b ? (b < c  ? b : c) : (a < c ? a : c);

        printf("%d\n",mid);

        */

        

        

        

        

        

        

    }

   return 0;

}




C语言第七天


//

//  Function.h

//  C-Lesson7

//

//  Created by lanouhn on 15-7-1.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>

//构造一个新的类型,用基本数据类型当成员变量也可以用构造类型当成员变量

struct student{

   char name[30];

   char sex ;

   int age;

};

typedef struct teacher{

   char name[30];

   char sex ;

   int age;

   int classes;

}Teacher;


typedef struct computer {

    

   char jianPan[30];

   char xianShiQi[30];

   char shuBiao[30];

    

    

}Computer;



struct lanouStudent{

   char name[30];

   float cResult;

   float ocResult;

   float UIResult;

       

};

//点结构体

struct myPoint{

    

   float x ;

   float y ;

    

};

//矩形结构体

struct myRect{

    

   struct myPoint p;

   float width;

   float height;

    

};



//打印一个学生的信息

void printfOneStudentInfo(struct student stu);

//循环打印一个学生数组的信息

void printfStudents(struct student stus[],int count);

//按照学生的年龄排序学生数组

void sortedStudentsByAge(struct student stus[] ,int count);

//求一个学生的平均成绩

float averageScore(struct lanouStudent stu);

//循环打印平均分

void printfAverageScore(struct lanouStudent stus[] ,int count);

//C语言排序

void sortedStudentsByC(structlanouStudent stus[] , int count);

//OC排序

void sortedStudentByOc(structlanouStudent stus[], int count);

//打印一个蓝鸥学生的信息

void printfOneLanouStudentInfo(structlanouStudent stu);

//打印一个数组

void printfLanouStudentes(structlanouStudent stus[] , int count);

//根据学生的姓名的长度进行排序

void sortedLanouStudentsByName(structlanouStudent stus[] , int count);

//根据学生姓名的大小进行排序

void sortedByName(structlanouStudent stus[] , int count );


//  Function.m

//  C-Lesson7

//

//  Created by lanouhn on 15-7-1.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import "Function.h"

/*

void printfOneStudentInfo(struct student stu)

{


    printf("name = %s\n",stu.name);

    printf("sex = %c\n",stu.sex );

    printf("age = %d\n",stu.age);

    printf("****************************\n");


}

void printfStudents(struct student stus[],int count)

{


    for (int i = 0 ; i < count ; i ++) {

        printfOneStudentInfo(stus[i]);

    }

}


void sortedStudentsByAge(struct student stus[] ,int count)

{

    for ( int i = 0 ; i < count - 1 ; i ++) {

        for (int j = 0 ; j < count - 1 - i; j++) {

            //按照年龄排序,比较并交换学生位置

            if (stus[j].age > stus[j+1].age) {

                struct student temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}

 */



float averageScore(structlanouStudent stu)

{

   float result = 0.0;

    result = (stu.cResult + stu.ocResult + stu.UIResult) /3.0;

   return result;

}

void printfAverageScore(structlanouStudent stus[] , int count)

{

    

   for (int i =0; i < count; i++) {

       float result = averageScore(stus[i]);

       printf("学生 %d的平均分 %.2f\n",i+1,result);

    }

}

void sortedStudentsByC(structlanouStudent stus[] , int count)

{

   for (int i =0; i < count - 1 ; i ++) {

       for (int j =0 ; j < count - 1 - i; j ++) {

           if (stus[j].cResult > stus[j+1].cResult ) {

               struct lanouStudent temp = stus[j];

                stus[j] = stus[j+1] ;

                stus[j+1] = temp;

            }

        }

    }

}

//void sortedStudentByOc(struct lanouStudent stus[], int count)

//{

//    for (int i = 0; i < count - 1; i ++) {

//        for (int j = 0 ; j < count - 1 - i; j ++) {

//            if (stus[j].ocResult  > stus[j+1].ocResult  ) {

//                struct lanouStudent temp = stus[j];

//                stus[j] = stus[j+1];

//                stus[j+1] = temp;

//            }

//        }

//    }

//}

void printfOneLanouStudentInfo(structlanouStudent stu)

{

    printf("name = %s\n",stu.name);

    printf("CResult = %.2f\n",stu.cResult);

    printf("OcResult = %.2f\n",stu.ocResult);

    printf("UIResult = %.2f\n",stu.UIResult );

    printf("*************************************\n");

}


void printfLanouStudentes(structlanouStudent stus[] , int count)

{

   for (int i =0; i < count; i ++) {

        printfOneLanouStudentInfo(stus[i]);

    }

}

//根据学生的姓名长度进行排序

void sortedLanouStudentsByName(structlanouStudent stus[] , int count)

{

   for (int i =0; i < count - 1; i++) {

       for ( int j =0; j < count - 1 -i ; j++) {

           if (strlen(stus[j].name) >strlen(stus[j+1].name)) {

               struct lanouStudent temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}


//根据学生姓名的大小进行排序

void sortedByName(structlanouStudent stus[] , int count )

{

   for (int i =0; i < count - 1; i++) {

       for ( int j =0; j < count - 1 -i ; j++) {

           if (strcmp((stus[j].name), (stus[j+1].name)) >0) {

               struct lanouStudent temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}



//

//  main.m

//  C-Lesson7

//

//  Created by lanouhn on 15-7-1.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Function.h"


//结构体

/*

 结构体内存分配空间原则:

   1、按照最大的数据类型分配空间

   2、以内存对其的方式分配空间

 

*/

typedef struct person{

   char name[30];

   int age ;

   char sex ;

    

}Person;




int main(int argc,const char * argv[]) {

    @autoreleasepool {

       /*

       //通过自定义的结构体类型,定义一个变量stu并赋初值

        struct student stu = {"尹江涛",'m',120,133.5,175.2};

        //通过结构体变量,点出该变量内部的成员变量

        printf("%d\n",stu.age);

        printf("%s\n",stu.name);

        struct teacher tea = {"翔哥",'m',36,30};

        */

        

        /* struct teacher jianRen = {"刘翔宇",'m',36,30};

         struct student stu1 = {"尹江涛",'m',24};

         struct student stu2 = {"禹尧",'w',22};

         struct student stu3 = {"赵立阳",'m',23};

         

         //存放结构体的数组

         

         for (int i = 0; i < 3; i++) {

         printf("%s\t",stus[i].name);

         printf("%c\t",stus[i].sex);

         printf("%d\t",stus[i].age);

         printf("\n");

         printfOneStudentInfo(stus[i]);

         }

     

        struct student stus[] = {stu1,stu2,stu3};

        sortedStudentsByAge(stus, 3);

        printfStudents(stus, 3);

       */

       /*

        struct lanouStudent stu1 = {"尹江涛",78.5,89.2,85.8};

        //求这个学生的平均分

        float result = averageScore(stu1);

        printf("result = %.2f\n",result);

        

        struct lanouStudent stu1 = {"yuyao",78.5,89.2,85.8};

        struct lanouStudent stu2 = {"huangzheng",88.4,86.5,84.6};

        struct lanouStudent stu3 = {"zhanghuai",78.9,89.87,90.56};

        //三个学生放进一个学生数组中

        struct lanouStudent stus[] = {stu1,stu2,stu3};

        //循环打印三个学生的平均值

        //  printfAverageScore(stus, 3);

        //按照学生C语言的成绩排序 升序

        // sortedStudentsByC(stus, 3);

        //  sortedStudentByOc(stus, 3);

        

        //sortedLanouStudentsByName(stus, 3);

        sortedByName(stus,3);

        printfLanouStudentes(stus, 3);

        */

       /*

        struct myPoint point1 = { 6, 4.5 };

        struct myPoint point2 = { 6, 4.5 };

        if ((point1.x == point2.x) && (point1.y == point2.y)) {

            printf("两个点重合\n");

        }else if(point1.x == point2.x){

            printf("两个点在同一条竖直线上\n");

        }else if(point1.y == point2.y){

            printf("两个点在同一条横线上\n");

        }else{

            printf("两个点之间没有关系\n");

        }

        */

       /*

        struct myRect rect1 = { {4,5.5}, 12, 9 };

        

        printf(" width = %.2f\n",rect1.width);

        printf(" x = %.2f\n",rect1.p.x);

        printf(" y = %.2f\n",rect1.p.y);

         

        //typedef  类型名 重定义

        int a = 5;

        typedef int  xiaohua;

        xiaohua b = 9;

        printf("%lu\n",sizeof(b));

        printf("%lu\n",sizeof(a));

         

         


        struct teacher teach1 = {"qifei",35,'w'};

        Teacher teach2 = {"zuoxiuli",32,'w'};

        

        Computer computer = {"双飞燕","三星","镭射"};

        

        

        Person per1 = {"yuyao",'m',23};

        printf("%lu\n",sizeof(per1));

        printf("%lu\n",sizeof(Person));

        */

        

        

        

        

    }

   return 0;

}






C语言第八天


//

//  main.m

//  C-lesson8.pre

//

//  Created by lanouhn on 15-7-2.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Function.h"

int main(int argc,const char * argv[]) {

    @autoreleasepool {

      

   //指针

         //指针变量内存空间占8个字节  sizeof指针变量出来的空间永远是8个字节

        

       /*

        //定义一个变量a

        int a = 5;

        int b = 8;

       

        //定义一个指针变量p指向内存中整型变量a的地址

        int *p = &a;

        //指针p *p是取地址里面的内容

        //定义时出现*意思是把一个普通变量修饰成指针变量

        //在其他地方对指针变量用 *意识是 把指针变量指向的地址内容取出来

        *p = 7;

        //指针重指向  指针指向b的地址

        p = &b;

        // * 地址  把地址里面的内容拿到

        *p = 100;

        printf("a = %d\n",a);

        printf("b = %d\n",b);

        // 直接取址 间接取址

        

        */

       /*

        // 内存由高到低分配  a的地址高于b的地址

        int a = 5;

        int b = 8;

        int *p = &a;

        int *q = &b;

        printf("a的地址 %p\n",&a);

        printf("p 取地址 %p\n",p);

        

        printf("b的地址 %p\n",&b);

        printf("q 取地址 %p\n",q);

        

        printf("%lu\n",sizeof(p));

        

//        char *j = &a;

//        printf(" %lu\n",sizeof(j));

        

        //指针的运算  地址只能加减  指针类型决定每次移动的字节数

        

        int a = 5;

        int b = 8;

        int *p = &a;

        int *q = &b;

        char * j = &a;

        printf(" p = %p\n",p);

        printf(" q = %p\n",q);

        printf(" j = %p\n",j);

        

        //定义时候指针的类型决定:

        //1、指针每一+1 - 1的跳动,跳动多少个字节

        *(p - 1) = 100;

        printf(" b = %d\n",b);

        

        j = &b;

        printf("%d\n",*(j + 4));

        */

       //指针数组

        

       /*

        short a [5] = { 3, 7, 8, 5, 6 };

        char *p = a;

        int *q = a ;

        printf("%d\n",*p);

        printf("%D\n",*q);

        

//         int *p = a;

//        printf("%d\n",a[2]);

//        printf("%d\n",2[a]);

//        

//        printf("%d\n",*p);

//        printf("%d\n",*(P + 1));


        

        //循环打印数组里面的元素 指针的方式打印

        int a[5] = {4,2,7,9,3};

        int * p = a;

        for (int i = 0 ; i < 5; i++) {

            printf("%d\t",*(p+i));

        }

        

         

        int a = 5 ,b = 8;

        printf("a = %d , b = %d\n",a , b);

        printf("**************************\n");

        changeTwoValueByCommon(a, b);

        printf("a = %d , b = %d\n",a , b);

        printf("**************************\n");

        changeTwoValueByAddress(&a, &b);

        printf("a = %d , b = %d\n",a , b);

     

   

        int array[5] = {6,3,4,7,8};

        //printfArray(array, 5);

        

        //valueationArray(array, 5);

        

        sortedArray(array, 5);

        

      

        

        //指针字符串  %s从给定的地址开始打印,一直到‘\0’结束

        char str[100] = "fdshjlfdfnjklk";

        char *p = str;

        printf("%s\n",p);

        //存的是从常量区拷贝过来的内容

        char a[] = "iPhone";

        //存的是常量区字符串的地址

        //在常量去进行操作就会崩

        

        char *p = a ;

        *(p + 1 ) = 'a';

        printf("%s\n",a);

        

         


        //空地址区  内存中最低的地址

        

        int a = 6;

        int *p = &a;

        printf("%d\n",*p);

        printf("%p\n",p);

        //代表一个空地址

        p = NULL;

        p = Nil;

        printf("%p\n",p);

         */

        

       //数组指针

       int a1 = 4, a2 =5, a3 = 6, a4 =7, a5 = 8;

        

       int *p1 = &a1;

       int *p2 = &a2;

       int *p3 = &a3;

       int *p4 = &a4;

       int *p5 = &a5;

        

//        int a[5] = { a1, a2, a3, a4, a5 };

//        char b[5] = {'q','k','w','u','g'};

        

       int *pp[5] = { p1, p2, p3, p4, p5 };

        

        

        char c[3][100] = { "iPhone", "android","winPhone" };

        // *地址   **内容

       printf("%d\n",*pp[3]);

//        printf("%d\n",**(pp+3));

//        

        //定义一个指针变量

 //       char *str = c;

       printf("%s\n",c[0]);

//        printf("%c\n",**(c + 1));

      printf("%c\n",*(*(c +0 + 1)));

//       printf("%c\n",*(str+1));

        

        

        

    }

   return 0;

}


//

//  Function.m

//  C-lesson8.pre

//

//  Created by lanouhn on 15-7-2.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import "Function.h"



//声明一个方法 交换两个变量的值

void changeTwoValueByCommon(int a,int b)

{

   int temp = a ;

    a = b;

    b = temp;

    printf("a = %d , b = %d\n",a , b);

    

}


//地址方法  交换两个变量的值

void changeTwoValueByAddress(int * p ,int * q)

{

   int temp = *p;

    *p = *q;

    *q = temp;

    printf(" *p = %d\n",*p);

    printf(" *q = %d\n",*q);

}


//通过地址的方式 循环打印一个数组

void printfArray(int * p ,int count)

{

    

   for (int i =0; i < count; i++) {

       printf("%d\t",*(p+i));

    }

}

//对一个数组赋随机值并打印

void valueationArray(int *p ,int count)

{

   for (int i =0; i < count ; i ++) {

       int k = arc4random() %30 + 10;

        *(p + i) = k;

    }

  

   printfArray( p , count);

}

//对一个数组进行升序排序并打印

void sortedArray(int *p ,int count )

{

    

   for (int i =0; i< count - 1; i++) {

       for (int j =0; j < count - 1 - i; j++) {

           if ( *(p + j) > *(p+j+1)) {

               int temp = *( p + j);

               * (p + j) = *(p + j+1);

                *(p +j+1) = temp;

            }

        }

    }

   printfArray(p, count);

}





C语言第九天


//

//  main.m

//  C-Lesson9.ptr

//

//  Created by lanouhn on 15-7-3.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Function.h"



//宏定义

  //两种写法

// 1、宏名字 全部大写

// 2、宏名字k+首字母大写


#define  PI 3.1415926


#define ADD(A,B) (A + B)


#define STUDENTNUMBER 2015063020


// 预编译   条件编译


#define kLiuxiangyu 11111

int a =6;


//第一种条件编译写法

#ifdef kLiuXiangYu


#define PPF 123


#else


#define PPT 456


#endif



//第二种条件编译写法

#ifndef kLiuXiangYu


#define JJJ 123


#else


#define JJJ 456


#endif



//第三种条件编译写法

#if kLiuXiangYu

#define KKK 1213

#else

#define KKK 4546

#endif






int main(int argc,const char * argv[]) {

    @autoreleasepool {

     /*

        Student stu1 = {"李显政",36,'m'};

        Student *p = Nil;

        p = &stu1;

        printf("name = %s\n",stu1.name);

        // ->指向操作符,通过一个地址,指向里面的小空间   ->与地址有关 指向地址取内容

        printf("name = %s\n",p->name);

        printf("name = %s\n",(*p).name);

        

        MyPoint p1 = {3.6,2.5};

        MyPoint p2 = {4.8,1.2};

        float ybian = p1.x - p2.x;

        float xbian = p1.y - p2.y;

        float d = sqrt(xbian * xbian - ybian * ybian);

        printf("两点之间的距离:%.2f\n",d);

      */

       /*

        //小写改为大写  小写 - 大写 = 32

        Student stu1 = {"abcdef",36,'m'};

        Student * p = nil;

        p = &stu1;

        int i = 0;

        

        while ( p->name[i]) {

            p->name[i] = p->name[i] - 32;

        i++;

        }

       printf("%s\n",p->name);

        

        while (*(p->name+i) != '\0' ) {

            

            *(p->name+i) = *(p->name+i)  - 32;

            i++;

        }

        printf("%s\n",p->name);

         

       //

        lanouStudent stu1 = {"禹尧",'m',80.5};

        lanouStudent stu2 = {"徐文博",'f',86.5};

        lanouStudent stu3 = {"尹江涛",'m',89.5};

        lanouStudent stus[3] = {stu1,stu2,stu3};

        

      //  addScore(stus, 3);

       // sortedLanouStudent(stus, 3);

        goodStudent(stus, 3);

        

        //结构体对象取地址变量  用点语法

        //结构体对象所在的空间的地址取成员对象 用指向操作符

        

        */


//        float r = 3.0;

//        printf("圆的周长:%.2f\n",2 * PI * r);

//        printf("圆的面积:%.2f\n",r * r * PI);

//        

//        int a = ADD( 6, 8 ) * ADD( 4, 6 );

//        printf("%d\n",a);

        

        

       printf("%d\n",PPT);

       printf("%d\n",JJJ);

       printf("%d\n",KKK);

        

        

    }

   return 0;

}


//

//  Function.h

//  C-Lesson9.ptr

//

//  Created by lanouhn on 15-7-3.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>


typedef struct student{

    

   char name[30];

   int age;

   char sex;

    

}Student;

// 结构体

typedef struct myPoint{

    

   float x ;

   float y ;

    

}MyPoint;


typedefstruct lanouStudent{

    

   char name[30];

   float score;

   char sex;

    

}lanouStudent;

//按照的成绩学生升序排序

void sortedLanouStudent(lanouStudent *p ,int count);

//打印一组学生

void printfLanouStudent(lanouStudent *p ,int count);

//学生的成绩加60分,如果超过满分那就100,并打印输出

void addScore(lanouStudent *p,int count);

//学生成绩大于等90优等生 ,在学生的姓名后面拼接(A)并打印

void goodStudent(lanouStudent *p  ,int count);



//

//  Function.m

//  C-Lesson9.ptr

//

//  Created by lanouhn on 15-7-3.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import "Function.h"



//按照的成绩学生升序排序

void sortedLanouStudent(lanouStudent *p ,int count)

{

   for (int i=0; i < count - 1; i++) {

       for (int j =0; j < count -1 - i; j++) {

                       if (p[j].score > p[j+1].score) {

                           lanouStudent temp = p[j];

                            p[j] = p[j+1];

                            p[j+1] = temp;

                        }

        }

    }

    printfLanouStudent(p, count);

}

//打印一组学生

void printfLanouStudent(lanouStudent *p ,int count)

{

   for (int i =0; i < count; i++) {

        printf("name = %s  score = %.2f\n",p[i].name,p[i].score);

    }

}

//学生的成绩加60分,如果超过满分那就100,并打印输出

void addScore(lanouStudent *p, int count)

{

   for (int i =0; i < count ; i++) {

       if ((p + i)->sex =='m') {

            (p + i)->score = (p + i)->score +60;

        }

       if ((p + i)->score >100.00) {

                (p + i)->score =100.00;

        }

    }

    printfLanouStudent(p, count);

}

//学生成绩大于等90优等生 ,在学生的姓名后面拼接(A)并打印

void goodStudent(lanouStudent *p  ,int count)

{

   for (int i =0; i < count ; i++) {

       if ((p + i)->score >90) {

           strcat((p+i)->name,"(A)");

        }

    }

    printfLanouStudent(p, count);


}




C语言第十天


//

//  main.m

//  C-Lesson10

//

//  Created by lanouhn on 15-7-6.

//  Copyright (c) 2015 lanouhn. All rights reserved.

//


#import <Foundation/Foundation.h>


typedef struct student{

   char name[30];

   int age;

   char sex;

}Student;




int main(int argc,const char * argv[]) {

    @autoreleasepool {

        

       /*

         //栈区

         //系统分配空间,系统释放

         int a = 5;

         int *p = &a;

         //堆区

         //特点 用户自己分配自己释放

         //malloc自己分配函数  以字节为单位

         //malloc 动态内存分配函数,每次分配n个字节空间

         //空间释放函数 free()

         

         //        int b = malloc(4);

         //        int *q = &b;

         //栈区位置比堆区高

         int *q = malloc(4);

         printf("%p\n",p);

         printf("%p\n",q);

         //void* 泛型指针类型

         //如果不释放,则系统内存泄露(内存浪费但是系统不会崩溃)

         //如果内存空间释放次数过多,则造成过度释放(系统崩溃)

         free(q);

         //空间释放完毕之后要清空

         q = nil;

         

         //静态区

         //特点:静态取得空间只被初始化一次而且空间里面的内容,只有到程序结束后,才会被释放

         //静态区变量声明static

         static int c = 6;

         printf("c = %p\n",&c);

         //const 静态初始化

        // const int b = 9;

        */

       /*

         //堆区  由低到高分配

         int *p = malloc(4);

         int *q = malloc(4);

         *p = 6;

         *q = 7;

         

         

         printf("p = %p\n",p);

         printf("q = %p\n",q);

         

         printf("p = %d\n",*p);

         printf("q = %d\n",*q);

         // 释放  指空

         free(p);

         p = nil;

         free(q);

         q = nil;

         

         //分配一个空间 存放数组  元素个数 类型 int

         p = malloc(20);

         for (int i = 0; i < 5; i++) {

         *(p+i) = i + 1;

         }

         for (int i = 0; i < 5; i++) {

         printf("%d\t",*(p+i));

         }

         

        

        

        //分配一百个字节的空间存放字符串 每个字符都是一个字节 所以不能整形指针变量

        char *p = malloc(100);

        printf("请输入一个字符串\n");

        scanf("%s",p);

        //求输入的字符串中的数字个数

        int i = 0;

        int count;

        while ( *(p+i) != '\0') {

            if ( (*(p+i) > 0) && (*(p+i) <= 9)) {

                count++;

            }

            i++;

        }

        printf("i = %d\n",i);

        printf("count = %d\n",count);

         */

       /*

        //动态分配一个内存,存放三行四列的二维数组

        int (*p)[5] = malloc(48);

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                int k = arc4random()%10 + 1;

                *(p+i)[j] = k;

            }

        }

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 4; j++) {

                printf("%d\t",*(p+i)[j]);

            }

            printf("\n");

        }

        

        //an次方

//        int a = 9;

//        float b = powf(a, 2);

//        printf("%.2f\n",b);

    //malloc分配的空间,不一定干净,需要我们自己来清洗一下

        

        int *p = malloc(80);

        for (int i = 0; i < 20; i++) {

            *(p+i) = 0;

            printf("%d\n",*(p + i));

        }

    */

        

//calloc 内存清洗函数 不仅分配空间还帮忙清洗一下空间

       /*

        int *p = calloc(20, sizeof(int));

        for (int i =0; i < 20; i++) {

            printf("%d\n",*( p + i ));

        }

       

//分配一百个字节的空间

        

        int *q = calloc(100, sizeof(int ));

        for (int i = 0; i < 100; i++) {

            printf("%d\n",*(q + i));

        }

    */

        //realloc 内存重分配函数

       /*

        //reallocd(A , B);

          //A代表需要重新分配空间的地址

          //B为重新分配的空间大小

        //如果原有空间后面 b - sizeofa)这么大,则直接在原有空间分配

        //若没有,则重新向内存请求一个足够大的空间并返回新空间的地址

        

        int  *p = malloc(8);

        *p = 4;

        *(p+1 ) = 5;

        printf("%d\n",*p);

        printf("%d\n",*(p+1));

        int *q = realloc(p, 12);

        *(q+2) = 9;

        printf("%d\n",*(q+2));

        

        printf("p = %p\n",p);

        *(q + 3) = 10;

        realloc(q, 16);

        printf("q = %p\n",q);

         */

        //memcpy 内存拷贝函数

        // memcpy(A,B,N); 从空间B中拷贝 N * 类型 个字节到B空间

       /*

        int *p = malloc(12);

        int *q = malloc(12);

        for (int i = 0; i < 3; i++) {

            printf("%d\t",*(p + 1));

        }

        //拷贝P空间的12个字节到q中去

        memcpy(q, p, 3);

        for (int i= 0; i< 3;i++) {

            printf("%d\t",*(q+1));

        }

        */

        //memcmp 内存比较函数  按照字节比较

       /*

        char *a = malloc(4);

        char *b = malloc(4);

        *(a + 0) = 'e';

        *(a + 1) = 'f';

        *(a + 2) = 'g';

        *(a + 3) = 'h';

        

        *(b + 0) = 'e';

        *(b + 1) = 'f';

        *(b + 2) = 'g';

        *(b + 3) = 'h';

        //循环打印ab空间中的内容

        for (int i = 0; i < 4; i++) {

            printf("%c\t",*(a + i));

        }

        printf("\n");

        for (int i = 0; i < 4; i++) {

            printf("%c\t",*(b+i));

        }

        

        int result = memcmp(a, b, 4);

        printf("\nresult = %d\n",result);

        */

        //memset 内存设置函数

        

       /*

        int *a = calloc(3, sizeof(int ));

        for (int i = 0; i < 3; i++) {

            printf("%d\t",*(a+i));

        }

        printf("\n");

        

        //所要设置的空间是所要设置的字节个数是12  每一个字节里面设置的内容是1

        memset(a, 1, 12);

        for (int i = 0; i < 3; i++) {

            printf("%d\t",*(a + i));

        }

        */

       /*

//        Student stu1 = {"yuyao",23,'m'};

        Student *p = malloc(sizeof(Student));

//        p->name = "yuyao";

        strcpy(p->name, "fghjkl");

        p->age = 23;

        p->sex = 'm';

//        p->name[1] = 'x';

        *( p->name + 1 ) = 'x';

        printf(" name = %s  age = %d sex = %c\n",p->name,p->age,p->sex);

        

        //动态在堆区开辟内存,用来存放字符串

        char name[100] = {'\0'};

        printf("请输入一个字符串\n");

        //根据字符串的长度在堆区开辟大小正好的空间存放name中的字符串

        char *p = malloc(StrLength(name));

        scanf("%s",name);

//  p = name;p重指向了

        for (int i = 0; name[i]; i++) {

            *( p + i) = name[i];

        }

        

//        int i = 0;

//        while (*(name + i) != '\0') {

//            *(p + i) = *(name + i );

//        }

//        *(p+i) = '\0';

//        

        printf("name = %s\n",name);

        printf("p = %s\n",p);

        

        */

        //把一个字符串中的所有数字存到堆区一块大小正好的空间里

       /*

        printf("请输入一个字符串:\n");

        char str[100] = {'\0'};

        scanf("%s",str);

        //拿到字符串中数字的个数

        int i = 0;

        int count = 0;

        char number[100] = {'\0'};

        while (*(str + i) != '\0') {

            if ( (  *(str + i) >= '0' ) && ( *(str + i ) <='9') ) {

                //把碰到的数字一个一个存放到number

                number[count] = *(str + i);

                count ++;

            }

            i++;

        }

        //字符拷贝完后,存进去一个'\0';

        number[count] = '\0';

        printf("number = %s\n",number);

        char *p = malloc(count + 1);

        stpcpy(p, number);

        printf(" p = %s\n",p);

        */

        //字符串数组分别存入

       /*

        char string[6][100] = {"rtyuio","iPhone","Android","winPhone","Macminn","Windows"};

        char *ps[6] = {'\0'};

        //循环遍历 求出每一个字符串的长度并在堆区开辟相应的空间

        for (int i = 0; i < 6; i++) {

//            ps[i] = malloc(StrLength(string[i]));

//            strcpy(ps[i], string[i]);

//            printf(" ps[%d] = %s\n",i,ps[i]);

            //求出字符串的长度

            unsigned long length = strlen( *(string + i) );

            //开辟空间

            char *p = malloc(length + 1);

            //把字符串拷贝进去

            strcpy(p, *(string + i) );

            *( ps + i) = p;

        }

        for (int i = 0; i < 6 ; i++) {

            printf("ps[%d] = %s\n ",i,*(ps + i));

        }

        */

        

        

        

         }

      return 0;

}




C语言第十一天:


//

//  main.m

//  C-Lesson11

//

//  Created by 尹江涛 on 15-7-7.

//  Copyright (c) 2015 尹江涛. All rights reserved.

//


#import <Foundation/Foundation.h>


typedef int PFUN (int ,int);


//2个数的最大值

//函数名 类似于数组名  同样代表函数在代码区内存空间的首地址

int maxValue(int a,int b){

    

   return (a>b?a:b);


}

// int(int ,int)* 类型 定义一个指针变量 p

int (*p) (int ,int );


int minValue(int a,int b){

    

   return (a < b ? a : b);

    

}


//求最大值或者最小值

int maxOrMinFromTwo(int a, int b,PFUN *p )

{

   return p(a,b);

}


int sumFunction(int a,int b){

    

   return a + b;

}

int minusFunction(int a,int b)

{

   return a - b;

}

typedef struct student{

   char name[30];

   int age;

   float score;

   float height;

   float weight;

   char sex;

   float birthday;

    

}Student;

/*

//按年龄

void sortedStudentByAge(Student *p ,int count)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j<count - i - j; j++) {

            if ( (p+j)->age > (p+j+1)->age ) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

    }

}

//成绩

void sortedStudentByScore(Student *p,int count)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j<count - i - j; j++) {

            if ( (p+j)->score > (p+j+1)->score) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

    }

    

}

//身高

void sortedStudentByHeight(Student *p ,int count)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j<count - i - j; j++) {

            if ( (p+j)->height > (p+j+1)->height ) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

    }

}

//体重

void sortedStudentByWeight(Student *p ,int count)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j<count - i - j; j++) {

            if ( (p+j)->weight > (p+j+1)->weight ) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

    }

}

//生日

void sortedStudentByBirthday(Student *p ,int count)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j<count - i - j; j++) {

            if ( (p+j)->birthday > (p+j+1)->birthday ) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

    }

}

//按姓名

void sortedStudentByName(Student *p ,int count)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j<count - i - j; j++) {

            if ( strcmp((p+j)->name, (p+j+1)->name) > 0 ) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

    }

}

 */

/*

void printfStudent(Student *p,int count){

    for (int i = 0; i<count; i++) {

        printf("name %s age %d score %.2f height %.2f weight %.2f sex %c brithday %.2f\n",(p+i)->name,(p+i)->age,(p+i)->score,(p+i)->height,(p+i)->weight,(p+i)->sex,(p+i)->birthday);

    }

}

typedef void (*PStudentFun)(Student *p ,int count);



BOOL score(Student stu1,Student stu2){

    

    return stu1.score > stu2.score;

}



BOOL age(Student stu1,Student stu2){

    

    return stu1.age > stu2.age;

    

}



BOOL birthday(Student stu1,Student stu2){

    

    return stu1.birthday > stu2.birthday;

}



BOOL height(Student stu1,Student stu2){

    

    return stu1.height > stu2.height;

    

}


BOOL name(Student stu1,Student stu2){

    

    return strcmp(stu1.name, stu2.name);

    

}


BOOL weight(Student stu1,Student stu2){

    

    return stu1.weight > stu2.weight;

}


typedef BOOL boolFun (Student , Student);

void sorted(Student *p , int count ,boolFun *q)

{

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0 ; j < count - 1 - i; j++) {

            if (q(p[j],p[j+1])) {

                Student temp = *(p+j);

                *(p+j) = *(p+j+1);

                *(p+j+1) = temp;

            }

        }

        

    }

    

}


//控制台输入排序条件,然后排序

typedef struct studentFunction{

    boolFun *p;

    char strs[100];

}StudentFunction;

boolFun *choseFunction(char *name)

{

    if (strcmp(name, "age") == 0) {

        return age;

    }

    return NULL;

}

 */

int main(int argc,const char * argv[]) {

    @autoreleasepool {

      

        //指针函数 函数回调

       

       int a = 9,b =7;

       int result = maxValue(a, b);

       printf("maxValue = %d\n",result);

        //每种类型都有对应的指针变量接收其地址

        //调用函数maxValue

       p = maxValue;

       int result1 = p(a, b);

       printf("result1 = %d\n",result1);

        

       p = minValue;

       int result2 = p(a,b);

       printf("result2 = %d\n",result2);

        

       int result3 = maxOrMinFromTwo(6,8, maxValue);

       printf("result3 = %d\n",result3);

        

       int result4 = maxOrMinFromTwo(5, 8, sumFunction );

       printf("result4 = %d\n",result4);

        

       //动态排序

       /*

        Student stu1 = {"qifei",28,65.6,165,83,'w',12.6};

        Student stu2 = {"zhangyao",22,86.8,166,76,'w',9.8};

        Student stu3 = {"liyan",24,63.2,172,133,'m',8.25};

        Student stu4 = {"lichunjiang",26,76.8,175,145,'m',6.18};

        Student stu5 = {"lizhang",24,83.2,180,156,'m',10.25};

        Student stu6 = {"yangxiaoli",23,78.6,165,76,'w',12.28};

        Student stus[6] = {stu1 ,stu2, stu3, stu4, stu5,stu6};

        //按年龄排序并打印输出

//        sortedStudentByName(stus,6);

//        printfStudent(stus, 6);

//        sorted(stus,6,birthday);

//        printfStudent(stus, 6);

        

        

        printf("请输入你的排序条件:\n");

        char xuanze[100] = {'\0'};

        scanf("%s",xuanze);

        StudentFunction SFs[7] = {{name ,"name"},{age,"age"},{score,"score"},{height ,"height"},{weight,"weight"},{birthday,"birthday"}};

        for (int i = 0; i < 7; i++) {

            if (strcmp(SFs[i].strs, xuanze) == 0) {

                sorted(stus, 6, SFs[i].p);

                break;

            }

        }

        printfStudent(stus, 6);

        

        */

        

    }

   return 0;

}





  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值