藍橋杯訓練系統--BASIC級別題目

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;
}

十六進制先轉換成十進制,再轉換成八進制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章