所有实践项目的源程序可到我的Github上下载:https://github.com/liulizhi1996/C-Programming-Practice-in-short-semester

任务1:英雄出世

炎热的夏天午后,小明正在百无聊赖地写c语言程序。忽然,电脑屏幕一阵抖动,浮现下面18×18个看似杂乱无章的数字:

32,  32,  32, 32,  32,  32, 32,  32,  32, 95,  45, 126, 126, 126, 126, 126,  45, 95,

32,  32,  32, 32,  32,  32, 32,  32,  10, 32,  32,  32, 32,  32,  32, 32,  32,  32,

-93,-34,  45, 45,  45, -93, -34,  45, 32,  32,  32, 92,  32,  32, 32,  32,  32, 10,

32,  32,  32, 32,  32,  32, 32,  32, 124, -93, -83,  32, 32, -93, -83,  32,  96, 92,

32,  32,  32, 124, 32,  32,  32, 32,  10,  32, 32,  32,  32, 32,  32,  32, 124, 32,

-93,-64, -95, -95, -93, -64,  32,  32, 32, 124,  47, 126,  92, 32,  32,  32, 32,  10,

32,  32,  32, 32,  44, 126,  32, 32,  32,  32, 32,  32,  32, 32,  32,  32, 32,  32,

32,  32,  32, 124, 32,  32,  32, 32,  10,  32, 32,  32,  32, 124, 32,  32,  32, 32,

79,  32,  32, 32,  32,  32, 32,  32,  32, 32,  95,  45, 126, 32,  32,  32, 32,  10,

32,  32,  32, 32,  32, 126,  45, 95,  95,  95, 95,  95,  95, 95,  95,  95, 45,  45,

126, 32,  32, 126,  92, 32,  32,  32, 10,  32,  32, 32,  47,  32, 32,  44,  32, 32,

32,  46,  32, 32,  32,  32, 32,  46,  32, 32,  32,  92, 32,  32,  92, 32,  32,  10,

32,  32, 47,  95,  44, 39, 124,  32,  32, 32,  32,  32, 32,  32,  32, 32,  32,  32,

32,  32, 124,  96, 95,  95,  39, 32,  10,  32, 32,  32,  32, 32,  32, 124,  32, 32,

32,124,  96, 46,  94,  46, 39, 124,  32,  32, 32, 124,  32,  32,  32,  32, 32,  10,

32,  32,  32, 32,  32,  32, 124, 32,  32,  32, 44,  40,  32, 32,  41,  47, 32,  92,

32,  32,  92, 95,  32,  32, 32,  32,  10, 32,  32,  32, 32,  32,  47, 95,  95, -93,

-81, 32,  32,  96, 39,  32,  32, 32,  32, -93, -36,  95, 95,  92,  32, 32,  32,  10

同时,天空飘下一张小纸条,上面写着一段神谕:“宽宏的数组,将容纳所见的一切;万能的指针,将把所见的一切化为字符;而后,救世主即将诞生!”。

聪明的你,请帮帮惊慌失措的小明,一起揭开救世主的神秘面纱吧……

任务1的要求

在main函数中,利用数组与指针操作,将救世主的模样正确显示在屏幕上。

#include <stdio.h>int screen[18][18] = {32, 32, 32, 32, 32, 32, 32, 32, 32, 95, 45, 126, 126, 126, 126, 126, 45, 95,32, 32, 32, 32, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,-93, -34, 45, 45, 45, -93, -34, 45, 32, 32, 32, 92, 32, 32, 32, 32, 32, 10,32, 32, 32, 32, 32, 32, 32, 32, 124, -93, -83, 32, 32, -93, -83, 32, 96, 92,32, 32, 32, 124, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 124, 32,-93, -64, -95, -95, -93, -64, 32, 32, 32, 124, 47, 126, 92, 32, 32, 32, 32, 10,32, 32, 32, 32, 44, 126, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,32, 32, 32, 124, 32, 32, 32, 32, 10, 32, 32, 32, 32, 124, 32, 32, 32, 32,79, 32, 32, 32, 32, 32, 32, 32, 32, 32, 95, 45, 126, 32, 32, 32, 32, 10,32, 32, 32, 32, 32, 126, 45, 95, 95, 95, 95, 95, 95, 95, 95, 95, 45, 45,126, 32, 32, 126, 92, 32, 32, 32, 10, 32, 32, 32, 47, 32, 32, 44, 32, 32,32, 46, 32, 32, 32, 32, 32, 46, 32, 32, 32, 92, 32, 32, 92, 32, 32, 10,32, 32, 47, 95, 44, 39, 124, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,32, 32, 124, 96, 95, 95, 39, 32, 10, 32, 32, 32, 32, 32, 32, 124, 32, 32,32, 124, 96, 46, 94, 46, 39, 124, 32, 32, 32, 124, 32, 32, 32, 32, 32, 10,32, 32, 32, 32, 32, 32, 124, 32, 32, 32, 44, 40, 32, 32, 41, 47, 32, 92,32, 32, 92, 95, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 47, 95, 95, -93,-81, 32, 32, 96, 39, 32, 32, 32, 32, -93, -36, 95, 95, 92, 32, 32, 32, 10};int main()
{int *ptr = *screen;for (int i = 0; i < 18*18; ++i, ++ptr){printf("%c", (char)((*ptr + 128) % 128));}return 0;
}

