蓝桥杯训练系统--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;
}

十六进制先转换成十进制,再转换成八进制

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