在写的时候关于有一些题目输出时要求末尾不加空格,我发现可以通过bool类型去解决。
例如hdu2099题:
Problem Description
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
Input
输入数据有若干组,每组数据包含二个整数a,b(0< a<10000, 10< b<100),若遇到0 0则处理结束。
Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。
Sample Input
200 40
1992 95
0 0
Sample Output
00 40 80
15
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
if (m==0&&n==0)
break;
else
{
int t=0;//开始使t=0以使第一个输出不加空格
for(int i=0;i<100;i++)
{
if((m*100+i)%n==0)
{
if(t)//当t!=0时bool类型即为真,输出空格
printf(" ");
printf("%02d",i);//格式修饰符使用方法在下面
t++;//使得各个输出值之间均有空格
}
}
printf("\n");
}
}
}
格式修饰符的使用方法:
%d 是输出十进制整数,d是decimal的缩写。
%2d要求输出数据为两位,大于两位则原样输出,例如2,123,遇到2会补一个空格(输出2位),看到123会输出123。
%m.ns:输出字符串,m指定输出宽度,n表示字符串的前n个字符输出到屏幕,如果m>n则需要补空格,例如%5.3s表示输出宽度是5,而字符实际只输出3个则需要补空格2个。
%m.nf:m表示找整个浮点数输出宽度,n表示小数输出的宽度。例如%5.2f 输出一个58.6238,那么实际输出的是58.62,注意了,m是整个数据要输时候的宽度。
%02d:默认情况下,数据数据宽度不够2位是用空格填补的,但是因为2d前面有0,表示,数据宽度不足时用0填补,例如%03d输出 12,那么实际输出到屏幕的是012。
备注:
本文printf的格式修饰符的使用方法部分引用的其它博客的内容(原文链接为:https://blog.youkuaiyun.com/weixin_37770552/article/details/77155564),在此进行说明并表示感谢。
如有问题,欢迎在评论区提问