任务2:解救神兽

就在救世主面世的一刹那,电闪雷鸣……小明穿越了……成了救世主……

救世主当然不可能是孤独的,他有一只强大的助力兼小宠物——神兽。但是,在上古大战中,神兽被邪恶势力封印在一个叫“pet.txt”的文本文件里了。小明回想起救世主诞生的过程,神兽似乎也可以用类似的方式来唤醒,然而事情真有这么简单吗?小明打开文件后愣住了……

此时,冥冥中似乎有个惹人嫌的家伙夹杂着中英文唠叨什么“16210”,这对小明会有帮助吗?

另外,在救世主的记忆里,想容纳完整的神兽,似乎需要22×46大小的空间,这点也许对保留神兽很重要。

任务2的要求

实现函数void showFile(char * filename, char *arr, int h, int w)读取pet.txt文件,其中参数fileName的实参应为文件路径名,arr为二维数组首元素的地址,h为高,w为宽,利用在main函数定义的二维数组存放数据,利用指针操作,将神兽的模样正确显示在屏幕上。应在main函数调用showFile函数。

pet.txt文件:

20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 7D 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 20 7D 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 2F 20 20 7D 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5F 5F 2F 5F 20 20 2E 3A 3A 3A 3A 2E 2D 27 2D 28 2F 2D 2F 29 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5F 2F 3A 20 20 2E 3A 3A 3A 3A 2E 2D 27 20 2E 2D 27 5C 2F 5C 5F 27 20 29 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 3A 20 20 2E 3A 3A 3A 3A 2E 2F 20 20 20 2D 2E 5F 2D 2E 20 20 70 5C 7C 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 3A 20 28 22 22 22 22 2F 20 20 20 20 22 2E 20 20 28 5F 5F 2F 7C 7C 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5C 3A 3A 29 2E 2D 27 20 20 2D 2E 5F 20 20 5C 2F 20 5C 5C 2F 5C 7C 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F 5F 2E 2D 27 27 29 2F 20 20 27 2D 27 2E 20 2E 20 27 2E 20 7C 20 20 28 69 5F 4F 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 2E 2D 27 20 20 20 20 20 20 5C 20 20 20 20 20 20 20 2D 27 20 20 20 20 20 20 27 5C 7C 20 20 20 20 20 20 20 20 0D 0A 20 20 20 20 20 5F 5F 5F 2E 2F 20 20 20 20 20 20 2E 2D 27 7C 20 20 20 20 20 20 20 27 2E 20 20 28 20 20 20 20 5C 5C 20 20 20 20 20 20 20 20 0D 0A 20 20 2E 2D 27 20 20 20 3A 20 20 20 20 20 20 27 5F 20 20 5C 20 20 20 20 20 20 20 20 20 27 2D 27 5C 20 20 2F 7C 2F 20 20 20 20 20 20 20 20 0D 0A 20 2F 20 20 20 20 20 20 29 5C 5F 20 20 20 20 20 20 27 2D 20 29 5F 5F 5F 5F 5F 5F 5F 5F 5F 2E 2D 7C 5F 2F 5E 5C 20 20 20 20 20 20 20 20 20 0D 0A 20 28 20 20 20 2E 2D 27 20 20 20 29 2D 2E 5F 2D 3A 20 20 2F 20 20 20 20 20 20 20 20 5C 28 2F 5C 27 2D 2E 5F 20 27 2E 20 20 20 20 20 20 20 0D 0A 20 20 28 20 20 20 29 20 20 5F 2F 2F 5F 2F 7C 3A 20 20 2F 20 20 20 20 20 20 20 20 20 20 27 5C 28 29 20 20 20 27 5C 5F 5C 20 20 20 20 20 20 0D 0A 20 20 20 28 20 28 20 20 20 5C 28 29 20 20 20 29 5F 2F 20 20 20 20 20 20 20 20 20 20 20 20 20 29 2F 20 20 20 20 20 20 5C 5C 20 20 20 20 20 0D 0A 20 20 20 20 29 20 20 20 20 20 5C 5C 20 20 28 5F 29 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2F 20 20 20 20 20 20 20 20 29 5C 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 5F 6F 5C 20 20 5C 5C 20 20 20 20 20 20 20 20 20 20 20 20 28 6F 5F 20 20 20 20 20 20 20 7C 5F 5F 5C 20 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 5C 5F 2F 20 20 20 5C 5C 5F 5F 20 20 20 20 20 20 20 20 20 20 29 5F 5C 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 5F 5F 5C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
#include <stdio.h>
#include <stdlib.h>void showFile(char *filename, char *arr, int h, int w)
{FILE* fp = fopen(filename, "r");int pixel;for (int i = 0; i < h; ++i){for (int j = 0; j < w; ++j){fscanf(fp, "%x", &pixel);*(arr+i*w+j) = (char)pixel;printf("%c", *(arr+i*w+j));}}fclose(fp);
}int main()
{char filename[] = "pet.txt";char arr[22][48] = { 0 };int h = 22, w = 48;showFile(filename, &arr[0][0], h, w);return 0;
}

