zoukankan      html  css  js  c++  java
  • memory函数

    题目:根据一系列指令操作一段内存。指令有两种,set和copy。set的格式是set <from> <size> <value>:将这段内存中from开始size长度赋值为valuecopy的格式是copy <from> <size> <to>:将from开始的内存赋值到to的位置,长度为size以byte为单位。其中from, to, size 都是非负整数,value在byte范围内。内存初始值应为0
    输入:多组数据,每组数据包括整数m、n,m为内存的长度,以byte为单位,n为指令的个数,其后n行包括n条指令,2<=m<=20, 1<=n<=10。输入数据保证不越界。
    输出:每组数据一行,用16进制输出最后的内存值,16进制中的ABCDEF用大写字母
    请将代码修正后提交:
    #include <stdio.h>
    #include <string.h>
    int main() {
        int m, n;
        char buf[20], cmd[5];
        int i;
        int from, size, to_value;
        while (scanf("%d%d", &m, &n) != EOF) {
            memset(buf, m, 0);
            for (i = 0; i < n; i++) {
                scanf("%s%d%d%d", cmd, &from, &size, &to_value);
                if (cmd[0] == 's') {
                    memset(buf + from, size, to_value);
                } else {
                    memcpy(buf + to_value, buf + from, size);
                }
            }
            for (i = 0; i < m; i++) {
                printf("%02X", buf[i]);
            }
            printf(" ");
        }
        return 0;
    }

    输入

    多组数据,每组数据包括整数m、n,m为内存的长度,以byte为单位,
    n为指令的个数,其后n行包括n条指令,2<=m<=20, 1<=n<=10。输入数据保证不越界。

    输出

    每组数据一行,用16进制输出最后的内存值,16进制中的ABCDEF用大写字母

    样例输入

    5 1 set 1 3 32

    样例输出

    0020202000
     
    修改如下:
     1 #include <stdio.h>
     2 #include <string.h>
     3 int main() {
     4     int m, n;
     5     char buf[20], cmd[5];
     6     int i;
     7     int from, size, to_value;
     8     while (scanf("%d%d", &m, &n) != EOF) {
     9         memset(buf, 0, m);
    10         for (i = 0; i < n; i++) {
    11             scanf("%s%d%d%d", cmd, &from, &size, &to_value);
    12             if (cmd[0] == 's') {
    13                 memset(buf + from, to_value, size);
    14             } else {
    15                 memmove(buf + to_value, buf + from, size);
    16             }
    17         }
    18         for (i = 0; i < m; i++) {
    19             printf("%02X", buf[i]);
    20         }
    21         printf("
    ");
    22     }
    23     return 0;
    24 }

    代码不是我修改的,同学帮我看的。

    下面是三个需要了解的函数,我在百度上找到的,虽然不太精确,但也可以懂了。

    http://baike.baidu.com/link?url=yOyPxGIYBZrTpi5_AqCNZVJ2QoG6I5yuVfVgjZRvzWwMFVH7_-mhoqzGsGFVm7uir698K9bjy_1O2vY8aY1Ky_

    http://baike.baidu.com/link?url=ovGppkijQ9ODwKa1Pm43gllSTBL3dIQkmsaXQXl6JSMpsudOpaorA0eJl_npokIgQgQhzt0fXJ1r9e2n6gRMVK

    http://baike.baidu.com/link?url=B-ZYULjMcrjtJ9DVLXzhIpFveAwnV4NOlxmYqEQjxIITntepIcWE8ELmm7hdGPgy0pYBWP_kzRqj3rTu1-O1v_

  • 相关阅读:
    函数传参总结
    集合操作总结
    深浅拷贝总结
    三级列表展示
    文件操作总结
    vue-router之嵌套路由
    vue-router之动态路由
    Sublime编辑VUE实现代码高亮
    Windows系统下Vue开发环境搭建详解版
    C#调用快递鸟电子面单API实现批量打印电子面单功能
  • 原文地址:https://www.cnblogs.com/baigg1995/p/4604595.html
Copyright © 2011-2022 走看看