pku 1028 模拟法

本文介绍了一个简单的模拟Web浏览器导航逻辑的程序实现。该程序能够处理四种基本指令:访问指定网址(VISIT)、返回上一页(BACK)、前进至下一页(FORWARD)以及退出浏览器(QUIT)。通过使用数组来保存历史访问记录,并利用变量跟踪当前页面位置,有效地实现了浏览器的基本导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

题意概述:本题是一个模拟Web浏览器的程序。默认主页为http://www.acm.org/输入为指令,输出为当前页面的网址。输入的指令有4种:
(1)VISIT(后接一个网址)—— 访问它后面紧接着的网址
(2)BACK——访问当前网页的前一个
(3)FORWARD——访问当前网页的后一个
(4)QUIT——退出(关闭浏览器)

思路:必须记录访问过的网址,因为是顺序关系,所以用数组存储,下标为0的元素为默认页;有一个变量记录当前页面在数组中的位置;BACK和FORWARD指令可能出现特殊情况:
(1)BACK到默认页再BACK——输出Ignored
(2)FORWARD到最后一个访问到的页面再FORWARD——输出Ignored

#include<iostream>
#include<cstring>
using namespace std;

int check(char *command)//每个命令对应一个数字 
{
    if(strcmp(command,"VISIT") == 0)
        return 0;
    if(strcmp(command,"BACK") == 0)
        return 1;
    if(strcmp(command,"FORWARD") == 0)
        return 2;
    if(strcmp(command,"QUIT") == 0)
        return 3;
}

int main()
{
    char browsers[101][71] = {"http://www.acm.org/"};
    char command[10];
    int i = 0;//网站目前位置 
    int cur = 0;//网站目前个数 
    while(cin>>command)
    {
        int n = check(command);
        switch(n)//命令选择 
        {
            case 0:
                i++;
                cur = i;
                cin>>browsers[i];
                cout<<browsers[i]<<endl;
                break;
            case 1:
                i--;//退回上一位置 
                if(i>=0)
                    cout<<browsers[i]<<endl;
                else
                {
                    cout<<"Ignored"<<endl;
                    i++;//已经没有网站可以浏览,位置归0 
                }
                break;
            case 2:
                i++;//进入下一位置 
                if(i<=cur)
                    cout<<browsers[i]<<endl;
                else
                {
                    cout<<"Ignored"<<endl;
                    i--;//已经没有网站可以浏览,位置归cur 
                }
                break;
            case 3:
                return 0;//退出 
        }
    }
    return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值