2872 - 【创新型】第10章: 字符串 10.26 寻找域名
时间限制 : 1 秒
内存限制 : 128 MB
统一资源定位符(Uniform Resource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
<span style="font-size:medium;"><span style="font-family:'Courier New';">典型的URL语法应该如下:</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">scheme://domain:port/path?query_string#fragment_id</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">在这个问题中模式/协议(scheme)和域名(domain)是必须的其他都是可选的。 </span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">例如下面包含一些正确的URL: </span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">http://dict.bing.com.cn/#%E5%B0%8F%E6%95%B0%E7%82%B9</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">http://www.mariowiki.com/Mushroom</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">https://mail.google.com/mail/?shva=1#inbox</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">http://en.wikipedia.org/wiki/Bowser_(character)</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">http://fync.acmclub.com/</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">ftp://222.207.30.4/</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">http://www.int255.com:8080/bbs/</span></span>
<span style="font-size:medium;"><span style="font-family:'Courier New';">现在你的任务是从给定的URL中找出域名。</span></span>
题目输入
输入整数T,接下来包含T组测试用例,每个URL各占一行(测试数据不超过10组,每组数据不超过200个字符),请读到文件末尾。
题目输出
对于每组测试用例,你应该输出给定URL中的域名,每个输出各占一行。
输入/输出样例
输入格式
3 http://dict.bing.com.cn/#%E5%B0%8F%E6%95%B0%E7%82%B9 http://www.mariowiki.com/Mushroom https://mail.google.com/mail/?shva=1#inbox
输出格式
dict.bing.com.cn www.mariowiki.com mail.google.com
C语言解答
#include<stdio.h> #include<string.h> int main() { char x[10][205],y[10][205]; int n,m,i,j,k,l; scanf("%d",&n); getchar(); for(i=0;i<n;i++) gets(x[i]); for(i=0;i<n;i++) { for(j=0;;j++) { if(x[i][j]==':') { j+=3; break; } } m=0; while(x[i][j]!='/') { y[i][m]=x[i][j]; j++; m++; } y[i][m]='\0'; } for(i=0;i<n;i++) { printf("%s",y[i]); if(i!=n-1) printf("\n"); } }
C++解答
#include<stdio.h> #include<string.h> char st[100]; char str[100]; int main() { int a,i,m=0; bool x; scanf("%d",&a); while(a--) { m++; scanf("%s",&str); x=false; int len=strlen(str); int t=0; for(i=2;i<len;i++) { if(x==false&&str[i-2]==':'&&str[i-1]=='/'&&str[i]=='/') { x=true; continue; } if(x&&(str[i]=='/'||str[i]==':')) { break; } if(x) st[t++]=str[i]; } st[t]='\0'; printf("%s\n",st); } return 0; }