顺宗 2024-06-04 17:36 采纳率: 70%
浏览 2
已结题

c语言 c89编程符号问题

步科触摸屏宏指令不能同时拆变量吗?定义两个函数组合之类的

#include "macrotypedef.h"
#include "math.h"

int MacroEntry()
{
    short i;

    // 根据 LW130 的值执行不同的操作
    switch (LW130)
    {
        case 1:
            // 在 15 组用户密码中对比
            for (i = 0; i < 27; i++)
            {
                // 将 D400 数组的值复制到 RW10000 数组中
                RW10000[i] = D400[i];
            }
            break;

        case 2:
            // 在 15 组用户密码中对比
            for (i = 0; i < 27; i++)
            {
                // 将 D400 数组的值复制到 RW10100 数组中
                RW10100[i] = D400[i];
            }
            break;

        case 3:
            for (i = 0; i < 27; i++)
            {
                RW10200[i] = D400[i];
            }
            break;

        case 4:
            for (i = 0; i < 27; i++)
            {
                RW10300[i] = D400[i];
            }
            break;

        case 5:
            for (i = 0; i < 27; i++)
            {
                RW10400[i] = D400[i];
            }
            break;

        case 6:
            for (i = 0; i < 27; i++)
            {
                RW10500[i] = D400[i];
            }
            break;

        case 7:
            for (i = 0; i < 27; i++)
            {
                RW10600[i] = D400[i];
            }
            break;

        case 8:
            for (i = 0; i < 27; i++)
            {
                RW10700[i] = D400[i];
            }
            break;

        case 9:
            for (i = 0; i < 27; i++)
            {
                RW10800[i] = D400[i];
            }
            break;

        case 10:
            for (i = 0; i < 27; i++)
            {
                RW10900[i] = D400[i];
            }
            break;

        case 11:
            for (i = 0; i < 27; i++)
            {
                RW11000[i] = D400[i];
            }
            break;

        case 12:
            for (i = 0; i < 27; i++)
            {
                RW11100[i] = D400[i];
            }
            break;

        case 13:
            for (i = 0; i < 27; i++)
            {
                RW11200[i] = D400[i];
            }
            break;

        default:
            // 如果 LW130 的值不是 1 或 2,则什么也不做
            break;
    }

    return 0;
}

