C语言提供的预编译指令常用的有以下三种:
1. 宏定义 #define PI 3.14
2. 文件包含 #include <stdio.h> (库函数的头文件)/ "myscore.h"(程序员自己的头文件)
3. 条件编译
a.如果指定的标示符已经被定义,则编译程序段1,不编译程序段2;否则不编译程序段1,直接编译程序段2.
#ifdef 标示符 程序段1; #else 程序段2; #endif
#if 常量表达式 程序段1; #else 程序段2; #endif
#ifndef 标示符 程序段1; #else 程序段2; #endif
struct student { int num; char *name; }; 或者用typedef定义 typedef struct { int num; char *name; }STU;
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;
通过结构体指针访问该结构体变量成员,一般形式有两种:(*结构体指针).成员名 或者 结构体指针->成员名。
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; } }
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); }
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。。。