16進位制的簡單運算(迴圈)
題目:
問題 E: 16進位制的簡單運算(迴圈)
時間限制: 1 Sec 記憶體限制: 128 MB
提交: 579 解決: 354
[提交][狀態][討論版]
題目描述
現在給你一個16進位制的加減法的表示式,要求用8進位制輸出表示式的結果。
輸入
第一行輸入一個正整數T(0<T<100000)
接下來有T行,每行輸入兩個數和一個加號或者一個減號,且表示式合法並且所有運算的數都小於31位
輸出
每個表示式輸出佔一行,輸出表示式8進位制的結果。
樣例輸入
3
29+4823
18be+6784
4ae1-3d6c
樣例輸出
44114
100102
6565
程式碼塊:
#include <stdio.h>
int main(void)
{
int i, t;
int a, b;
char c;
scanf("%d", &t);
for(i=0; i<t; i++)
{
scanf("%x%c%x", &a, &c, &b);
if('+'==c)
printf("%o\n", a+b);
else
printf("%o\n", a-b);
}
return 0;
}
題解:本題中輸入的是兩個十六進位制數相加或相減的字串,使用scanf輸入時明顯會遇到一些問題,首先對於scanf和printf,其整型十六進位制的格式控制為%x或%X,整型八進位制格式控制%o,整形十進位制為%d,無符號整型十進位制為%u,其次scanf在讀輸入的字串時,應該人為用各種格式控制將其中不同含義和型別的字元區分開,如這裡輸入的本質是一個十六進位制整數加一個運算字元加另一個十六進位制整數,在這裡中間的運算字元可能為加可能為減因此要用%c控制,而如果這裡只有加號的情況就無需%c了,直接用+就行。格式控制的意義即在於處理“字串中的某個部位可能出現多種同一類的字元,而不是確定的出現某個字元”的情況。
相關文章
- ACM 16進位制的簡單運算ACM
- 二進位制、位運算、位移運算
- java二進位制運算十進位制(精確運算)Java
- 二進位制與二進位制運算
- 簡單電路實踐——電路與二進位制運算
- 位運算簡單操作
- 有趣的二進位制2—高效位運算
- 口算 16 進位制轉換 10 進位制,但只適合兩位的 16 進位制
- 位運算(一):二進位制中1的個數
- JavaScript 進位制轉換(2進位制、8進位制、10進位制、16進位制之間的轉換)JavaScript
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 10進位制和16進位制互轉的例子
- C# 2進位制、8進位制、10進位制、16進位制...各種進位制間的輕鬆轉換C#
- 簡單二進位制編碼(SBE)
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制運算加減乘除+快速冪
- Java中8進位制和16進位制的表示方法Java
- 2進位制_8進位制_16進位制之間快速轉換的技巧.txt
- 簡單實現Android中的訊息迴圈機制Android
- shell 中轉換16進位制10進位制
- 進位制換算
- 三分鐘熟悉進位制轉換與位運算
- 常用單位進位制
- 位運算--求一個 數二進位制中1的個數
- 位運算進階
- 遞迴-進位制轉換器(十六進位制以內)遞迴
- 使用位運算進行加法運算
- 一個簡單的二進位制加法器
- 一個簡單的十六進位制解碼器
- N位二進位制數加減法運算圖靈機圖靈
- 關於Java中進位制轉換以及位運算問題Java
- 負數補碼(16進位制轉10進位制的負數)
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 迴圈雙連結串列的簡單操作
- printf()將10進位制數安照輸出16進位制,8進位制輸出
- C printf按8進位制、10進位制、16進位制輸出以及高位補0
- Java 16進位制字串 取反Java字串
- RGB顏色與16進位制顏色的換算方法