BASIC - 3 字母練習
利用字母可以組成一些美麗的圖形,下面給出了一個例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形
輸入格式
輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。
輸出格式
輸出n行,每個m個字符,爲你的圖形。
樣例輸入
5 7
樣例輸出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
數據規模與約定(1 <= n, m <= 26)
AC代碼
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << char('A' + abs(i - j));
cout << endl;
}
return 0;
}
BASIC - 10 十進制轉爲十六進制
給出一個非負整數,將它表示成十六進制的形式
輸入格式
輸入包含一個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
輸出這個整數的16進製表示
樣例輸入
30
樣例輸出
1E
AC代碼
#include <iostream>
using namespace std;
int main()
{
int a, i = 0;
cin >> a;
char b[100];
if (a == 0)
{
cout << 0;
return 0;
}
while (a != 0)
{
if (a % 16 >= 10)
b[i++] = a % 16 + 'A' -10;
else
b[i++] = a % 16 + '0';
a = a / 16;
}
for (int k = i - 1; k >= 0; k--)
cout << b[k];
return 0;
}
套路和這篇博客( 簡單編程實現十進制轉換任意進制 )一樣
BASIC - 10 十六進制轉爲十進制
從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換爲正的十進制數後輸出
樣例輸入
FFFF
樣例輸出
65535
AC代碼
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
int len = s.length();
long long sum = 0;
for (int i = 0; i < len; i++)
{
if (s[i] >= 'A' && s[i] <= 'F')
sum = sum * 16 + s[i] - 'A' + 10; //注意加 10
else
sum = sum * 16 + s[i] - '0';
}
cout << sum;
return 0;
}
BASIC - 12 十六進制轉爲八進制
輸入十六進制正整數,輸出它對應的八進制數
輸入格式
由0 ~ 9、大寫字母A ~ F組成的字符串,表示要轉換的十六進制正整數,十六進制數長度不超過100000
輸出格式
輸入對應的八進制正整數
【注意】
輸入的十六進制數不會有前導0,比如012A
輸出的八進制數也不能有前導0
樣例輸入
2
39
123ABC
樣例輸出
71
4435274
AC代碼
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
int len = s.length();
long long sum = 0;
for (int i = 0; i < len; i++)
{
if (s[i] >= 'A' && s[i] <= 'F')
sum = sum * 16 + s[i] - 'A' + 10;
else
sum = sum * 16 + s[i] - '0';
}
if (sum == 0)
{
cout << 0;
return 0;
}
long long s2[100];
int i = 0;
while (sum != 0)
{
s2[i++] = sum % 8;
sum = sum / 8;
}
for (int j = i - 1; j >= 0; j--)
{
cout << s2[j];
}
return 0;
}
十六進制先轉換成十進制,再轉換成八進制