这或许是用C++写的第一个提交的程序了,虽然说是第一题,不过对于C++不熟悉的我也只好到处寻找资料。
整理一下:
①C++的文件读写操作
类似PASCAL中的assign(input,'XXX.in');和assign(output,'XXX.out');
在C++中可以用多种方法,目前我只知道两种。
Ⅰ用freopen("XXX.in","r",stdin);和freopen("XXX.out","w",stdout);
freopen("XXX.in","r",stdin)的作用就是把stdin重定向到XXX.in文件中,这样在用cin或是用scanf输入时便不会从标准输入流提取数据。而是从XXX.in文件中获取输入。同理,freopen("XXX.out","w",stdout)的作用就是把stdout重定向到XXX.out文件中,这样在用cout输出时便会从输出到XXX.out文件而不是标准输出流。
与PASCAL不同的是C++中字符与字符串都用双引号而PASCAL用单引号。
Ⅱ用fstream来代替iostream,然后用ifstream fin("XXX.in")和ofstream fout("XXX.out")来定义文件,再用fin和fout来代替cin和cout即可
②C++中数组是按大小开的,int a[x];表示开一个a[0]..a[x-1]的数组,注意是从0而不是1开始,我就犯了这样一个错误导致程序死循环。
③By the way如果要用变量作文件名以及其它被调用的字符串可以把变量存为字符串s,然后用s.c_str()就可以被识别。
1/**//*
2 ID:shuaicp1
3 PROG:ride
4 LANG:C++
5*/
6#include <iostream>
7using namespace std;
8
9int main()
10{
11 string s;
12 int num[2];
13 freopen("ride.in","r",stdin);
14 freopen("ride.out","w",stdout);
15 for(int i=0;i<=1;i++)
16 {
17 num[i]=1;
18 cin>>s;
19 for(int j=0;j<s.size();j++)
20 num[i]=num[i]*(s[j]-'A'+1)%47;
21 }
22 if (num[0]==num[1])
23 cout<<"GO"<<endl;
24 else
25 cout<<"STAY"<<endl;
26 return 0;
27}
28
在为了应对高考而放弃编程七个月之后,我又将重新拾起我OI路上的遗憾——USACO,这将会是我编程之路的又一起点,或许这个博客能够见证我思维的增长而不仅仅是编程能力的提高。也许,如挚友陈洁操所言,USACO,这个拥有着递进的层次结构,由易到难,讲授知识的私人教练,以它那练习编程结合,形成鲜明的知识结构的特点,将会成为我,以及我们,在C++之路上最好的路标。
但愿当我们历经险阻走完这段USACO征程的时候,能够感受到对C++的认识和运用的质的飞跃。