Test Message

d018: 字串讀取練習

內容

練習字串的分析與處理


輸入

一個字串,內部包含數組資料,每組資料有一個序號,及一個實數。

格式如下: 序號:實數

請注意,序號有可能跳號

1:12.5 2:12 3:13.1 4:13.0
1:1.2 3:2.3

輸出

請求出所有序號為奇數的實數的和減掉所有序號為偶數的實數,並印出結果。

0.6
3.5


解題思路

每筆測資以空白作為各資料的分割點,再以冒號作為各資料中序號及實數的分割點。

處理完字串後按題意對最終答案進行加或減即可。


完整程式碼

AC (2ms, 100KB)
#include <stdio.h>
#include <string.h>

double num, sum;
int idx;
char input[10000], * tok;

int main()
{
while (gets(input) != NULL)
{
sum = 0, tok = strtok(input, " ");
while (tok != NULL)
{
sscanf(tok, "%d:%lf", &idx, &num);
sum += idx & 1 ? num : -num;
tok = strtok(NULL, " ");
}
printf("%g\n", sum);
}
return 0;
}