審題
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。輸入格式:
輸入在 2 行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過 80 個字元的串,由字母 a-z(包括大、小寫)、數字 0-9、以及下劃線_
(代表空格)組成。題目保證 2 個字串均非空。
輸出格式:
按照發現順序,在一行中輸出壞掉的鍵。其中英文本母只輸出大寫,每個壞鍵只輸出一次。題目保證至少有 1 個壞鍵。
輸入樣例:
7_this_is_a_test
_hs_s_a_es
輸出樣例:7ti
思路
首先,最簡單的一步就是判斷正負,如果為負直接輸出。可以簡單的寫下以下**:
int len = a.length();
if(a[0] == '-')
接下來,要找到e的位置,因為它最特殊。可以用pos來存放它:
int pos = 0;
while(a[pos] != 'e')
然後用exp存放指數,這裡有乙個特殊情況,就是exp == 0的情況。這種情況下是可以直接輸出的。
int exp = 0;
for(int i = pos + 2;i < len;i++)
if(exp == 0)
}
現在,最重要的一點來了。分正負進行操作,一段一段來,先判斷小數點,輸出;如果不存在小數點,就繼續進行對它的判斷,找到小數點的位置,最後輸出即可。
if(a[pos + 1] == '-')
printf("%c",a[1]);
for(int i = 3;i < pos;i++)
}else
printf("%c",a[i]);
if(i == exp + 2 && pos - 3 != exp)
} for(int i = 0;i < exp - (pos - 3);i++)
}
解答
經過分析,完整**如下:
#include#include#include#include#include#includeusing namespace std;
int main()
//找到e的位置
int pos = 0;
while(a[pos] != 'e')
//存放指數
int exp = 0;
for(int i = pos + 2;i < len;i++)
if(exp == 0) }
//分正負進行操作
if(a[pos + 1] == '-')
printf("%c",a[1]);
for(int i = 3;i < pos;i++)
}else
printf("%c",a[i]);
if(i == exp + 2 && pos - 3 != exp)
} for(int i = 0;i < exp - (pos - 3);i++)
} return 0;
}
PAT B1024 科學計數法
1024 科學計數法 20 分 科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數 a,請編寫程式按普通數字表...
PAT B1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數 a,請編寫程式按普通數字表示法輸出 a,並保證所有有效位都...
PAT B 1024 科學計數法 (20 分)
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數 a,請編寫程式按普通數字表示法輸出 a,並保證所有有效位都...