任务3:驯兽高手

费尽周折将神兽解救出来之后,刚从长期封印中苏醒过来的神兽似乎迷失了方向,昏头昏脑地往背离救世主的远方走去。小明哪里舍得前功尽弃,于是口里念念有词,手上频频点指,终于使得神兽调头归来。你知道小明是怎么做到的吗?

任务3的要求

实现函数void mirrorTrans(char * arr, int h, int w),操作存储神兽的数组,使之水平旋转180度(镜像大法),并把结果显示在屏幕上,其中arr的实参应为二维数组首元素的地址,h为高,w为宽。应在main函数调用mirrorTrans函数。注意:旋转后神兽的形态不应有明显的变化!

#include <stdio.h>
#include <stdlib.h>void showFile(char *filename, char *arr, int h, int w)
{FILE* fp = fopen(filename, "r");int i = 0, j = 0, pixel;while (!feof(fp)){fscanf(fp, "%x", &pixel);*(arr+i*w+j) = (char)pixel;j++;if (j == w){j = 0;i++;}}fclose(fp);
}#include <stdio.h>
#include <stdlib.h>void showFile(char *filename, char *arr, int h, int w)
{FILE* fp = fopen(filename, "r");int pixel;for (int i = 0; i < h; ++i){for (int j = 0; j < w; ++j){fscanf(fp, "%x", &pixel);*(arr+i*w+j) = (char)pixel;printf("%c", *(arr+i*w+j));}}fclose(fp);
}void mirrorTrans(char *arr, int h, int w)
{for (int i = 0; i < h; ++i){for (int j = w-3; j > 0; --j){if (*(arr+i*w+j) == '/')printf("\\");else if (*(arr+i*w+j) == '}')printf("{");else if (*(arr+i*w+j) == '(')printf(")");else if (*(arr+i*w+j) == ')')printf("(");else if (*(arr+i*w+j) == '\\')printf("/");else if (*(arr+i*w+j) == 'p')printf("q");elseprintf("%c", *(arr+i*w+j));}printf("%c", *(arr+i*w+w-2));printf("%c", *(arr+i*w+w-1));}
}int main()
{char filename[] = "pet.txt";char arr[22][48] = { 0 };int h = 22, w = 48;printf("Before transpose:\n");showFile(filename, &arr[0][0], h, w);printf("\nAfter transpose:\n");mirrorTrans(&arr[0][0], h, w);return 0;
}

任务4:枪林弹雨

随着神兽的封印解开,与神兽同时被封印在文本文件devil.txt的邪恶势力也破茧而出,随即对神兽展开了猛烈的攻击。各种攻击覆盖了神兽所在的22×46的范围。救世主空有百试百灵的治疗术,但是呆头呆脑的神兽却从来不会喊疼,所以救世主需要一个辅助能力,对22×46范围内的任何一个坐标,能马上判断出神兽是否被击中。注意,擦破皮(正好在边缘)也算被击中。你能帮助救世主得到这个能力吗?

