一个C语言的问题
如何输出当N=5是
1 3 4 10 11
2 5 9 12
6 8 13
7 14
15
参考答案://这题很有意思,呵呵,我想了一下解题应该从每个数的横向和纵向的排位还有横向排位是奇数还是偶数上下手。
//横向上的每个奇数位都等于自己前面最大数再加上自己的纵向排名
//比如横向上第五排的第二个数字应当等于4+3+2+1+(2)也就是12。第三排的第二个数字就是2+1+(2)=5。
//横向上的偶数位就相当与自己同排最大的数减去自己的纵向排名减1(因为第一个就是最大数本身,所以得从0开始算)。比如第4排的第2个就是等于4+3+2+1-(2-1)
#include"stdafx.h"
#include<iostream>
using namespace std;
int main()
{
cout<<"请输入一个数字";
int i;
cin>>i;
for(int j=1;j<=i;++j) //j是纵向排名
{
for(int k=j;k<=i;++k) //k是横向排名
{
if(k%2==1) //判断横向是否为奇数
{
int u;
int m=0;
for(u=1;u<=k-1;u++) //这样就是横向排名的上一个的最大数
{
m=m+u;
}
cout<<m+j<<" "; //然后再加上他的纵向排名
}
else
{
int u;
int m=0;
for(u=1;u<=k;u++)
{
m=m+u;
}
cout<<m-(j-1)<<" "; //然后减去他的纵向排名减1就行了
}
}
cout<<endl;
}
cin.get();
cin.get();
}
//语法是用C++的 因为我没学过C.一知半解的乱用语法可能更加混乱,如果你没有学过C++的话告诉你下cin和scanf,cout和printf是同样的意思 稍微改变一下就行了