ZCMU 4944 字串處理

2021-10-21 08:38:07 字數 1896 閱讀 5108

下午打了一場icpc的區域賽,感覺字串的練習還是不夠,晚上找了到細節字串題目來練練手,特此記錄

zcmu-4944

4944: 字串處理

time limit: 1 sec memory limit: 32 mb

submit: 153 solved: 65

[submit][status][web board]

description

讀入兩個字串,字串除了數字還可能包括 『—』、『e』、『e』、』.』,相加之後輸出結果,如果是浮點型,要求用科學計數法表示(最多包含10個有效數字)。

input

輸入包含多組測試資料。

每組輸入佔兩行,每行乙個字串,測試資料保證字串的構成嚴格按照題目中的描述。

output

輸出兩個數字相加的結果,每組輸出佔一行。

sample input

34.56

2.45e2

sample output

2.7956e2
這道題目涉及到一些字串的細微操作,首先我們先把讀入的字串進行初始化,把字串拆解成以下幾個部分:小數點前,小數點後,e以及e之後這四個部分,然後分別進行累加計算

這裡由於涉及到e後數字和小數點後的抵消關係,我們引入a,來儲存預處理過程中能夠抵消之後留下的10的冪次

預處理的**如下:

int flag,c;

long

long

solve

(char

*str,

int*a)

else}if

(flag) s=

-s;return s;

//返回e前邊的數值

}

#include

using

namespace std;

int flag,c;

long

long

solve

(char str,

int*a)

else

if(str[i]

=='-'

)flag =1;

else}if

(flag)s =

-s;return s;

//返回e前邊的數值

}int

main()

else

if(a1>a2)

a=a1; s=s1+s2;if(

!s)//特殊判斷和為0直接輸出0並跳出迴圈

while

(a<

0&&s%

10==0)

if(a>=0)

//非浮點型

flag=0;

//flag記錄求和結果的正負

if(s<0)

ans=

1;w=0;

//ans就是浮點數整數部分,w表示小數點移動的位數

while

(ans<=s)

if(ans>1)

//負數輸出'-'

if(flag)

printf

("-");

//輸出小數點前邊的數值

printf

("%lld"

,s/ans)

;//輸出小數點後邊的數值

if(ans>1)

printf

(".%lld"

,s%ans)

;//輸出e後邊的數值

printf

("e%d\n"

,a+w);}

return0;

}

這道題有些點挺細的,然後有些地方處理的不好就很麻煩,總之,可以作為乙個處理字串的方法吧,學習一下

zcmu 1839 字串對比

給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing 和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小寫 比如 beijing 和 beijing 3 兩個字串長度相等,相應位置上...

8 8字串處理

字串處理 string 無子類 hello 構造字串物件 public int length 獲取字串的長度 system.out.println 輸入姓名 scanner sc new scanner system.in string str sc.nextline string str 李芳 s...

2014 09 3 字串匹配(模擬,字串處理)

給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一行包含乙個字串 s,由大小寫英文本母組成。第二行包含乙個數字,表示大小寫敏感的...