關于作業中輸出要求空格的控制
在近幾次超星作業中,大部分題目輸出的資料都不止一個,但是大部分要求輸出結果中每個資料間用一個西文空格間隔最后一個數后無多余字符,因此就需要我們控制輸出的空格,以下是我總結的兩個方法,供大家參考,
方法一:直接判斷控制
適用范圍:輸出有明確的開始和結束位置
例如:
作業04
4.洗掉重復元素
題目描述:撰寫函式,不使用其他輔助陣列,把整型陣列中重復元素刪得只剩一個;所有未被洗掉元素都保留最先順序移動到陣列前面,
輸入:第一行輸入陣列長度n(≤100),第二行依次從鍵盤隨機輸入n個整數作為陣列元素值,
輸出:已洗掉重復元素的陣列,各元素間以一個西文空格間隔,最后一個元素后無字符,
這里就不放全部的代碼了大家自行查看題目代碼
https://blog.csdn.net/qq_49509179/article/details/109754996
這里我們就知道最后輸出的資料的個數sum,因此我們就可以通過在資料輸出之后加上判斷是否是最后一個輸出的資料,如果是,就不輸出空格,
for ( i = 0; i < sum; i++){
printf("%d", a[i]);
if (i != sum - 1)
/*我們已經知道一共要輸出sum個資料,而最后一個資料在陣列中是a[sum-1]
因此可以判斷輸出控制i是否等于sum-1,如果是就不用再輸出空格了*/
printf(" ");
}
如果我們知道資料開始位置同理也可以用這種方法
for ( i = 0; i < sum; i++){
if (i != 0)
printf(" ");
printf("%d", a[i]);
}
方法二:定義bool變數控制
當程式中存在通過判斷來控制輸出時,就無法使用方法一了,因為你不知道要從哪個資料開始輸出這時可以用方法二
bool flag=true;
for(i=0;i<n;i++){
if(true){
if(flag) falg=false;
else printf(" ");
printf("%d",a[i])
}
}
在上面輸出中,資料的輸出需要if中的條件成立,而我們并不知道從哪個資料開始條件成立
因此先定義了bool 變數flag并賦值為true,在輸出資料前進行判斷,如果flag是真就說明這是第一個要輸出的資料,前面不用輸出空格,將flag賦值為false,在進行以后資料的輸出時,都會在資料前輸出空格,從而保證格式的正確,
在我的作業中其他的方法基本都是這兩種方法衍生出來的,就不一一介紹了,
如果有更好的方法歡迎大家私信或者在評論區留言,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225443.html
標籤:其他
