科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 [+-][1-9].
[0-9]+e[+-][0-9]+,即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。
現以科學計數法的格式給出實數 a,請編寫程式按普通數字表示法輸出 a,並保證所有有效位都被保留。
每個輸入包含 1 個測試用例,即乙個以科學計數法表示的實數 a。該數字的儲存長度不超過 9999 位元組,且其指數的絕對值不超過 9999。
對每個測試用例,在一行中按普通數字表示法輸出 a,並保證所有有效位都被保留,包括末尾的 0。
+1.23400e-03
0.00123400
-1.2e+10
-12000000000
printf("%c", *p ? *p : '0'); 注意*p是字元指標, 所以是'0', 不是0
scanf的正規表示式, 內是匹配的字元,^表示求反集,當遇到非集合內的字元時立即終止輸入
scanf("%[^]"),和scanf("%s")的區別是:前者在讀字串的時候在遇到^符號後面的字元時候停止(不會讀入那個終止符),而後者在遇到空白,換行時候終止
還要注意s陣列不要開的太小, 不然會有乙個測試點wa。
#include int main()p ++;
if(n >= 0) // 指數
if(*p)
}} else
while(*p)
p ++;
} }// printf("%s %d", s, n);
return 0;
}
關於scanf的正規表示式, 我參考了
#include int main();// scanf("%5s", buf); //%5s,只取個字元
// printf("%s\n", buf);
/*2. 正規表示式 %*[width] type
前面帶「*」號表示不儲存變數。跳過符合條件的字串
*/// char sztmp[10] = ;
// scanf("%*s%s", sztmp); //%*s表示第乙個匹配到的%s被過濾掉
// printf("%s\n", sztmp);
/* 3. %[ ]表示要讀入乙個字元集合,
如果「[」後面第乙個字元是「^」,則表示取反的意思,
即求「」內字符集的補集。「」內的字串可以是1或更多字元組成。
空字符集(%)是違反規定的,可導致不可預知的結果。
%[^] 也是違反規定的。
% [a-z] 讀取在a-z之間的字串
*/// char sztmp[10] = ;
// scanf("%[^ ]", sztmp); //%[^ ]表示取遇到空格為止的字串
// printf("%s\n", sztmp);
char sztmp[10] = ;
scanf("%*[^@]@%[^\.]", sztmp); //匹配從"@"到"."之間的字元
printf("%s\n", sztmp);
/* 解釋:「%*[^@]」表示濾掉「@」前的字串,
接下來的乙個「@」表示耗掉乙個「@」但不儲存到變數中,
大家可以將第二個「@」去掉試一試,輸出結果 為「@gmail」,
後面的%[^\.]匹配到「.」之前的字元,由於「.」是正規表示式的元字元,因此加了「\」來轉義。
*/ return 0;}/*
sample input(1, 2, 3):
hello, world!
output1:
hello
output2:
world!
output3:
hello,
sample input4:
output4:
gmail
*/
1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...
1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...
1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...