• 枚举、结构体、联合体的简单应用程序-C语言


      1 #include <stdio.h>
      2 
      3 //图元的类型
      4 enum SHAPE_TYPE{
      5     RECT_TYPE = 0,
      6     CIRCLE_TYPE = 1,
      7     TRIANGLE_TYPE = 2,
      8     SHAPE_NUM,
      9 };
     10 //为了定义三角形的坐标而设
     11 struct point{
     12     float x;
     13     float y;
     14 };
     15 //创建shape结构体
     16 struct shape{
     17     //int type;
     18     enum SHAPE_TYPE type;
     19     union {
     20         struct {
     21             float x;
     22             float y;
     23             float w;
     24             float h;
     25         }rect;
     26 
     27         struct {
     28             float c_x;
     29             float c_y;
     30             float r;
     31         }circle;
     32 
     33         struct {
     34             struct point t0;
     35             struct point t1;
     36             struct point t2;
     37         }triangle;
     38     }u;
     39 };
     40 //初始化矩形
     41 void init_rect_shape(struct shape *s, float x, float y, float w, float h)
     42 {
     43     s->type = RECT_TYPE;
     44     s->u.rect.x = x;
     45     s->u.rect.y = y;
     46     s->u.rect.w = w;
     47     s->u.rect.h = h;
     48     return ;
     49 }
     50 //初始化三角形
     51 void init_triangle_shape(struct shape *s,float a, float b, float c, float d,float e, float f)
     52 {
     53     s->type = TRIANGLE_TYPE;
     54     s->u.triangle.t0.x = a;
     55     s->u.triangle.t0.y = b;
     56     s->u.triangle.t1.x = c;
     57     s->u.triangle.t1.y = d;
     58     s->u.triangle.t2.x = e;
     59     s->u.triangle.t2.y = f;
     60     return ;
     61 }
     62 //初始化圆
     63 void init_circle_shape(struct shape *s, float a, float b, float r)
     64 {
     65     s->type = CIRCLE_TYPE;
     66     s->u.circle.c_x = a;
     67     s->u.circle.c_y = b;
     68     s->u.circle.r = r;
     69     return;
     70 }
     71 //输出图形
     72 void draw_shape(struct shape *shapes, int count)
     73 {
     74     int i = 0;
     75     for(i=0;i<count;i++)
     76     {
     77         switch(shapes[i].type)
     78         {
     79             case CIRCLE_TYPE:
     80                 printf("circle:%f, %f, %f
    ", shapes[i].u.circle.c_x, shapes[i].u.circle.c_y, shapes[i].u.circle.r);
     81                 break;
     82             case TRIANGLE_TYPE:
     83                 printf("triangle:%f, %f, %f, %f, %f, %f
    ", shapes[i].u.triangle.t0.x, shapes[i].u.triangle.t0.y, shapes[i].u.triangle.t1.x, shapes[i].u.triangle.t1.y, shapes[i].u.triangle.t2.x, shapes[i].u.triangle.t2.y);
     84                 break;
     85             case RECT_TYPE:
     86                 printf("circle:%f, %f, %f, %f
    ", shapes[i].u.rect.x, shapes[i].u.rect.y, shapes[i].u.rect.w, shapes[i].u.rect.h);
     87                 break;
     88             default:
     89                 break;
     90         }
     91     }
     92 
     93     return ;
     94 }
     95 
     96 int main()
     97 {
     98     struct shape shape_set[3];
     99     init_rect_shape(&shape_set[0], 100, 200, -100, 200);
    100     init_triangle_shape(&shape_set[1], 10, 20, 30, -30, 40, -40);
    101     init_circle_shape(&shape_set[2], 100, 200, 300);
    102     draw_shape(shape_set, 3);
    103 
    104     return 0;
    105 }
  • 相关阅读:
    springmvc 配置多视图,返回jsp,velocity,freeMarker,tiles(模板)等等
    spring,mybatis,多数据源配置
    springMVC分页,interceptor实现
    springMVC全局Exception异常处理SimpleMappingExceptionResolver
    百度FIS入门
    如何安装nodejs
    如何高效部署前端代码,如css,js...
    javascript url几种编码方式
    【转】RBAC权限管理
    elasticsearch 之IK分词器安装
  • 原文地址:https://www.cnblogs.com/chenanan/p/7804064.html
Copyright © 2020-2023  润新知