已知神兽不会贴近22×46这个范围的四条边沿(即首行、末行、首列、末列都属于不会被击中的位置,显示神兽后也能观察到,这点也许有利于你开发该能力)。

为了证明你正确地开发了该能力,请画出效果图,即把范围内所有不会被击中的位置标注为’*’号,而神兽原本占据的位置显示为空格。

任务4的要求

(1)在main函数调用任务2实现的showFile函数,显示邪恶势力devil的真面目,devil占据空间的大小为16×54;

(2)实现函数void coverHit(char * arr, int h, int w)画一个示意图,用’*’号标出22×46范围内所有发生未击中情况的位置点,其中arr为存放神兽的二维数组的首元素的地址,h为高,w为宽。当然,需要在main函数调用coverHit。

devil.txt文件:

20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 5F 5F 5F 3D 3D 3D 3D 2D 5F 20 20 5F 2D 3D 3D
3D 3D 5F 5F 5F 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20
20 20 20 5F 2D 2D 5E 5E 5E 23 23 23 23 23 2F 2F
20 20 20 20 20 20 5C 5C 23 23 23 23 23 5E 5E 5E
2D 2D 5F 20 20 20 20 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 20 20 20 5F 2D 5E 23 23 23 23 23
23 23 23 23 23 2F 2F 20 28 20 20 20 20 29 20 5C
5C 23 23 23 23 23 23 23 23 23 23 5E 2D 5F 20 20
20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 2D
23 23 23 23 23 23 23 23 23 23 23 23 2F 2F 20 20
7C 5C 5E 5E 2F 7C 20 20 5C 5C 23 23 23 23 23 23
23 23 23 23 23 23 2D 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 5F 2F 23 23 23 23 23 23 23 23 23
23 23 23 2F 2F 20 20 20 28 40 3A 3A 40 29 20 20
20 5C 5C 23 23 23 23 23 23 23 23 23 23 23 23 5C
5F 20 20 20 20 20 0D 0A 20 20 20 20 2F 23 23 23
23 23 23 23 23 23 23 23 23 23 28 28 20 20 20 20
20 5C 5C 2F 2F 20 20 20 20 20 29 29 23 23 23 23
23 23 23 23 23 23 23 23 23 5C 20 20 20 20 0D 0A
20 20 20 2D 23 23 23 23 23 23 23 23 23 23 23 23
23 23 23 5C 5C 20 20 20 20 28 6F 6F 29 20 20 20
20 2F 2F 23 23 23 23 23 23 23 23 23 23 23 23 23
23 23 2D 20 20 20 0D 0A 20 20 2D 23 23 23 23 23
23 23 23 23 23 23 23 23 23 23 23 23 5C 5C 20 20
2F 20 56 56 20 5C 20 20 2F 2F 23 23 23 23 23 23
23 23 23 23 23 23 23 23 23 23 23 2D 20 20 0D 0A
20 2D 23 23 23 23 23 23 23 23 23 23 23 23 23 23
23 23 23 23 23 5C 5C 2F 20 20 20 20 20 20 5C 2F
2F 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
23 23 23 23 2D 20 0D 0A 5F 23 2F 7C 23 23 23 23
23 23 23 23 23 23 2F 5C 23 23 23 23 23 23 28 20
20 20 2F 5C 20 20 20 29 23 23 23 23 23 23 2F 5C
23 23 23 23 23 23 23 23 23 23 7C 5C 23 5F 0D 0A
7C 2F 20 7C 23 2F 5C 23 2F 5C 23 2F 5C 2F 20 20
5C 23 2F 5C 23 23 5C 20 20 7C 20 20 7C 20 20 2F
23 23 2F 5C 23 2F 20 20 5C 2F 5C 23 2F 5C 23 2F
5C 23 7C 20 5C 7C 0D 0A 20 20 20 7C 2F 20 20 56
20 20 56 20 20 20 20 20 20 56 20 20 5C 23 5C 7C
20 7C 20 20 7C 20 7C 2F 23 2F 20 20 56 20 20 20
20 20 20 56 20 20 56 20 20 5C 7C 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 2F 20 7C 20 7C 20 20 7C 20 7C 20
5C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 28 20 20 7C
20 7C 20 20 7C 20 7C 20 20 29 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 5F 5F 5C 20 7C 20 7C 20 20 7C 20 7C 20
2F 5F 5F 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 28 76 76 76 28 56
56 56 29 28 56 56 56 29 76 76 76 29 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>void showFile(char *filename, char *arr, int h, int w)
{FILE* fp = fopen(filename, "r");int pixel;for (int i = 0; i < h; ++i){for (int j = 0; j < w; ++j){fscanf(fp, "%x", &pixel);*(arr+i*w+j) = (char)pixel;printf("%c", *(arr+i*w+j));}}fclose(fp);
}void flood_fill(char *arr, int h, int w, int *hit, int x, int y)
{if (x < 0 || x >= h || y < 0 || y >= w || *(hit+x*w+y))return;if (*(arr+x*w+y) == ' ' || *(arr+x*w+y) == '\n' || *(arr+x*w+y) == '\r'){*(hit+x*w+y) = 1;flood_fill(arr, h, w, hit, x-1, y);flood_fill(arr, h, w, hit, x+1, y);flood_fill(arr, h, w, hit, x, y-1);flood_fill(arr, h, w, hit, x, y+1);}
}void coverHit(char *arr, int h, int w)
{int **hit;hit = (int **)malloc(sizeof(int *) * h);for (int i = 0; i < h; i++){hit[i] = (int *)malloc(sizeof(int) * w);memset(hit[i], 0, sizeof(int) * w);}flood_fill(arr, h, w, &hit[0][0], 0, 0);for (int i = 0; i < h; ++i){for (int j = 0; j < w-2; ++j){if (*(*hit+i*w+j))printf("*");elseprintf(" ");}printf("\r");printf("\n");}
}int main()
{char filename1[] = "pet.txt", filename2[] = "devil.txt";char pet[22][48] = { 0 }, devil[16][56] = { 0 };int pet_h = 22, pet_w = 48, devil_h = 16, devil_w = 56;showFile(filename1, &pet[0][0], pet_h, pet_w);printf("\n");showFile(filename2, &devil[0][0], devil_h, devil_w);printf("\n\n");coverHit(&pet[0][0], pet_h, pet_w);return 0;
}

