解题思路:
运用二维数组解题,在二维数组里存放网址,再创建一个数组来存放三种操作。
首先在数组第一位放入正在访问的那个网址,再定义两个变量,其中一个用来表示最前面那个网址,当输入visit时,当该网址前面无网址时将后面网址直接加到数组里,并输出,但是当该网址前面有网址时,要覆盖那个网址并输出;当输出back时,t -1,返回数组里上一个网址,直至t为负数时,可以忽略返回这项操作,输出Ignored;当输出forword时,t+1,返回数组里下一个网址,直至t大于最远的那个网址,输出Ignored。
代码如下:
#include <stdio.h> #include <string.h> int main() { char an[100]; char list[1000][100]; /*其中第一个括号中的数字表示有1000行,第二个括号中的数字表示每行能存100个字符*/ char old[] = "http://www.acm.org/"; strcpy(list[0],old);//字符串的拷贝函数 int t,max; t = max = 0; while(scanf("%s",an) && strcmp(an,"QUIT") != 0)//字符串的比较函数strcmp { if(an[0] == 'V')//注意啊!!单引号! { scanf("%s",list[++t]); max = t; puts(list[t]); } else if(an[0] == 'B') { t--; if(t < 0) { t = 0; puts("Ignored"); } else puts(list[t]); } else { t++; if(t > max) { t = max; puts("Ignored"); } else puts(list[t]); } } return 0; }
增加一点字符的笔记:
字符的输入与输出:
char ch = getchar(); //获取一个字符(或 scanf("%c", &ch);) putchar(ch); //输出一个字符(或printf("%c", ch));
字符串的输入与输出:
scanf("%s %s", str[0], str[1]); printf("%s", str[0]); //或者puts(str[0]);
字符串的比较函数
在c语言中,字符串的比较是按照字典序比较的,比如:
"abc"和"bcd"比较:第一个字符'a'和'b'比较 'a' < 'b' ,所以"abc" < "bcd"
"123"和"124"比较:第一个字符'1' = '1',第二个字符'2' = '2',第三个字符'3' < '4' ,所以 "123" < "124"
"12345"和"126"比较:当第三位字符比较'3' < '6' ,所以 "12345" < "126"
下面介绍strcmp()函数:
strcmp的参数为两个字符串,
当第一个字符串大于第二个字符串的时候,返回一个正数;
当第一个字符串等于第二个字符串时,返回0;
当第一个字符串小于第三个字符串时,返回一个负数。