基本功
- 前导0
如题,有时候需要把3输出成03这样子,可以调用 cout.width(x); ,x表示以几位,用 cout.fill(x); 来给出前导填充的内容,一般x以char的形式给出
例如可以试试下面的代码
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
cout.width(4);cout.fill('0');
cout<<4<<" "<<3<<endl; cout.width(4);cout.fill('0');
cout<<3<<endl; cout.width(4);cout.fill(0);
cout<<3<<endl; cout.width(4);cout.fill('x');
cout<<3<<endl; cout.width(4);cout.fill();
cout<<3<<endl; cout<<3<<endl; cout.width(4);cout.fill('0');
cout<<'s';
return 0;
}
- C语言的写法
printf("%0*d",p,n);
指定输出p位数字的n,不够的用前导0补上,如果n的位数大于p则按正常的n输出
- 字符串读入
洛谷P5015(NOIP2018T1),读入一篇“文章”,统计大小写字母&数字的字符数,空格和换行符不记
c=getchar();
while(c!=-1)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))n++;
c=getchar();
}
要注意的应该是字符串读入结束是-1而不是0…调试了半天才意识到
错题记录(?)
从xx算起n天之后
- 涉及到除法相关的特判一下0~
- 洛谷P1424,从周$x$算起,$n$天之后,应该是第$x+n-1$天!
大模拟&数组
洛谷P5730,模拟显示屏按照给定格式输出数字0~9。
部分代码大概长这样:
char a[12][10][10]={
{{'X','X','X'},{'X','.','X'},{'X','.','X'},{'X','.','X'},{'X','X','X'}},
{{'.','.','X'},{'.','.','X'},{'.','.','X'},{'.','.','X'},{'.','.','X'}},
{{'X','X','X'},{'.','.','X'},{'X','X','X'},{'X','.','.'},{'X','X','X'}},
{{'X','X','X'},{'.','.','X'},{'X','X','X'},{'.','.','X'},{'X','X','X'}},
{{'X','.','X'},{'X','.','X'},{'X','X','X'},{'.','.','X'},{'.','.','X'}},
{{'X','X','X'},{'X','.','.'},{'X','X','X'},{'.','.','X'},{'X','X','X'}},
{{'X','X','X'},{'X','.','.'},{'X','X','X'},{'X','.','X'},{'X','X','X'}},
{{'X','X','X'},{'.','.','X'},{'.','.','X'},{'.','.','X'},{'.','.','X'}},
{{'X','X','X'},{'X','.','X'},{'X','X','X'},{'X','.','X'},{'X','X','X'}},
{{'X','X','X'},{'X','.','X'},{'X','X','X'},{'.','.','X'},{'X','X','X'}}
};
注意在定义数组的时候用这种写法,之后似乎不能这样给数组赋值