实验五

Posted cms-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验五相关的知识,希望对你有一定的参考价值。

实验任务一

task1-1

源码

 #include <stdio.h>
 #define N 4
 int main()
 
     int x[N] =  1, 9, 8, 4 ;
     int i;
     int* p;
     for (i = 0; i < N; ++i)
         printf("%d", x[i]);
     printf("\\n");
 
     for (p = x; p < x + N; ++p)
         printf("%d", *p);
     printf("\\n");
 
     p = x;
     for (i = 0; i < N; ++i)
         printf("%d", *(p + i));
     printf("\\n");
 
     p = x;
     for (i = 0; i < N; ++i)
         printf("%d", p[i]);
     printf("\\n");
     return 0;
 

实验结论

task1-2

源码

 #include <stdio.h>
 int main()
 
     int x[2][4] =  1, 9, 8, 4, 2, 0, 4, 9 ;
     int i, j;
     int* p; 
     int(*q)[4]; 
 
     for (i = 0; i < 2; ++i)
     
         for (j = 0; j < 4; ++j)
             printf("%d", x[i][j]);
         printf("\\n");
     
 
     for (p = &x[0][0], i = 0; p < &x[0][0] + 8; ++p, ++i)
     
         printf("%d", *p);
         if ((i + 1) % 4 == 0)
             printf("\\n");
     
 
     for (q = x; q < x + 2; ++q)
     
         for (j = 0; j < 4; ++j)
             printf("%d", *(*q + j));
         printf("\\n");
     
     return 0;
 

实验结论

实验任务二

源码

 #include <stdio.h>
 #include <string.h>
 #define N 80
 int main()
 
     char s1[] = "Learning makes me happy";
     char s2[] = "Learning makes me sleepy";
     char tmp[N];
     printf("sizeof(s1) vs. strlen(s1): \\n");
     printf("sizeof(s1) = %d\\n", (int)sizeof(s1));
     printf("strlen(s1) = %d\\n", (int)strlen(s1));
     printf("\\nbefore swap: \\n");
     printf("s1: %s\\n", s1);
     printf("s2: %s\\n", s2);
     printf("\\nswapping...\\n");
     strcpy_s(tmp,N, s1);
     strcpy_s(s1,N, s2);
     strcpy_s(s2,N, tmp);
     printf("\\nafter swap: \\n");
     printf("s1: %s\\n", s1);
     printf("s2: %s\\n", s2);
     return 0;
 

实验结论

实验反思

1、s1大小为24,但是长度为23

      sizeof(s1)表示数组所占的空间大小(因为“\\0”也占了空间)

      strlen(s1)表示数组的长度(不加上“\\0”)

2、不能。因为结构不完整,即没有在char那一行对数组进行定义,计算机不知道s1的长度故会报错。

3、是

task2-2

源码

 #include <stdio.h>
 #include <string.h>
 #define N 80
 int main()
 
     char* s1 = "Learning makes me happy";
     char* s2 = "Learning makes me sleepy";
     char* tmp;
     printf("sizeof(s1) vs. strlen(s1): \\n");
     printf("sizeof(s1) = %d\\n", sizeof(s1));
     printf("strlen(s1) = %d\\n", strlen(s1));
     printf("\\nbefore swap: \\n");
     printf("s1: %s\\n", s1);
     printf("s2: %s\\n", s2);
     printf("\\nswapping...\\n");
     tmp = s1;
     s1 = s2;
     s2 = tmp;
     printf("\\nafter swap: \\n");
     printf("s1: %s\\n", s1);
     printf("s2: %s\\n", s2);
     return 0;
 

实验结论

实验反思

1、s1存放的是"Learning makes me happy"这组字符串

      sizeof(s1)指的是s1这个地址,地址是8位

      strlen(s1)统计的是数组元素的个数(不包括结束符)

2、能。数组需要一开始就定义长度。而指针只需要分配一个地址

3、有交换

实验任务三

源码

 #include <stdio.h>
 void str_cpy(char* target, const char* source);
 void str_cat(char* str1, char* str2);
 int main()
 
     char s1[80], s2[20] = "1984";
     str_cpy(s1, s2);
     puts(s1);
     str_cat(s1, " Animal Farm");
     puts(s1);
     return 0;
 
 void str_cpy(char* target, const char* source)
 
     while (*target++ = *source++)
         ;
 
 void str_cat(char* str1, char* str2)
 
     while (*str1)
         str1++;
     while (*str1++ = *str2++)
         ;
 

实验结论

实验任务四

