1>输入e2 e4
while(scanf("%c%d %c%d%c",&x1,&y1,&x2,&y2,&xn)!=EOF)
while(scanf("%c %d %c %d",&Y1,&X1,&Y2,&X2) != EOF)
while(scanf("%c%c%c%c%c%*c,&x1,&y1,&space,&x2,&y2)!=EOF)
2>输入
3 5
*@*@*
**@**
*@*@*
while(scanf("%d%d",&m,&n),m+n)
{
getchar();//每次输入m,n后吃掉换行符
for(i=0;i<m;i++)
gets(map[i]);
//scanf("%s",map[i]);
}
3>错误`sort' undeclared...
一开始一直郁闷,加了头文件#include<algorithm>还是没用,结果是没写using namespace std;
4>Runtime Error
可能是由于数组开的太小的缘故
5>memset在初始化int类型数据时,只能初始化-1和0时才能得到原值
数组置零:如int num[10];
memset(num,0,sizeof(num));
或 int num[10]={0};
6>#include<algorithm> swap(a,b) 交换a,b的次序一般用于数组swap(a[1],a[2])
1>#include <cmath> pow(底数,幂次)其中幂次可为小数表示开方1.0/ a abs是求int类型的绝对值
fabs是求float类型的绝对值
labs是求long类型的绝对值
2>#include<iomanip> setprecsion(n)是格式控制符,precision(n)是流对象的成员函数,用法分别如下:
如要输出圆周率的pi=3.141592四位小数,
cout<<setprecision(4)<<pi;
cout.precision(4);cout<<pi;
3>#include <algorithm> sort: int a[20]={2,4,1,23,5,76,0,43,24,65}; sort(a,a+20) 数组取模sizeof(a);
4>C/C++的特性之一可以用非零整型数表达布尔型的true。如:while(1)
5>tolower:str1和str2都是字符指针,所以*str1和*str2都是字符
tolower是将字符变为小写字母的函数,也就是让str1和str2指向的字符转为小写
具体两个字符相减,就是其ASCII码值相减,比如'a' = 97, b='98'
'a'-'b' = -1
! (ret = tolower(*str1) - tolower(*str2)) 表示str1和str2指向的字符是否相同(不区分大小写),
相同则为真,否则ret !=0,即不相同
! (ret = tolower(*str1) - tolower(*str2)) && *str2 是判断前述是否相同以及str2所指向字符所在的字符串是否结束C++用substr()函数消除前后空格 C++用substr()函数消除前后空格
6>C++用substr()函数消除前后空格
find_first_of: 查找控制字符序列中第一个出现在操作字符序列中的字符的位置,并返回该位置;
find_first_not_of:查找控制字符序列中第一个不出现在操作字符序列中的字符的位置,并返回该位置;
find_last_of: 查找控制字符序列中最后一个出现在操作序列中的字符的位置,并返回该位置;
find_last_not_of: 查找控制字符序列中最后一个不出现在操作字符序列中的字符位置,并返回该位置;
7>data()函数返回指向自己的第一个字符的指针.
8>return 0是正常退出,return 非零 是异常退出,这是返回给控制台的,不在你编的程序的控制范围内,是给操作系统识别的,对你的程序无影响。
一般程序中,对于 int 函数都会在末尾 return 0;但有的程序就有 return -1 和 return 1;
根据所定义函数的需求返回不同的值。
一般0和-1或者0和1使用
0和-1使用时:
0一般表示成功执行
-1一般表示不成功
0和1使用时:
1真
0假
9>数组定义int *a=new int[n]或int a[n]
10>#include <string.h> void *memset(void *s,int c,size_t n)
总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
11>EOF表示一个流读结束了、对于一个文件来说、读尽最后一个字节算作结束、对于标准输入(也就是一般的键盘输入)
需要人为的产生一个EOF告诉系统输入结束了、EOF: end of file是一个常量。一般定义为-1
12>#include <cstdio> pair<int,int>a[n] a[i].first a[i].second ///pair<int,int>tmp tmp.first tmp.second
13>while(cin>>n>>i,n||i)表示当输入的i或n不大于零时退出
while(cin>>n,n){ .......}return 0;当输入n不大于零时直接退出整个程序
14>unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。
无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。
同样,在32位系统中一个char类型一般为8个bit,所以能存储的数据范围为-128~127,而unsigned char则是0~255,字符型所存储的数据是用来表示字符的,例如ASCⅡ或Unicode。
关于char的符号(选自thinking in C++ 2nd vol1):
signed is the default and is only necessary with char; char may or may not default to signed. By specifying signed char, you force the sign bit to be used.
译:有符号类型是默认(指的是对于其他整型来说)的类型并且仅对于char来说才是必须的。
char有可能是signed也有可能是unsigned(我想这可能取决于编译器或具体实现)。
但通过显式地指定一个char为signed,你就迫使其成为有符号的字符型(水平太烂译的不好请见谅)。
15>char ch[2][3]={"123","45"};
如下:
char[2][3]={'1','2','3',
'4','5','\0'
}
其中的'\0'为转义字符,ASCII值为0
代表一串字符串的结束
if(ch[i][j]>'\0')
是说如果字符的ASCII值大于0
'\0'在c语言的字符串中表示字符串的结尾,if(ch[i][j]>'\0')判断该字符是否是字符串的结尾符
15>printf("%d",n>>1);表示n/2取整
16>C++中^
按位亦或..
如1^1=0,0^0=0,1^0=1,0^1=1;
^=
就好比是+=吧
比如 a+=b
a = a+b
a^=b
a = a^b