我想打印以下图案

I want to print the following pattern

本文关键字:想打 打印      更新时间:2023-10-16
1
3 2
6 5 4
10 9 8 7

我想打印以下图案。我已经非常努力,但无法为其编写代码。我已经尝试了我想到的一切。

#include<iostream>
using namespace std;
int main() {
int i, j, n;
cin >> n;
int k = 0;
for (i = 1;i <= n; i++) {
for (j = 1; j <= i; j++) {
k++;
printf("%d ", k);
}
printf("n");
}
}

我尝试的另一个代码是这个。

#include<iostream>
using namespace std;
int main() {
int i, j, n;
cin >> n;
int k = 0;
for (i = 1; i <= n; i++) {
for (j = i; j >= 1; j--) {
k++;
printf("%d ",j);
}
printf("n");
}
}
#include <iostream>
#include <stack>
using namespace std;
int main()
{
int previousRow = 0;
for(int row = 1; row <= 4; row++)
{
int rowTracker = row;
for(int col = 0; col < row; col++)
{
cout<<rowTracker - col + previousRow<<" ";
}
previousRow += row;
cout<<endl;
}
return 0;
}
#include<iostream>
void printPattern(unsigned numlevels)
{
unsigned last_num = 1;
for(unsigned i = 0; i < numlevels; ++i)
{
unsigned next_num = i + last_num;
for(unsigned j = next_num; j >= last_num; --j)
{
std::cout << j << ' ';
}
std::cout << 'n';
last_num = next_num + 1;
}
}
int main()
{
unsigned n;
std::cin >> n;
printPattern(n);
return 0;
}

您也可以使用堆栈来实现这一点。这是一个可行的答案:

#include <iostream>
#include <stack>
using namespace std;
int main() {
int i, j, n;
stack<int> st;
cin >> n;
int k = 0;
for(i = 1;i <= n; i++) {
for(j = 1; j <= i; j++) {
k++;
st.push(k);
}
while(!st.empty()){
printf("%d ", st.top());
st.pop();
}
printf("n");
}
}

希望对您有所帮助!

在阅读代码打击之前,您应该真正尝试自己做。这个问题显然是为了练习和发展编程肌肉。仅仅得到答案是无济于事的。 代码的问题在于,对于每一行,未正确确定要打印的范围。您应该首先找到范围,然后打印数字。可以有多种方法。下面是其中之一。

for(i=1;i<=n;i++){ 
int max = i*(i+1)/2;
int min = i*(i-1)/2 + 1;
for(j=max;j>=min;j--){ 
printf("%d ",j); 
} 
printf("n"); 
}

这是一个简单的方法

int main(int argc, char* argv[])
{
int n = 4; // suppose print 4 lines
for (int i = 1; i <= n; ++i)
{
int i0 = (i + 1) * i / 2;  // first number of line i
for (int j = 0; j < i; j++)
cout << i0 - j << " ";
cout << endl;
}
return 0;
}

感谢大家的回复。我能够自己做。以下是我所做的。如果有任何更正,请告诉我

#include<iostream>
using namespace std;
int main(){
int i,j,n,temp;
cin>>n;
int k=0;
for(i=1;i<=n;i++){
k=k+i,temp=k;
for(j=1;j<=i;j++){
cout<<temp<<+"  ";
temp--;
}
cout<<("n");
}
}