字符串
若先读入了数字(如测试组数),应紧getchar()来读取换行符以避免出现无法理解的结果
#include <cstdio>
#include <iostream>
char str[100];
scanf("%s", str);//读到非空白字符后,若再次遇到空白字符,结束字符串的输入;
//但要注意,终止读入时遇到的空格或回车还留在缓冲区
gets(str);//有bug,没有指明读取的最大字符数;读取换行符后终止,并将换行符换为'\0';
fgets(str, 10, stdin);//读入9个字符,str[9]为'\0';
//能读取换行符,但不会自动替换为'\0';
//若实际输入小于等于10(包括回车符),则应str[strlen(str)-1] = '\0'
输入框架
未明确测试数
while(scanf("...", ...) == ...)
明确测试数
while(T--)
必须确保取整参数是double型相除而不是int型
四舍五入保留两位小数输出n:printf(“%.2f\n”, n);
直接截取保留两位小数输出n:printf(“%.2f\n”, n > 0 ? n - 0.005 : n + 0.005);
常用的不忽略空格的4种字符串读入方式
算法2
#include <cstring>
using namespace std;
int main()
{
string a;
getline(cin,a);
cout<<a.size()<<endl;
return 0;
}
算法3
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.get(a,105);//需要注意cin.get()不会把换行符取出删除,影响下一次读入!
cout<<strlen(a)<<endl;
return 0;
}
算法4
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.getline(a,105);//需要注意cin.getline()会把换行符取出删除,不影响下一次读入!
cout<<strlen(a)<<endl;
return 0;
}
前排资瓷!
Orz