#C语言 结构体变量和结构体标签的应用

news2024/9/20 7:53:01
/*展示结构体标签和结构体变量*/
#include <stdio.h>

/*at 结构体标签*/
typedef struct at_tag {
    char name[9];
    char gender[2];
    int age;
};
/*st 结构体变量*/
typedef struct {
    char name[9];
    char gender[2];
    int age;
}st_variate;

void test(void)
{
    struct at_tag tag= {
        "徐达开",
        "M",
        24
    };
    printf("标签结构体:\n");
    printf("%s %s %d\n", tag.name, tag.gender, tag.age);

    st_variate variate= {
        "孙尚香",
        "W",
        1000
    };
    printf("结构体变量:\n");
    printf("%s %s %d\n", variate.name, variate.gender, variate.age);
}
int main()
{
    test();
    return 0;
}
//计算3+5,怎么通过结构体指针变量关联add函数,以及通过结构体指针调用add函数输出结果?
#if 1
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    int (*func)(int, int);
    int a;
    int b;

}func_t;

int add(int a, int b) { return a + b; }

int main()
{
    func_t* func1 = (func_t*)malloc(sizeof(func_t));
    //计算3+5,怎么通过结构体指针变量关联add函数,以及通过结构体指针调用add函数输出结果?
    /*func1->func = add;
    int result = func1->func(3, 5);*/
    func1[0].func = add;
    func1[0].a = 3;
    func1[0].b = 5;
    int result = func1[0].func(func1[0].a, func1[0].b);
    printf("3+5=%d\n", result);
    return 0;
}
#endif
/*输入整数为小数点有瑕疵(解决)
* 相较比较完美的代码
*/
#if 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
typedef struct  st{
    int (*fun)(int, int);
    char ari[3];
};
int my_Add(int a, int b) { return a + b; }
int my_Sub(int a, int b) { return a - b; }
int my_Mul(int a, int b) { return a * b; }
int my_Div(int a, int b) { return a / b; }
//st* func1 = NULL;
int main()
{
    //st * func1 = (st*)malloc(sizeof(st) * 4);
    struct st *func1 = malloc( sizeof(struct st));
    int a = 0, b = 0;
    int scanfResult;
    char extreChar;
    //double a_input, b_input;
    char choice[10];
    
    func1[0].fun = my_Add;
    strcpy(func1[0].ari, "add");
    func1[1].fun = my_Sub;
    strcpy(func1[1].ari, "sub");
    func1[2].fun = my_Mul;
    strcpy(func1[2].ari, "mul");
    func1[3].fun = my_Div;
    strcpy(func1[3].ari, "div");
    
    while (1) {
        printf("choice arithmetic:add\tsub\tmul\tdiv\n");
        scanf("%s", choice);
     /*   if (choice < 1 || choice >4)
        {
            printf("input invalid\n");
            continue;
        }*/
        int choice_flag = -1;
        for (int i = 0; i < 4; ++i) {
            if (strcmp(choice, func1[i].ari) == 0) {
                choice_flag = i;
                break;
            }
        }
        if (choice_flag == -1) {
            printf("arithmetic input invaild\n");
            continue;
        }

        printf("inpout two integer\n");
        scanfResult = scanf("%d %d", &a, &b);
        if (scanfResult != 2) {
            printf("Invalid input. Please enter two integers.\n");
            //清楚输入缓冲区中的额外字符
            while ((extreChar = getchar()) !='\n' && extreChar != EOF);
            continue;
        }

        int result = func1[choice_flag].fun(a, b);
        printf("%s:%d a=%d b=%d\n", func1[choice_flag].ari, result, a, b);
    }
    free(func1);
    return 0;
}
#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一图搞懂,全流程项目管理实践地图,驱动:市场-研发-售后

如何共同协作驱动 市场研发售后&#xff1f; 软件项目交付需要一段时间和长周期&#xff0c;而由于产品研发团队前与市场部门脱节、后又与售后支撑服务团队脱节的话&#xff0c;整体上会加剧项目管理的成本和内部跨部门协作的难度。 如何高效共同协作驱动 市场运营产品研发售…

C# Solidworks二次开发------设置按键打开模型查询

一、代码 public void Open_File(string FileNmae) {Process.Start("explorer.exe", FileNmae); }Open_File("路径"); 二、内容 这个代码很简单&#xff0c;我使用其主要的作用是设置一个按键&#xff0c;可以快速的查看我们已生成的三维模型&#xff0…

2000-2023年上市公司融资约束指数-KZ指数(含原始数据+计算结果)

2000-2023年上市公司融资约束指数-KZ指数&#xff08;含原始数据计算结果&#xff09; 1、时间&#xff1a;2000-2023年 2、来源&#xff1a;上市公司年报 3、指标&#xff1a;证券代码、证券简称、统计截止日期、是否剔除ST或*ST或PT股、是否剔除上市不满一年、已经退市或被…

js数据类型基础

最近投了几家公司面试&#xff0c;其中有一家公司面试官面试我非常感谢他&#xff0c;感觉他像一位老师的角色对于我回答不上来的问题以及回答错误的问题耐心指导。js基础真的很重要&#xff01;&#xff01;面完之后我觉平常我只是看到了问题的表面&#xff0c;并没有深度的了…

基于SpringBoot的电商购物平台设计与实现-计算机毕设 附源码 06411

