洛谷 P1000 超级玛丽游戏

题面

题目背景

本题是洛谷的试机题目,可以帮助了解洛谷的使用。

建议完成本题目后继续尝试 P1001P1008

另外强烈推荐新用户必读贴

题目描述

超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。

                ********
               ************
               ####....#.
             #..###.....##....
             ###.......######              ###            ###
                ...........               #...#          #...#
               ##*#######                 #.#.#          #.#.#
            ####*******######             #.#.#          #.#.#
           ...#***.****.*###....          #...#          #...#
           ....**********##.....           ###            ###
           ....****    *****....
             ####        ####
           ######        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############

输入格式

输出格式

如描述

输入输出样例

说明/提示

广告

洛谷出品的算法教材,帮助您更简单的学习基础算法。【官方网店绝赞热卖中!】>>>

帮深入浅出打了一波广告

 

题解

这道题代码的要点便是cout语句与endl的用法(也可以使用 printf() 函数)

eg_1:

cout<<"ABC"<<endl;
printf("ABC\n");

这两段代码的作用都为输出 ABC 以及一个换行符

eg_2:

cout<<"jntm"<<2.5<<'j'<<endl;
cout<<"jntm"<<2.5<<'j'<<'\n';
printf("jntm2.5j\n");

这三段代码作用相同(请自行揣摩意思)实际是作者懒得讲。

所以这题的代码如下所示

解1:

#include <bits/stdc++.h>//万能头文件
using namespace std;//使用命名空间
int main()//主函数
{
	cout<<"                ********"<<endl;
	cout<<"               ************"<<endl;
	cout<<"               ####....#."<<endl;
	cout<<"             #..###.....##...."<<endl;
	cout<<"             ###.......######              ###            ###"<<endl;
	cout<<"                ...........               #...#          #...#"<<endl;
	cout<<"               ##*#######                 #.#.#          #.#.#"<<endl;
	cout<<"            ####*******######             #.#.#          #.#.#"<<endl;
	cout<<"           ...#***.****.*###....          #...#          #...#"<<endl;
	cout<<"           ....**********##.....           ###            ###"<<endl;
	cout<<"           ....****    *****...."<<endl;
	cout<<"             ####        ####"<<endl;
	cout<<"           ######        ######"<<endl;
	cout<<"##############################################################"<<endl;
	cout<<"#...#......#.##...#......#.##...#......#.##------------------#"<<endl;
	cout<<"###########################################------------------#"<<endl;
	cout<<"#..#....#....##..#....#....##..#....#....#####################"<<endl;
	cout<<"##########################################    #----------#"<<endl;
	cout<<"#.....#......##.....#......##.....#......#    #----------#"<<endl;
	cout<<"##########################################    #----------#"<<endl;
	cout<<"#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#"<<endl;
	cout<<"##########################################    ############"<<endl;
	return 0;//结束主函数
}//严禁抄袭刷AC

换行符endl也可以替换成 \n (注意n前面是反斜杠)

于是就有了 解2:

#include <bits/stdc++.h>
using namespace std;
int main()
{
	cout<<"                ********\n";
	cout<<"               ************\n";
	cout<<"               ####....#.\n";
	cout<<"             #..###.....##....\n";
	cout<<"             ###.......######              ###            ###\n";
	cout<<"                ...........               #...#          #...#\n";
	cout<<"               ##*#######                 #.#.#          #.#.#\n";
	cout<<"            ####*******######             #.#.#          #.#.#\n";
	cout<<"           ...#***.****.*###....          #...#          #...#\n";
	cout<<"           ....**********##.....           ###            ###\n";
	cout<<"           ....****    *****....\n";
	cout<<"             ####        ####\n";
	cout<<"           ######        ######\n";
	cout<<"##############################################################\n";
	cout<<"#...#......#.##...#......#.##...#......#.##------------------#\n";
	cout<<"###########################################------------------#\n";
	cout<<"#..#....#....##..#....#....##..#....#....#####################\n";
	cout<<"##########################################    #----------#\n";
	cout<<"#.....#......##.....#......##.....#......#    #----------#\n";
	cout<<"##########################################    #----------#\n";
	cout<<"#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#\n";
	cout<<"##########################################    ############\n";
	return 0;
}

同时如前面所说printf也可以获得AC

但printf只能用\n换行

于是解3就出来了

解3:

#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;
}

这就是这道题的3种解法

最后如果大家觉得这期文章做的还不错的话,求赞 求收藏 求打赏 求转发,最重要的是点一个大大的关注,各位的支持就是我写文章的最大动力,OK各位我们下期再见。

好像在哪个理工男那边听过?

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值