OpenJudge NOI 1.1 10:超级玛丽游戏

【题目链接】

OpenJudge NOI 1.1 10:超级玛丽游戏

【题目考点】

  1. 文件读写
  2. 打表

【解题思路】

理论上可以使用printf将每一行字符串分别打印出来,或设置函数打印连续相同的字符,但人工工作量都太大,而且是重复性工作,那不是做程序的人应该做的事情。

有两种思路可以解决这一问题。
首先都是需要将题中字符图复制下来,保存成文本文件data.txt。
思路1:读取data.txt,通过写文件的方式写出要提交的代码code.cpp。
思路2:打表。读取data.txt,把其中的字符都转为ASCII码,构成数组。建立新文件,直接初始化数组,然后打印数组内容。

【题解代码】

解法1:
  1. 将题中字符图拷贝下来,保存成文本文件data.txt。
  2. 在process.cpp中写代码,其功能是生成代码文件code.cpp,读取data.txt的每一行,将其外面套上“printf”函数,构成用printf输出字符串的c++语句(构成cout输出语句也可以),写入到code.cpp文件中。
  3. code.cpp就是可以提交的代码
//process.cpp,这是读入data.txt生成code.cpp的程序,不是提交的代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    FILE *fp_data = fopen("data.txt", "r"), *fp_code = fopen("code.cpp", "w");
    char s[150];
    int len;
    fputs("#include<bits/stdc++.h>\n", fp_code);
    fputs("using namespace std;\n", fp_code);
    fputs("int main()\n", fp_code);
    fputs("{\n", fp_code);
    while(fgets(s, 150, fp_data))
    {
        len = strlen(s);
        if(feof(fp_data) == false)
            s[len - 1] = '\0';//如果不是最后一行,获得的字符数组s的最后一个字符是\n,应该将其去掉。
        fprintf(fp_code, "\tprintf(\"%s\\n\");\n", s);
    }
    fputs("\treturn 0;\n", fp_code);
    fputs("}\n", fp_code);
	fclose(fp_data);
    fclose(fp_code);
    return 0;
}
//code.cpp 用于提交的代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
	printf("                ********\n");
	printf("               ************\n");
	printf("               ####....#.\n");
	printf("             #..###.....##....\n");
	printf("             ###.......######              ###                 ###           ###           ###\n");
	printf("                ...........               #...#               #...#         #...#         #...#\n");
	printf("               ##*#######                 #.#.#               #.#.#         #.#.#         #.#.#\n");
	printf("            ####*******######             #.#.#               #.#.#         #.#.#         #.#.#\n");
	printf("           ...#***.****.*###....          #...#               #...#         #...#         #...#\n");
	printf("           ....**********##.....           ###                 ###           ###           ###\n");
	printf("           ....****    *****....\n");
	printf("             ####        ####\n");
	printf("           ######        ######\n");
	printf("##############################################################              ##################################\n");
	printf("#...#......#.##...#......#.##...#......#.##------------------#              #...#......#.##------------------#\n");
	printf("###########################################------------------#              ###############------------------#\n");
	printf("#..#....#....##..#....#....##..#....#....#####################              #..#....#....#####################\n");
	printf("##########################################    #----------#                  ##############    #----------#\n");
	printf("#.....#......##.....#......##.....#......#    #----------#                  #.....#......#    #----------#\n");
	printf("##########################################    #----------#                  ##############    #----------#\n");
	printf("#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#                  #.#..#....#..#    #----------#\n");
	printf("##########################################    ############                  ##############    ############\n");
	return 0;
}
解法2:打表
  1. 将题中字符图拷贝下来,保存成文本文件data.txt。
  2. 读取data.txt,将每个字符转化为ASCII码,用逗号分隔,最后加一个0(即’\0’,为了构成一个字符串),写入一个文件arr.txt中
    例:
    若data.txt中是: abc
    生成的arr.txt中应该是:97,98,99,0
  3. 写代码,输出一个字符数组。字符数组由arr.txt中的内容初始化,