基于SpringBoot的电商购物平台设计与实现 摘 要 该电商购物平台基于SpringBoot开发&#xff0c;旨在为用户提供便捷的购物体验。注册功能允许用户通过提供账号、密码、昵称、邮箱等信息注册账户&#xff0c;而已注册用户可以使用用户名和密码登录系统。普通用户可以在首页查看…

钉钉机器人调度

钉钉机器人调度 流程操作钉钉开发者后台配置01 添加机器人获取APPKEY和APPSECRET获取权限开启消息推送 02 接收“问题”搭建接口 03 转发到服务器服务器的管理界面机器人配置界面将代码上传到服务器 04 API调度影刀提取数据配置信息--合法性 05 生成答案06 回传到服务器 流程 操…

WPF中添加布局拖拽功能 (添加GridSplitter)

1. 思想&#xff1a; 使用GridSplitter加到布局中&#xff0c;作为控件。 2. Xaml代码&#xff1a; <Windowx:Class"TestWPF_Func1207.TestRichTextBox"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schema…

牛客JS题(十五)参数解析器

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; decodeURIComponent(URL解码函数)new URL正则exec 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /></head><body&…

光流传感器 - 从零开始认识各种传感器【第二十二期】

光流传感器|从零开始认识各种传感器 1、什么是光流传感器 光流传感器是一种用于测量物体相对于周围环境的运动的设备。它通过检测周围光线的变化来计算出物体的运动方向和速度&#xff0c;广泛应用于机器人导航、无人机飞行控制、虚拟现实等领域。 2、光流传感器是如何工作的…

java8通用启动参数

由于默认的jvm参数不够合理&#xff0c;一般使用前都建议按需调整&#xff0c;这里尝试抛砖引玉&#xff0c;给出我个人工作中总结的经验&#xff0c;欢迎大家一起讨论 服务类型 http应用dubbo应用 java版本 使用java8支持容器化的版本&#xff1a;Java 8 Update 261 (8u26…

【吊打面试官系列-Dubbo面试题】Dubbo 如何优雅停机?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo 如何优雅停机&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo 如何优雅停机&#xff1f; Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的&#xff0c;所以如果使用 kill -9 PID 等强制关闭指令&am…

小区来了个磨刀的

昨天下午&#xff0c;小区来了个磨刀磨剪子的。 我听见了喇叭吆喝声&#xff0c;就拿着一把菜刀下去了。 磨一把刀5块钱。 在磨刀的过程中&#xff0c;这位师傅就聊他的技术如何高超&#xff0c;什么水磨法远远超过磨刀石&#xff0c;总之让人感觉找他磨刀是正确的选择。 哎…

springboot宠物用品商城系统-前端-计算机毕业设计源码74346

摘要 基于微信小程序的宠物用品商城系统是一个集商品展示、在线购物、支付结算、用户管理等功能于一体的综合性电商平台。该系统充分利用微信小程序的便捷性和用户基础&#xff0c;为宠物爱好者提供了一个方便、快捷的购物体验。 同时&#xff0c;该系统还具备完善的用户管理功…

Windows Subsystem for Linux——安装桌面版Ubuntu

大纲 安装非桌面版操作系统安装桌面软件进入默认账号更新系统安装桌面软件安装xrdp查看IP地址 远程连接参考资料 在《Windows Subsystem for Linux——安装和使用》一文中&#xff0c;我们看到WSL只能安装非桌面版的Linux。 wsl --list --online但是桌面版的Linux其实是在非桌…

如何利用AI创作PPT?

最强AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 你要是做一张只需要交差用的PPT&#xff0c;用ChatGPT连一分钟都用不了&#xff0c;你看我画的这个流程图的黄色的箭头&#xff0…

【STM32】STM32单片机入门

个人主页~ 这是一个新的系列&#xff0c;stm32单片机系列&#xff0c;资料都是从网上找的&#xff0c;主要参考江协科技还有正点原子以及csdn博客等资料&#xff0c;以一个一点没有接触过单片机但有一点编程基础的小白视角开始stm32单片机的学习&#xff0c;希望能对也没有学过…

深度学习图像处理环境搭建

Anaconda安装 Anaconda介绍 Anaconda是一个用于科学计算和数据科学的开源发行版&#xff0c;它包含了许多流行的Python库和工具&#xff0c;旨在简化数据分析和机器学习任务的开发过程。Anaconda提供了一个集成的开发环境&#xff0c;包括Python解释器、包管理工具&#xff0…

打造安全自养号测评系统:亚马逊卖家必备的防关联技术

在搭建一个稳定的测评自养号系统过程中&#xff0c;账号的管理、底层环境、IP纯净度与维护确实是核心中的关键一环。以下几点是构建和运营高效、安全、稳定测评系统时必须重点考虑的因素&#xff1a; 1稳定的网络环境&#xff1a; 使用独立、纯净且未被标记的国外IP地址&…

【Python】趣味游戏编程练习记录

最近在阅读童晶写的《Python游戏趣味编程》&#xff0c;边学边记录吧&#xff0c;蛮有意思。 一、学习要点 1.安装游戏开发库pgzero pip install pgzero 2.导入游戏开发库及基础绘图操作 import pgzrun #导入游戏开发库 def draw(): #定义绘图函数screen.fill(white)#屏幕…

day14 Java基础——三元运算符(条件运算符)及小结

day14 Java基础——三元运算符&#xff08;条件运算符&#xff09;及小结 1.条件运算符&#xff08;偷懒&#xff09; package operator;public class Demo10 {public static void main(String[] args) {//x ? y : z//如果xtrue,则结果为y&#xff0c;否则结果为zint score …