PATB1024思路與解答

2021-10-21 23:44:02 字數 1695 閱讀 8666

審題

舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及實際被輸入的文字,請你列出肯定壞掉的那些鍵。

輸入格式:

輸入在 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,並保證所有有效位都...