【题目链接】
【题目考点】
- 文件读写
- 打表
【解题思路】
理论上可以使用printf将每一行字符串分别打印出来,或设置函数打印连续相同的字符,但人工工作量都太大,而且是重复性工作,那不是做程序的人应该做的事情。
有两种思路可以解决这一问题。
首先都是需要将题中字符图复制下来,保存成文本文件data.txt。
思路1:读取data.txt,通过写文件的方式写出要提交的代码code.cpp。
思路2:打表。读取data.txt,把其中的字符都转为ASCII码,构成数组。建立新文件,直接初始化数组,然后打印数组内容。
【题解代码】
解法1:
- 将题中字符图拷贝下来,保存成文本文件data.txt。
- 在process.cpp中写代码,其功能是生成代码文件code.cpp,读取data.txt的每一行,将其外面套上“printf”函数,构成用printf输出字符串的c++语句(构成cout输出语句也可以),写入到code.cpp文件中。
- 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:打表
- 将题中字符图拷贝下来,保存成文本文件data.txt。
- 读取data.txt,将每个字符转化为ASCII码,用逗号分隔,最后加一个0(即’\0’,为了构成一个字符串),写入一个文件arr.txt中
例:
若data.txt中是: abc
生成的arr.txt中应该是:97,98,99,0 - 写代码,输出一个字符数组。字符数组由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;
}