IOS开发学习基础--------C语言(七)结束篇

                                                第七章    结构体

          7.1  预编译

                 C语言提供的预编译指令常用的有以下三种:

                 1. 宏定义    #define   PI  3.14

                 2. 文件包含    #include  <stdio.h> (库函数的头文件)/ "myscore.h"(程序员自己的头文件)

                 3. 条件编译  

a.如果指定的标示符已经被定义,则编译程序段1,不编译程序段2;否则不编译程序段1,直接编译程序段2.

#ifdef  标示符
      程序段1;
#else
      程序段2;
#endif

b.如果常量表达式为真,则编译程序段1;否则编译程序段2.
#if   常量表达式
       程序段1;
#else
       程序段2;
#endif

c.如果标示符没有被定义,编译程序段1,否则编译程序段2。
#ifndef   标示符
           程序段1;
#else
         程序段2;
#endif

          7.2  结构体

                        7.2.1  结构体的定义

struct  student
{
     int num;
     char *name;
};

或者用typedef定义

typedef  struct
{
       int num;
       char *name;
}STU;

                7.2.2  结构体变量                         

typedef struct
{
    int num;
    char name[20];
    char sex;
    float score;
} student;

在main()函数里声明变量 student  stu;

或者直接声明变量
struct   
{
    int num;
    char name[20];
    char sex;
    float score;
} stu1,stu2;

或者定义结构体的时候声明变量
struct    student
{
    int num;
    char name[20];
    char sex;
    float score;
} stu1,stu2;

                         结构体变量赋值:  结构体变量名.成员名;

                7.2.3  结构体指针

                          通过结构体指针访问该结构体变量成员,一般形式有两种:(*结构体指针).成员名   或者   结构体指针->成员名。

typedef struct
{
    int num;
    int scores[3];
    char name[20];
}STU;

//结构体输入五个学生三门成绩并输出,计算平均成绩
void studentThreeScores()
{
    double sum = 0;
    STU stu[5],*pStu=stu;
    printf("请输入学号,三门课的成绩,姓名\n");
    for (int i=0; i<5; i++,pStu++) {
        scanf("%d%d%d%d %s",&pStu->num,pStu->scores,pStu->scores+1,pStu->scores+2,pStu->name);
    }
    
    for (int i=0; i<5; i++) {
        for (int j=0; j<3; j++) {
            sum += stu[i].scores[j];
        }
        printf("学号      姓名         成绩         平均成绩\n");
        printf("%d    %s     %d   %d    %d   %.2lf\n",stu[i].num,stu[i].name,stu[i].scores[0],stu[i].scores[1],stu[i].scores[2],sum/3.0);
        sum = 0;
    }
}

                7.2.4  结构体数组

typedef struct
{
    int num;
    char name[20];
    char sex;
    float score;
} student;

//结构体
void jiegouti()
{
    student stu[3];
    float sum = 0;
    int count = 0;
    printf("请输入学号,姓名,性别和成绩\n");
    for (int i=0; i<3; i++) {
        scanf("%d%s %c%f",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].score);
    }
    
    for (int i=0; i<3; i++) {
        sum += stu[i].score;
        if (stu[i].score<60) {
            count ++;
        }
    }
    printf("总分:%.2f\n不及格的人数:%d\n平均数为:%.2f",sum,count,sum/3.0);
}

               7.2.5  结构体作为函数参数

typedef struct
{
    double re;
    double im;
} complex;

complex add(complex x,complex y);

int main(int argc, const char * argv[])
{
     complex a={10.23,11.23},b={14.20,15.23},c ;
     c = add(a,b);
     printf("%.2f   %.2f",c.re,c.im); 
    return 0;

}

//结构体作为函数参数,返回结构体
complex add(complex x,complex y)
{
    complex z;
    z.re = x.re + y.re;
    z.im = x.im + y.im;
    return z;
}

写在最后:C语言终于学习完了,后边还有栈、队列和单链表,只要知道原理皆可以,大家可以上网查一查了解一下。下一遍就开始写OC了,期待ing。。。

你可能感兴趣的:(IOS开发学习基础--------C语言(七)结束篇)