[打基础]OI/ACM基本功&一些小功能的实现&一些错误(持续更新)

基本功


  • 前导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。

部分代码大概长这样:

[打基础]OI/ACM基本功&一些小功能的实现&一些错误(持续更新)[打基础]OI/ACM基本功&一些小功能的实现&一些错误(持续更新)
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'}}
};

注意在定义数组的时候用这种写法,之后似乎不能这样给数组赋值

上一篇:IO/ACM中来自浮点数的陷阱(收集向)


下一篇:第七届ACM趣味程序设计竞赛第四场(正式赛) 题解