#include<bits/stdc++.h>
using namespace std;
//打表程序,不用于提交
int main()
{
    FILE *fp_data = fopen("data.txt", "r"), *fp_arr = fopen("arr.txt", "w");
    char c = fgetc(fp_data);
    while(c != EOF)
    {
        fprintf(fp_arr, "%d,", c);
        c = fgetc(fp_data);
    }
    fprintf(fp_arr, "%d", 0);//构成字符数组的末尾
    fclose(fp_data);
    fclose(fp_arr);
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
//提交用代码
int main()
{
    char s[3000] = {32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,42,42,42,42,42,42,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,42,42,42,42,42,42,42,42,42,42,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,46,46,46,46,35,46,10,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,35,35,35,46,46,46,46,46,35,35,46,46,46,46,10,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,46,46,46,46,46,46,46,35,35,35,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,35,35,35,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,46,46,46,46,46,46,46,46,46,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,46,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,46,35,32,32,32,32,32,32,32,32,32,35,46,46,46,35,32,32,32,32,32,32,32,32,32,35,46,46,46,35,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,42,35,35,35,35,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,35,46,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,35,46,35,32,32,32,32,32,32,32,32,32,35,46,35,46,35,32,32,32,32,32,32,32,32,32,35,46,35,46,35,10,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,42,42,42,42,42,42,42,35,35,35,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,35,46,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,35,46,35,32,32,32,32,32,32,32,32,32,35,46,35,46,35,32,32,32,32,32,32,32,32,32,35,46,35,46,35,10,32,32,32,32,32,32,32,32,32,32,32,46,46,46,35,42,42,42,46,42,42,42,42,46,42,35,35,35,46,46,46,46,32,32,32,32,32,32,32,32,32,32,35,46,46,46,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,46,35,32,32,32,32,32,32,32,32,32,35,46,46,46,35,32,32,32,32,32,32,32,32,32,35,46,46,46,35,10,32,32,32,32,32,32,32,32,32,32,32,46,46,46,46,42,42,42,42,42,42,42,42,42,42,35,35,46,46,46,46,46,32,32,32,32,32,32,32,32,32,32,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,35,35,35,10,32,32,32,32,32,32,32,32,32,32,32,46,46,46,46,42,42,42,42,32,32,32,32,42,42,42,42,42,46,46,46,46,10,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,32,32,32,32,32,32,32,32,35,35,35,35,10,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,35,35,32,32,32,32,32,32,32,32,35,35,35,35,35,35,10,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,10,35,46,46,46,35,46,46,46,46,46,46,35,46,35,35,46,46,46,35,46,46,46,46,46,46,35,46,35,35,46,46,46,35,46,46,46,46,46,46,35,46,35,35,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,46,35,46,46,46,46,46,46,35,46,35,35,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,35,10,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,35,10,35,46,46,35,46,46,46,46,35,46,46,46,46,35,35,46,46,35,46,46,46,46,35,46,46,46,46,35,35,46,46,35,46,46,46,46,35,46,46,46,46,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,35,46,46,46,46,35,46,46,46,46,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,10,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,10,35,46,46,46,46,46,35,46,46,46,46,46,46,35,35,46,46,46,46,46,35,46,46,46,46,46,46,35,35,46,46,46,46,46,35,46,46,46,46,46,46,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,46,46,46,46,35,46,46,46,46,46,46,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,10,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,10,35,46,35,46,46,35,46,46,46,46,35,46,46,35,35,46,35,46,46,35,46,46,46,46,35,46,46,35,35,46,35,46,46,35,46,46,46,46,35,46,46,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,46,35,46,46,35,46,46,46,46,35,46,46,35,32,32,32,32,35,45,45,45,45,45,45,45,45,45,45,35,10,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,35,35,32,32,32,32,35,35,35,35,35,35,35,35,35,35,35,35,0};
    cout<<s;
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值