初学c++面向对象程序设计,专业课听不懂,老师布置的上机试题都不会写,希望大家能给我指点迷津。
在CSDN上的很多博客上搜索到了类似的程序,但是输出的是实心的数字菱形
实心数字菱形的代码如下:
#include <iostream>
using namespace std;
int main() {
int i,j,n;
cout<<"输入数字n:";
cin>>n;
for(i=1;i<=n;i++){
for(j=1;j<=n+1-i;j++){
cout<<" ";//这里是两个空格;
}
for(j=1;j<=2*i-1;j++){
cout<<" "<<i;
}
cout<<endl;
}
for(i=n-1;i>=1;i--){
for(j=1;j<=n+1-i;j++){
cout<<" ";//两个空格;
}
for(j=1;j<=2*i-1;j++){
cout<<" "<<i;
}
cout<<endl;
}
return 0;
}
我百般修改还是未能得到空心效果,希望看到的朋友能指点,谢谢!
11.4收到网友评论答案:
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n;
cout << "input a numer n: ";
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = n - i - 1; j >= 0; j--) {
cout << " ";
}
cout << i;
for (int j = 4 * (i - 1) - 2; j >= 0; j--) {
cout << " ";
}
if (i == 1) {
cout << endl;
} else {
cout << i << endl;
}
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < i + 1; j++) {
cout << " ";
}
cout << n - i;
for (int j = 4 * (n - i - 1) - 2; j >= 0; j--) {
cout << " ";
}
if (i == n - 1) {
cout << endl;
} else {
cout << n - i << endl;
}
}
system("pause");
return 0;
}
同学给出的答案:
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "请输入整数n:" << endl;
cin >> n;
for (int i = 1; i <= n; i++)
{
for (int a = 1; a <= n - i; a++)
{
cout << " ";
}
if (i == 1)
cout << i;
else
{
cout << i;
for (int b = 1; b < i + i - 2; b++)
{
cout << " ";
}
cout << i;
}
cout << endl;
}
for (int j = 1; j < n - 1; j++)
{
for (int c = 1; c <= j; c++)
{
cout << " ";
}
cout << n - j;
for (int d = n + n - 3; d > j + j; d--)
{
cout << " ";
}
cout << n - j << endl;
}
for (int k = 1; k <= n - 1; k++)
cout << " ";
cout << "1\n";
return 0;
}
二者均能满足题要求!