下午打了一場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,由大小寫英文本母組成。第二行包含乙個數字,表示大小寫敏感的...