[打基础]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。

部分代码大概长这样:

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'}}
    };
View Code

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

原文地址:https://www.cnblogs.com/yoshinow2001/p/13492121.html