1. 程式人生 > >刪掉輸出一組數的最後一個空格

刪掉輸出一組數的最後一個空格

在牛客網上做水仙花數的題目,測試用例通過為90%,顯示“輸出空格或者換行不對”,測試通不過。後來才發現是在輸出時printf("%d ")輸出格式為370(空格)371 (空格),而測試用例給的結果是370(空格)371.這樣,就多了一個空格出來。

#include<stdio.h>
int main()
{
    int a,b,c,m,n;
    while(scanf("%d %d",&m,&n))
    {
        int flag=0;
        if(m<n)
        {
            for(int i=m;i<=n;i++)
            {
                a=i%10;
                b=i/10%10;
                c=i/100%10;
                if(i==a*a*a+b*b*b+c*c*c)
                {
                    printf("%d ",i);
                    flag=1;
                }
            }
        }
           if(flag==0)
            {
                printf("no");
            }
        printf("\n");
        return 0;
    }
}

printf("%d",i):輸出的數字形式為370371

printf("%d "):輸出的數字形式為370_371_ 

printf("% d"):輸出的數字形式為_370_371

所以,我們在輸出的時候分兩步:

第一:如果當前的這個數是水仙花數並且flag==0,則用printf("%d",i)將第一個水仙花數輸出,然後flag==1;

第二:如果當前的這個數是水仙花數並且第一個水仙花數已經被輸出,我們用printf(" %d",i)輸出[m,n]區間內餘下的所有水仙花數。

if(i==a*a*a+b*b*b+c*c*c)
 {
    if(flag==0)
    {
       printf("%d",i);
    }
    else
    {
       printf(" %d",i);
    }
    flag=1;
 }

if(flag!=1)
{
  printf("no");
}