int Macro()
{
    short i;

    // 根据 LW130 的值执行不同的操作
    switch (LW132)
    {
        case 1:
            // 在 15 组用户密码中对比
            for (i = 0; i < 27; i++)
            {
                // 将 D400 数组的值复制到 RW10000 数组中
                RW10000[i] = D400[i];
            }
            break;

        case 2:
            // 在 15 组用户密码中对比
            for (i = 0; i < 27; i++)
            {
                // 将 D400 数组的值复制到 RW10100 数组中
                RW10100[i] = D400[i];
            }
            break;

        case 3:
            for (i = 0; i < 27; i++)
            {
                RW10200[i] = D400[i];
            }
            break;

        case 4:
            for (i = 0; i < 27; i++)
            {
                RW10300[i] = D400[i];
            }
            break;

        case 5:
            for (i = 0; i < 27; i++)
            {
                RW10400[i] = D400[i];
            }
            break;

        case 6:
            for (i = 0; i < 27; i++)
            {
                RW10500[i] = D400[i];
            }
            break;

        case 7:
            for (i = 0; i < 27; i++)
            {
                RW10600[i] = D400[i];
            }
            break;

        case 8:
            for (i = 0; i < 27; i++)
            {
                RW10700[i] = D400[i];
            }
            break;

        case 9:
            for (i = 0; i < 27; i++)
            {
                RW10800[i] = D400[i];
            }
            break;

        case 10:
            for (i = 0; i < 27; i++)
            {
                RW10900[i] = D400[i];
            }
            break;

        case 11:
            for (i = 0; i < 27; i++)
            {
                RW11000[i] = D400[i];
            }
            break;

        case 12:
            for (i = 0; i < 27; i++)
            {
                RW11100[i] = D400[i];
            }
            break;

        case 13:
            for (i = 0; i < 27; i++)
            {
                RW11200[i] = D400[i];
            }
            break;

        default:
            // 如果 LW130 的值不是 1 或 2,则什么也不做
            break;
    }

    return 0;
}



  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-04 17:36
    关注

    引自免费微信小程序:皆我百晓生

    在您的代码中,您正在为每个LW130LW132的不同值重复相同的循环逻辑。为了减少代码冗余,您可以创建一个辅助函数,将循环体封装起来,并传入数组的起始地址作为参数。这样可以简化您的代码并使其更具可维护性。

    首先,定义一个辅助函数,例如CopyArrayToDestination(),它接受源数组、目标数组和长度作为参数:

    #include "macrotypedef.h"
    #include "math.h"
    
    void CopyArrayToDestination(short* source, short* destination, int length) {
        for (int i = 0; i < length; i++) {
            destination[i] = source[i];
        }
    }
    

    接下来,在MacroEntry()Macro()函数中,根据LW130LW132的值调用这个新函数,传递适当的数组地址:

    int MacroEntry()
    {
        short i;
    
        // 根据 LW130 的值执行不同的操作
        switch (LW130)
        {
            case 1:
                CopyArrayToDestination(D400, RW10000, 27);
                break;
    
            case 2:
                CopyArrayToDestination(D400, RW10100, 27);
                break;
    
            case 3:
                CopyArrayToDestination(D400, RW10200, 27);
                break;
    
            case 4:
                CopyArrayToDestination(D400, RW10300, 27);
                break;
    
            case 5:
                CopyArrayToDestination(D400, RW10400, 27);
                break;
    
            case 6:
                CopyArrayToDestination(D400, RW10500, 27);
                break;
    
            case 7:
                CopyArrayToDestination(D400, RW10600, 27);
                break;
    
            case 8:
                CopyArrayToDestination(D400, RW10700, 27);
                break;
    
            case 9:
                CopyArrayToDestination(D400, RW10800, 27);
                break;
    
            case 10:
                CopyArrayToDestination(D400, RW10900, 27);
                break;
    
            case 11:
                CopyArrayToDestination(D400, RW11000, 27);
                break;
    
            case 12:
                CopyArrayToDestination(D400, RW11100, 27);
                break;
    
            case 13:
                CopyArrayToDestination(D400, RW11200, 27);
                break;
    
            default:
                // 如果 LW130 的值不是 1 或 2,则什么也不做
                break;
        }
    
        return 0;
    }
    
    int Macro()
    {
        short i;
    
        // 根据 LW132 的值执行不同的操作
        switch (LW132)
        {
            case 1:
                CopyArrayToDestination(D400, RW10000, 27);
                break;
    
            case 2:
                CopyArrayToDestination(D400, RW10100, 27);
                break;
    
            case 3:
                CopyArrayToDestination(D400, RW10200, 27);
                break;
    
            case 4:
                CopyArrayToDestination(D400, RW10300, 27);
                break;
    
            case 5:
                CopyArrayToDestination(D400, RW10400, 27);
                break;
    
            case 6:
                CopyArrayToDestination(D400, RW10500, 27);
                break;
    
            case 7:
                CopyArrayToDestination(D400, RW10600, 27);
                break;
    
            case 8:
                CopyArrayToDestination(D400, RW10700, 27);
                break;
    
            case 9:
                CopyArrayToDestination(D400, RW10800, 27);
                break;
    
            case 10:
                CopyArrayToDestination(D400, RW10900, 27);
                break;
    
            case 11:
                CopyArrayToDestination(D400, RW11000, 27);
                break;
    
            case 12:
                CopyArrayToDestination(D400, RW11100, 27);
                break;
    
            case 13:
                CopyArrayToDestination(D400, RW11200, 27);
                break;
    
            default:
                // 如果 LW132 的值不是 1 或 2,则什么也不做
                break;
        }
    
        return 0;
    }
    

    现在,您已经成功地通过创建一个通用的复制函数减少了代码重复。如果您有更多类似的需求,只需调整CopyArrayToDestination()函数的调用来指定新的源和目标数组即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 6月4日

悬赏问题

  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码
  • ¥15 AutoDL无法使用docker install吗?
  • ¥15 cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件
  • ¥30 关于#wireshark#的问题:需要网络应用流量数据集需要做长度序列的实验,需要与应用产生的会话的数据包的长度,如视频类或者聊天类软件
  • ¥15 根据上述描述表示泥浆密度沿着管路的长度方向在不断变化,如何来表示泥浆密度随管路的变化(标签-matlab|关键词-流计算)
  • ¥21 matlab可以把图像数据转换为小波分析吗
  • ¥60 基于香农编码的图像压缩算法实现