同学们好!
今天的知识很少,大部分是做题。
来复习一下const指针的内容:
const int &r=x; 正确 普通引用
const int &r=100; 正确 相当于const int r=x;
讲题啦:
切记:当自己不知道aacll码的值。
第一题:输出一下n行的三角形。
CBABC
BAB
A
答案:
#include <cstddef>
#include <iostream>
int main() {
int N;
std::cin >> N;
char max;
int space , i ;
for ( space = 0, i = 1,max='A'+N-1; i <= N; space++, i++,max--) {
for (int i = 1; i <= space; i++) {
std::cout << ' ';
}
for (char c = max; c > 'A'; c--) {
std::cout << c;
}
std::cout<<'A';
for(char c='B';c<=max;c++){
std::cout<<c;
}
std::cout<<std::endl;
}
return 0;
}
思路:首先在for输出由变量space控制的空格,然后输出前一半(除中间以外)的字母(递减),然后输出A,然后输出后一半的字母(递增)。
第二题:输出一下n行的三角形。
A
ABA
ABCBA
答案
#include <cstdlib>
#include <iostream>
int N;
int main() {
std::cin >> N;
int i,space;
char max;
for (i = 1, max = 'A',space=N-1; i <= N; i++, max++,space--) {
for(int i=1;i<=space;i++){
std::cout<<' ';
}
for (char c = 'A'; c < max; c++) {
std::cout << c;
}
std::cout << max;
for (char c = max - 1; c >= 'A'; c--) {
std::cout << c;
}
std::cout << std::endl;
}
return 0;
}
思路:首先在for输出由变量space控制的空格,然后输出前一半(除中间以外)的字母(递增),然后输出中间的字母,然后输出后一半的字母(递减)。上一题不同的是,用来输出的c跟上一题相反了。
第三题:输出以下n行的“N”。
* *
** *
* **
* *
答案:
#include <cstddef>
#include <cstdio>
#include <iostream>
int main() {
int N;
std::cin>>N;
int space1,space2,i;
std::cout<<'*';
for(int i=1;i<=N-2;i++){
std::cout<<' ';
}
std::cout<<'*'<<std::endl;
for(i=2,space1=0,space2=N-3;i<=N-1;space1++,space2--,i++){
std::cout<<'*';
for(int i=1;i<=space1;i++){
std::cout<<' ';
}
std::cout<<'*';
for(int i=1;i<=space2;i++){
std::cout<<' ';
}
std::cout<<'*'<<std::endl;
}
std::cout<<'*';
for(int i=1;i<=N-2;i++){
std::cout<<' ';
}
std::cout<<'*'<<std::endl;
return 0;
}
思路:先输出第一行,再用for循环输出中间2-(N-1)行,最后输出最后一行。