说明:本文总结的常用技巧不包含编译器使用的技巧。
1.scanf作为循环条件
由于scanf无法读入时返回EOF(-1),而-1按位取反即是0,因此有如下两种写法
写法一:
int main()
{
int n;
while (scanf("%d", &n)!=EOF)
{
//主程序
}
}
写法二:
int main()
{
int n;
while (~scanf("%d", &n))
{
//主程序
}
}
2.输出一个换行符的若干方法
int main()
{
printf("\n");
cout << '\n';
cout << endl;
puts("");
putchar(10);
}
3.防止多输出空格的精简写法
int main()
{
int n;
int d[100];
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
scanf("%d",&d[i]);
for(int i=0;i<n;i++)
printf("%d%c",d[i],i==n-1?'\n':' ');//写法1
for(int i=0;i<n;i++)
printf("%d%c",d[i]," \n"[i==n-1]);//写法2,这里“ \n”实际是一个字符串的首地址,该写法类似于s[i]
}
}