QAQ的小游戏

描述

Recently,QAQ fell in love a small game,which simulates browser browsing web
pages.It has three kind of operations:
1.BACK: Back to the previous page
2.FORWARD:Go to the next page
3.VISIT URL:Access to the web page
Now,QAQ has visited http://www.acm.org/, and wants to know the website after each operation, if the page not change, output “Ignored”.

输入

There is only one test data, and the number of operations does not exceed 1000,
end flag when input “QUIT”
Attion: every website length no more then 100.

输出

If the website changes, output the new website, if not, output Ignored.

样例输入

VISIT http://oj.51ac.club/
VISIT http://maojunjie666.top/
BACK
BACK
BACK
FORWARD
VISIT http://www.ibm.com/
BACK
BACK
FORWARD
FORWARD
FORWARD
QUIT

样例输出

http://oj.51ac.club/
http://maojunjie666.top/
http://oj.51ac.club/
http://www.acm.org/
Ignored
http://oj.51ac.club/
http://www.ibm.com/
http://oj.51ac.club/
http://www.acm.org/
http://oj.51ac.club/
http://www.ibm.com/
Ignored

解析

题目的主要意思是,毛学姐在当前的一个网站,如果输入VISIT,接着输入一个网站
那么当前网站就是输入的网站。
如果输入BACK,那么就是返回上一个网站,如果当前网站是最开始的网站,那么输出Ignored。
如果输入FORWARD,那么就是进入下一个网站,如果当前网站是最新的网站,那么输出Ignored。

思路

首先我们需要定义好最原始的网站,那么需要创建一个二维数组来储存原始网站和后来会输入的网站。
会有以下几种情况:
首先在过程中输入一个新的网站,那么新的网站会成为当前网站,并且覆盖掉上一个网站之后的所有网站。
比如:现在有三个网站,并且处在第一个网站时,输入一个新的网站,新的网站成为第二个网站,并且
原来的第二、三网站被清除,此时只有两个网站可以执行。
那么我们应该确定一个变量j来表示当前可以执行的网站的个数,该变量的作用是当FORWARD越界时,
输出Ignored。
还应该确定一个变量i来确定当前网站的位置,每次执行命令时:
1、命令为BACK,i减一,然后和0进行比较,如果大于0,那么输出当前网站的上一个网站,并且该网站
成为当前网站。如果小于0,输出Ignored,并且让i=0,即当前网站为最原始网站。
2、命令为FORWARD,i加一,然后和j进行比较,如果小于j,那么输出当前网站的下一个网站,并且该网站
成为当前网站。如果大于j,输出Ignored,并且让i=j,即当前网站为最新网站。
3、命令为VISIT,输入新的网站,并且覆盖原来当前网站的下面的网站。此时i加一,并且j等于i。并输出当前网站。

代码

#include<stdio.h>
#include<string.h>
int main()
{
	int i=0,j=0,len;
    char a[1000][100],b[10];
    strcpy(a[0],"http://www.acm.org/");//定义原始网站 
    while(scanf("%s",&b)) //接收指令 iF判断语句来判断指令 
    {
    	if(b[0]=='V'){
    		i+=1;j=i; //j记录当前覆盖后的网页个数。 
    		scanf("%s",&a[i]);
    		len=strlen(a[i]);
            a[i][len]='\0';
            puts(a[i]);
		}
		else if(b[0]=='B'){
			i-=1;
			if(i<0) { printf("Ignored\n");i=0;}
			else puts(a[i]);
		}
		else if(b[0]=='F'){
			i+=1;
			if(i>j) { printf("Ignored\n");i=j;}
			else puts(a[i]);
		}
		else break;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值