刪掉輸出一組數的最後一個空格
阿新 • • 發佈:2018-12-19
在牛客網上做水仙花數的題目,測試用例通過為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"); }