zoukankan      html  css  js  c++  java
  • ios学习记录 day9

    1.递归函数  函数体内调用和函数相同的另一个函数

    课上练习:

    1)计算:s=5!

    long value (int x)
    {
        if(x < 2){
            return 1;
        }
        return x * value(x - 1);
    }//递归函数

    2).return 类似于break,没有返回值return 结束

    void printNum(int x){
        if (x < 1) {
            return;
        }
        printNum(x - 1);//         printf("%d ",x);
        printf("%d ",x);//顺序   printNum(x - 1);//逆序
    }
    3).10进制转换2进制

    void er(int x){
        int n = 0;
        n = x % 2;
        x /= 2;
        if (x > 0) {
            er(x);
        }
        printf("%d",n);

    2.结构体   (是一种类型)

    结构体也是构造类型.比数组更灵活,可以放基本数据类型 数组 结构体.

    定义:

    struct 结构体名

    {

    类型 成员名;

    类型 成员名;

    ........

    };//分号不可少

    3.内存占用:结构体所占的空间可以简单的认为是各个成员所占内存空间之和,实际是最大成员变量所占空间的最小整数倍.

       字符型数据较特殊 挨着的前面有剩余内存的也用 其它的如果不是正好的不能用

    4.typedef 原类型 新类型//类型重定义

    1)struct person{
        int age;
        char name[20];
        char sex;
    };

    typedef struct person Person;

    2)typedef truct person{
        int age;
        char name[20];
        char sex;
    }Person;

    5.结构体成员调用

        per1.age = 99;
        strcpy(per1.name, "longdd");
        printPerson(per1);
        Person per3 = per2;

        Person min = per1.age < per2.age ? per1 : per2 ;
        min = min.age < per3.age ? min : per3 ;

    6.结构体嵌套 成员的访问

    typedef struct myorigin{
        float x;
        float y;
    }MyOrigin;
    typedef struct size{
        float width;
        float height;
    }MySize;
    typedef struct myrect{
        MyOrigin origin;
        MySize size;
    }MyRect;

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

        MyRect rect = {{3,5},{100,100}};
        rect.origin.x = 15;
        rect.size.width = 150;
        return 0;
    }

    7.结构体数组

    struct person{
        int age;
        char name[20];
        char sex;
    };//分号不能少!
    typedef struct person Person;//类型重新定义struct person为Person

    void printPerson(Person per){
        printf("%d %s %c ",per.age,per.name,per.sex);
    }

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

        Person per1 = {26,"ZhaoYunlong",'f'};
        Person per2 = {23,"ShenQingjun",'m'};
        Person per3 = {26,"LiuChundong",'f'};
        Person per4 = {26,"LiXiaolong",'m'};
        Person per5 = {29,"YangKun",'m'};
        
        Person per[5] = {{26,"ZhaoYunlong",'f'},per2,per3,per4,per5};
        Person maxAge = {0};
        for (int i = 0; i < 5; i++) {
            if (maxAge.age < per[i].age) {
                maxAge = per[i];
            }
        }
        printPerson(maxAge);
        
        for (int i = 0; i < 5 - 1; i++) {
            for (int j = 0; j < 5 - i - 1; j++) {
                if (per[j].age < per[j + 1].age) {
                    Person temp = per[j];
                    per[j] = per[j + 1];
                    per[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < 5; i++) {
            printPerson(per[i]);
        }
    return 0;
    }

    作业:

    1、定义一个结构体变量(包含年月日),计算该日在本年中为第几天?要求写一个days函数。参数是此结构体类型的变量,返回值是整数。

    typedef struct date {
        int year;
        int month;
        int day;
    }Date;
    int days(Date date){
        int a[11] = {31,28,31,30,31,30,31,31,30,31,30};
        int sum = 0;
        for (int i = 0; i < date.month - 1; i++) {
            sum += a[i];
        }
        sum += date.day;
        if (date.month > 2) {
            if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0) {
                sum++;
            }
        }
        return sum;
    }

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

        Date dat;
        scanf("%d,%d,%d",&dat.year,&dat.month,&dat.day);
        printf("%d ",days(dat));
        return 0;
    }

    2、模拟n个人参加选举的过程,四个候选人A、B、C、D。若选举某人直接输入其编号,最后按获得票数从高到低排序并输出候选人编号和票数。

    struct candidate{
        char name[10];
        int score;
    };
    typedef struct candidate Candidate;
    void xuanju(){
        Candidate can[5] = {{'A',0},{'B',0},{'C',0},{'D',0},{"弃权",0}};
        int n = 0;
        scanf("%d",&n);
        
        for (int i = 0; i < n; i++) {
            int r = arc4random() % (4 - 0 + 1) + 0;//随机找一个人得下标
            can[r].score++;//票数+1
        }
        for (int i = 0; i < 5 - 1; i++) {
            for (int j = 0; j < 5 - i - 1; j++) {
                if (can[j].score < can[j + 1].score) {
                    Candidate temp = can[j];
                    can[j] = can[j + 1];
                    can[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < 5; i++) {
            printf("%s:%d ",can[i].name,can[i].score);
        }
    }

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

       xuanju();
        return 0;
    }

    3、某班5个学生,3门课,编写3个函数实现以下功能:
    (1)求各门课的平均分
    (2)找出三门都不及格的学生,输出其全部信息
    (3)找出3门课平均分在80-90之间的学生,输出其信息。

  • 相关阅读:
    【eoe资源】通过片段创建灵活的用户界面
    史上最全的Android开发索引帖
    临时记录
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    【转】深入探讨 Android 传感器
    Java Collections Framework Java集合框架List,Map,Set等全面介绍之概要篇
    谷歌 G1 android APK安装器 离线安装软件
    【转】請為你的 Android 程式加上 obfuscation 吧!
    【转】Android Toolchain与Bionic Libc
    用VirtualBox在XP环境下虚拟Ubuntu的过程
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3593727.html
Copyright © 2011-2022 走看看