A042:轉轉算2的冪次方
輸入一個整數 n (0≤n<31),輸出2^n。
input:10
output:1024
Notes:
1.計算2的冪次方
使用 Arithmetic shift算術位移的left shift'<<'int num=1;
num<<1: 數字1,左位移1位,表示1*2=2
num<<2: 數字1,左位移2位,表示1*2*2=4
Code:
#include <stdio.h> int main(void){ int input; scanf("%d",&input); printf("%d",1<<input); return 0; }
A043:十六進位檢視器
輸入一段連文字,印出該連文字的十六進位資料
input: talks
output:74 61 6C 6B 73
Notes:
1.getchar
getchar會讀取每個字元,包含空白、跳格、換行字元。scanf()只會讀取數字,並且會略過空白、跳格、換行字元。
本題若要使用scanf,擇要改寫成下列格式,才能抓到每個字元,若將%c改成%s,則只會抓到第一個字元:
while((scanf("%c",&input)!=EOF){ if(input!=' ') printf("%X ",input); }
2.十六進位顯示方式
使用"%x"或者"%X"皆可,差別在於結果顯示的字母是小寫或大寫,舉例如下:printf("%x ",input); //74 61 6c 6b 73 printf("%X ",input); //74 61 6C 6B 73
3.去除空白字元
因為是輸入的方式,採取逐字元抓取,所以空白字元也會被抓進來處理。但是題目的輸出不要顯示空白位元,所以要加入條件,遇到空白字元的時候不列印。
if(input!=' ')
Code:
#include <stdio.h> int main(void){ int input; while((input=getchar())!=EOF){ if(input!=' ') printf("%X ",input); } return 0; }
寫的不錯
回覆刪除