蓝桥等考C++组别十八级
第一部分:选择题
1、
C++ L18 (
15
分)
使用格式化输出函数printf(
)
需要包含以下哪个头文件?( )
A
.
i
ostream
B.
c
stdlib
C.
c
stdio
D.
io
manip
正确答案:C
2
、C++ L18 (
15
分)
假定定义了变量:
int n;
以下输入语句正确的是( )。
A
.
scanf("%d", n);
B. scanf("%d", &n);
C
.
scanf("%d", *n);
D. scanf("%d", %n);
正确答案:B
3
、C++ L18 (20分)
假定包含了必要的头文件,并定义了字符串变量:
char s[20] = "I love C++";
以下输出字符串s的代码中错误的是( )。
A
. puts(s);
B. printf("%s", s);
C. std::cout << s;
D.
putchar(s);
正确答案:
D
第二部分:编程题
4、
C++ L18
八进制金字塔
(
5
0分)
题目名称:
八进制金字塔
题目描述:
输入一个八进制整数a和一个十进制整数h,根据规则,输出一个八进制金字塔。
1
.
第一个数为a;
2
.
从第二行起,金字塔的每一行都比上一行多一个数;
3
.
按从左往右,从上往下的顺序排列,第i行的每一个数,都比上一个数大i
;
4
.
金字塔的最后1行的八进制数的左边没有空格,倒数第2行左边有3个空格,倒数第3行左边有6个空格,
……
以此类推。
例如
:当a
= 4
,h
= 5
时,八进制金字塔为:
4
6 10
13 16 21
25 31 35 41
46 53 60 65 72
第1行1个数是八进制数4;
第2行第1个数是八进制数6,比八进制数4大2;第2个数是八进制数1
0
,比八进制数6大2;
第3行第1个数是八进制数
13
,比八进制数1
0
大
3
,
……
以此类推。
输入:
仅1行,包含一个八进制整数a和一个十进制整数h,两数之间用一个空格隔开。
两个数都不大于十进制数
20
。
输出:
h行,按样例的格式进行输出;每个八进制数的显示占用6个字符宽度,且向左对齐,两个相邻的八进制数之间没有额外的空格。
注意:
1
.
金字塔图案的第一行前面不能有多余的空行;
2
.
金字塔图案的最左侧从第一列开始输出,八进制数严格按题目要求的格式显示,数之间的空格不能多也不能少。
输入样例
1
:
4 5
输出样例
1
:
4
6 10
13 16 21
25 31 35 41
46 53 60 65 72
输入样例
2
:
20 6
输出样例
2
:
20
22 24
27 32 35
41 45 51 55
62 67 74 101 106
114 122 130 136 144 152
参考程序:
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 100;
int p[N + 1][N + 1];
int main()
{
int a, h;
scanf("%o%d", &a, &h);
p[1][1] = a;
for (int i = 2; i <= h; i++)
{
p[i][1] = p[i - 1][i - 1] + i;
for (int j = 2; j <= i; j++)
{
p[i][j] = p[i][j - 1] + i;
}
}
for (int i = 1; i <= h; i++)
{
for (int j = 1; j <= h - i; j++)
{
printf(" ");// 3
个空格
}
for (int j = 1; j <= i; j++)
{
printf("%-6o", p[i][j]);
}
printf("\n");
}
return 0;
}
测试数据:
1.in
4 5
1.out
4
6 10
13 16 21
25 31 35 41
46 53 60 65 72
2.in
20 6
2.out
20
22 24
27 32 35
41 45 51 55
62 67 74 101 106
114 122 130 136 144 152
余下见附件目录下
testcase
.txt
蓝桥杯青少组C++组别18级编程练习真题(第1套,共8套)