任务5:终极封印

现在,拯救世界的担子落到了小明的肩上。经过分析,小明发现原来devil.txt的封印方式太逊了,因为文件太冗余了。小明需要掌握一门终极封印术,把devil再次封印。封印术的关键在于:(1)封印文件仍应该能够描述devil的全部信息;(2)封印文件越小,封印效果越好。为此,小明踏上了茫茫的修炼之路,究竟是修炼人族的ASCII码(Easy)?还是矮人族的折叠术(Normal)?还是精灵族的赫夫曼树(Difficult,可查阅数据结构相关介绍)?还是小明自创的独门封印绝技(Amazing!)?决定权在小明手里,让我们拭目以待……

任务5的要求:

(1)实现函数void sealDevil(char * arr, char * filename) 对devil进行封印,其中arr表示存放devil的二维数组首元素的地址,filename表示新的封印文件的路径名,建议的文件名为“NewSeal”。

(2)实现函数void unsealDevil(char * filename)读取新的封印文件NewSeal,显示解封的结果(即再次把devil完整显示在屏幕上)以证明你的封印过程无误。

#include <stdio.h>
#include <stdlib.h>void showFile(char *filename, char *arr, int h, int w)
{FILE* fp = fopen(filename, "r");int pixel;for (int i = 0; i < h; ++i){for (int j = 0; j < w; ++j){fscanf(fp, "%x", &pixel);*(arr+i*w+j) = (char)pixel;printf("%c", *(arr+i*w+j));}}fclose(fp);
}void sealDevil(char *arr, char *filename)
{FILE *fp = fopen(filename, "w");while (*arr){fprintf(fp, "%d ", *arr);++arr;}fclose(fp);
}void unsealDevil(char *filename)
{FILE *fp = fopen(filename, "r");int ch;while (!feof(fp)){fscanf(fp, "%d", &ch);printf("%c", (char)ch);}fclose(fp);
}int main()
{char filename1[] = "devil.txt", filename2[] = "NewSeal.txt";char devil[16][56] = { 0 };int h = 16, w = 56;showFile(filename1, &devil[0][0], h, w);printf("\n\n");sealDevil(&devil[0][0], filename2);unsealDevil(filename2);return 0;
}