源码

 int main()
 
     char str[80];
     while (gets(str) != NULL)
     
         if (func(str))
             printf("yes\\n");
         else
             printf("no\\n");
     
     return 0;
 
 int func(char* str)
 
     char* begin, * end;
     begin = end = str;
     while (*end)
         end++;
     end--;
     while (begin < end)
     
         if (*begin != *end)
             return 0;
         else
         
             begin++;
             end--;
         
     
     return 1;
     

实验结论

实验任务五

源码

 #include <stdio.h>
 #define N 80
 void func(char*);
 int main()
 
     char s[N];
     while (scanf_s("%s", s,N) != EOF)
     
         func(s);
         puts(s);
     
     return 0;
 
 void func(char* str)
 
     int i;
     char* p1, * p2, * p;
     p1 = str;
     while (*p1 == \'*\')
         p1++;
     p2 = str;
     while (*p2)
         p2++;
     p2--;
     while (*p2 == \'*\')
         p2--;
     p = str;
     i = 0;
     while (p < p1)
     
         str[i] = *p;
         p++;
         i++;
     
     while (p <= p2)
     
         if (*p != \'*\')
         
             str[i] = *p;
             i++;
         
         p++;
     
     while (*p != \'\\0\')
     
         str[i] = *p;
         p++;
         i++;
     
     str[i] = \'\\0\';
 

实验结论

实验任务六

task6-1

源码

 #include <stdio.h>
 #include <string.h>
 void sort(char* name[], int n);
 int main()
 
     char* course[4] =  "C Program",
     "C++ Object Oriented Program",
     "Operating System",
     "Data Structure and Algorithms" ;
     int i;
     sort(course, 4);
     for (i = 0; i < 4; i++)
         printf("%s\\n", course[i]);
     return 0;
 
 void sort(char* name[], int n)
 
     int i, j;
     char* tmp;
     for (i = 0; i < n - 1; ++i)
         for (j = 0; j < n - 1 - i; ++j)
             if (strcmp(name[j], name[j + 1]) > 0)
             
                 tmp = name[j];
                 name[j] = name[j + 1];
                 name[j + 1] = tmp;
             
 

实验结论

task6-2

源码

 #include <stdio.h>
 #include <string.h>
 void sort(char* name[], int n);
 int main()
 
     char* course[4] =  "C Program",
     "C++ Object Oriented Program",
     "Operating System",
     "Data Structure and Algorithms" ;
     int i;
     sort(course, 4);
     for (i = 0; i < 4; i++)
         printf("%s\\n", course[i]);
     return 0;
 
 void sort(char* name[], int n)
 
     int i, j, k;
     char* tmp;
     for (i = 0; i < n - 1; i++)
     
         k = i;
         for (j = i + 1; j < n; j++)
             if (strcmp(name[j], name[k]) < 0)
                 k = j;
         if (k != i)
         
             tmp = name[i];
             name[i] = name[k];
             name[k] = tmp;
         
     
 

实验结论

实验任务七

源码

#include <stdio.h>
#include <string.h>
#define N 5
int check_id(char* str); // 函数声明
int main()

    char* pid[N] =  "31010120000721656X",
    "330106199609203301",
    "53010220051126571",
    "510104199211197977",
    "53010220051126133Y" ;
    int i;
    for (i = 0; i < N; ++i)
        if (check_id(pid[i])) // 函数调用
            printf("%s\\tTrue\\n", pid[i]);
        else
            printf("%s\\tFalse\\n", pid[i]);
    return 0;

// 函数定义
// 功能: 检查指针str指向的身份证号码串形式上是否合法。
// 形式合法,返回1,否则,返回0
int check_id(char* str)

    // 补足函数实现
    // ...
    int flag = 0, i, j, k;
    char x[11] = "1234567890X";
    for (i = 1; *str != \'\\0\'; i++)
    
        for (k = 0; k < 11; k++)
            if (*str == x[k])
            
                flag = 1;
                break;
            
            else
                flag = 0;
        *str++;
    
    if (i == 19)
        return flag;
    else
        return 0;

实验结论

实验任务八

源码

#include <stdio.h>
#define N 80
void encoder(char* s); // 函数声明
void decoder(char* s); // 函数声明
int main()

    char words[N];
    printf("输入英文文本: ");
    gets(words);
    printf("编码后的英文文本: ");
    encoder(words); // 函数调用
    printf("%s\\n", words);
    printf("对编码后的英文文本解码: ");
    decoder(words); // 函数调用
    printf("%s\\n", words);
    return 0;

/*函数定义
功能:对s指向的字符串进行编码处理
编码规则:
对于a~z或A~Z之间的字母字符,用其后的字符替换; 其中,z用a替换,Z用A替换
其它非字母字符,保持不变
*/
void encoder(char* s)

    // 补足函数实现
    // ×××
    for (; *s != \'\\0\'; s++)
        if (*s >= \'a\' && *s <= \'z\' || *s >= \'A\' && *s <= \'Z\')
            (*s)++, * s = (*s == \'z\' + 1 || *s == \'Z\' + 1) ? *s - 26 : *s;

/*函数定义
功能:对s指向的字符串进行解码处理
解码规则:
对于a~z或A~Z之间的字母字符,用其前面的字符替换; 其中,a用z替换,A用Z替换
其它非字母字符,保持不变
*/
void decoder(char* s)

    // 补足函数实现
    // ×××
    for (; *s != \'\\0\'; s++)
        if (*s >= \'a\' && *s <= \'z\' || *s >= \'A\' && *s <= \'Z\')
            (*s)--, * s = (*s == \'a\' - 1 || *s == \'A\' - 1) ? *s + 26 : *s;

实验结论

 

区块链技术与应用实验报告(实验五)

文章目录

区块链技术与应用实验报告(实验五)

关于作者

  • 作者介绍


    🍊 博客主页作者主页
    🍊 简介:云计算领域优质创作者🏆、在校期间参与众多计算机相关的省赛、国赛,斩获系列荣誉。考取华为资深工程师、红帽工程师等系列认证。

    🍊 关注我简历模板、学习资料、文档下载、技术支持 都可以私信我哦!
    让生命像一团热烈燃烧的火,直到死亡才能使它熄灭


一、实验目的

  • 实验目的

    # 掌握区块链钱包的概念及分类
    # 体验比特币靓号生成、冷钱包和脑钱包的制作过程,感受比特币钱包的奥妙所在
    

二、实验原理简介

  • 实验简介

    #与普通钱包类似,作为数字货币,某些区块链也有“钱包”。只不过,区块链钱包中放的并不是现金,而是用户地址的私钥。换言之,区块链钱包和普通钱包都用来存放相应的货币系统中个人用户最重要、最害怕丢失的物件。
    
    #区块链钱包常按照下面几种方法分类:按照节点数据是否存储完整,可分为全节点钱包(完整存储区块链所有交易数据)和轻节点钱包(只保存了区块链钱包的基本功能);
    
    # 按照区块链钱包是否联网,可分为冷钱包(私钥在本地存储,不联网)和热钱包(联网);按用户是否自行持有私钥,可分为中心化钱包(第三方机构代管用户私钥)和去中心化钱包(用户自行持有钱包的私钥);按是否支持多种币种,可分为单币种钱包、多币种钱包、全币种钱包。
    

三、实验环境

  • 实验环境

    # 实验环境
    本实验在 PC机上即可进行,操作系统不限。
    
    # 这里使用 windows 平台做演示
    windows 10 专业版
    

四、实验步骤

1.解压缩即可完成安装。

  • 安装完毕,暂时不要打开 Bitcoin Core 客户端

2. 生成快捷方式

  • 找到安装路径中的 bitcoin-qt.exe,右击,然后生成桌面快捷方式

3.修改 bitcoin-qt 属性

  • 在桌面找到 bitcoin-qt.exe的快捷方式并单击右键,在弹出的快捷菜单中选择“属性”,在“快捷方式”中“目标”栏的“.exe”后输入一个空格和“-testnet”,单击“确认”按钮退出

4. 进入 Bitcoin Core的 Testnet版客户端

  • 完成上述所有准备后,通过桌面快捷方式进入 Bitcoin Core的 Testnet版客户端。初次进入客户端时,请设置好配置文件(包括区块)安装的路径并记下

5.删除 wallet.dat,重新启动 Bitcoin Core 客户端

  • 在上述路径的 testnet3\\wallets 中存有 wallet.dat 文件。断开网络,删除 wallet.dat,重新启动 Bitcoin Core 客户端,会发现 wallets文件夹下重新生成了一个 wallet.dat 文件

6. 冷钱包 制作完成

  • 单击“设置”中的“加密钱包”,输入密码,将密码和wallet.dat文件保存。这样就制作完成了一个冷钱包

总结

以上是关于实验五的主要内容,如果未能解决你的问题,请参考以下文章

区块链技术与应用实验报告(实验五)

区块链技术与应用实验报告(实验五)

区块链技术与应用实验报告(实验五)

计算机系统 实验五 Cache实验

2018-2019-2 20175306实验五《网络编程与安全》实验报告

2017-2018-2 20165209 实验五《网络编程与安全》实验报告