基础知识一定一点记牢,机试都是闭卷!
字符数组
- IO:都是%s,唯一一个可以不加&的scanf。另外,scanf("%c", &ch); 可以读入换行和空格,如果为了节约Input时间或输入格式要求,可以用scanf(" %c", &ch); 在%c前面加上空格,这样就把缓冲区中的回车当成第一个字符,读取后丢掉。
- 比较大小用strcmp(s1, s2)<0说明s1<s2
- 判断长度:strlen(s);
- gets(s)可以读入空格,遇到换行终止(此时换行符也没了,getchar吃是换行符下面的第一个字符);但是scanf或cin后,后面的空格或换行依然存在!so有时候需要用getchar吃掉(例如用完scanf再用gets,可能只是把后面的换回读入)
- cin.getline(s,5,'\n'),多一个限制实际内容长度为4(还有一个'\0')的功能,注意这个是用来接收字符数组,而不是string
string部分
- IO:scanf string,要:首先str.resize(10)//是字符,不是字节 ; 然后scanf("%s" ,&str[0]); printf string,要:printf("%s", str.c_str());
- 比较大小直接a<b,和字符数组的strcmp一样
- 判断尺寸:s.length();这里也可以用strlen(s.c_str());这个是遇到'\0'就终止,有时候需要s.resize后用scanf,这样length返回的是size,而不是真正输入的长度
- getline(cin, s, '\n');默认遇到换行符终止,和gets一样吃了换行符。要string头文件。
- int 和 float/double可以直接用to_string(n) 函数转为string类型;而string转int也可以直接 n=stoi(str);