厦大小学期C语言程序设计实践(一)相关推荐

  1. c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...

    北方民族大学 课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : 软件工程(2)班 学 生 姓 名 : 李思良 学 号 : 任 课 教 师 : 王晓锋 学 期 : 2015-2016学 ...

  2. 《C 语言程序设计实践》任务书

    <C 语言程序设计实践>任务书 <C 语言程序设计实践>任务书 一.学生选题原则 1.学生根据自身情况选择题目,从实训题目中任选一道题目,或者在给出可 供选择题目之外自己选择题 ...

  3. c语言程序设计实践课选题,c语言程序设计实践实验题目

    c语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考1实验题目:循环结构程序设计实验目的:1.熟悉 VC++6.0 的运行环境,掌握 C 程序的执行方法:2.掌握三种基本数据类型.部分运 ...

  4. C语言程序设计实践题,2020年C语言程序设计实践实验题目.doc

    C语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考 实验题目循环结构程序设计 实验目的 熟悉VC++的运行环境,掌握C程序的执行方法: 掌握三种基本数据类型.部分运算符号和常用函数: ...

  5. c语言上期中考试试卷答案,2007~2008学年度上学期C语言程序设计期中试卷及答案...

    2007-2008学年度上学期C 语言程序设计期中试卷 一.填空题(本大题30空,每空1分共30分) 1.C 语言中的基本数据类型包括 . . 三种. 2.C 语言中的逻辑运算符有 . . 三种. 3 ...

  6. 《C语言程序设计实践》————如何买玫瑰?(贪心思维)

    <C语言程序设计实践>----如何买玫瑰?(贪心思维) 要求:小慧过生日,小明要买玫瑰送她.每枝红玫瑰5元,满5支送1枝,满20枝送5枝.小明一共有n(n>10)元钱,最多能买到多少 ...

  7. c语言程序设计电子信息,电子信息类专业C语言程序设计实践教学探讨

    摘 要 C语言程序设计课程在电子信息类专业课程体系中扮演着十分重要的角色,实践教学是其中重要的环节之一.在对该门课程进行细致分析的基础上,制定具体的实践教学设计规划和方案,开展具有针对性的实践教学活动 ...

  8. c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...

    学生成绩管理系统C语言程序设计实践报告 (此文档为word格式,下载后您可任意编辑修改!) 中南大学 C语言程序设计实践报告 题 目 学 生 成 绩 管 理 系 统 学生姓名 木雕小象 指导教师 × ...

  9. 吉大20春学期C语言程序设计作业二,吉大18春学期《C语言程序设计》在线作业二【答案】...

    吉大17秋学期<C语言程序设计>在线作业二-0004 试卷总分:100    得分:0 一. 单选题 (共 10 道试题,共 40 分) 1.sizeof(float)是 A.一个双精度型 ...

最新文章

  1. Java调用库文件(JNI)(android对此有所改变)
  2. 如何编写Python模块/包?
  3. 不能在 UTF8 和 UCS2 之间转换: failUTF8Conv
  4. wireshark抓取https并解密方法一
  5. nodejs express 路由与view创建多级目录
  6. python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...
  7. 安卓开源项目周报1220
  8. python字频统计软件_python结巴分词以及词频统计实例
  9. .NET Regular Expressions
  10. 光源时间_您的国美备战时间已不足一个月!绝密国美考点、考场、光源分析送上!...
  11. PDA端的数据库一般采用的是sqlce数据库
  12. Docker初学者指南-如何创建您的第一个Docker应用程序
  13. CentOS8 安装 Docker
  14. C语言之指针本身地址与指针向的地址(四十四)
  15. iPhoneiPad DFU及恢复模式刷机、降级教程
  16. Hcse 交换知识点-4
  17. 电脑时间显示到秒 设置电脑显示时间为秒
  18. 【卫星轨道】初步学习,零散知识点
  19. python的拼音库是什么意思_Python 中拼音库 PyPinyin 的用法!这个库有点意思哈!...
  20. Ubuntu 桌面便签小工具-Indicator Stickynotes

热门文章

  1. android京东商城一级分类到二级分类的滑动效果,Android仿京东分类模块左侧分类条目效果...
  2. matlab云端软件,在集群和云端实现扩展和加速 - MATLAB Simulink
  3. 笔形输入法 -- 划一划
  4. PYQT5+openCV项目实战:微循环仪图片、视频记录和人工对比软件(附源码)
  5. CentOS 6.8 网络yum源配置
  6. 调用opencv库进行身份证号码识别主要流程
  7. java 通过经纬度计算巨鹿,中国城市经纬度-精确到县级.doc
  8. [c语言]西邮Linux兴趣小组2020纳新面试题
  9. aText for Mac(打字加速器)
  10. 基于STM32的自平衡小车DIY