由于看到上面老兄的输出格式和题目不一样,我也来试试
#include "stdio.h"
#define M 3 /*修改这里的值就可看到不同的(m,n)的结果*/
#define N 4
int draw_point(int x,int y);
main()
{
int i,a=1,b=1;
while((a+b)<=(M+N))
{
while((a+b)<=(M+N))
{
if((a+b)<(M+N))
{
draw_point(a,b);
}
else
{
if((M+N)%2==0)
{
if(a<=M)
draw_point(a,b);
}
else
{
if(b<=N)
draw_point(a,b);
}
}
b++;
}
printf("\n");
b=1;
a++;
}
}
draw_point(int x,int y)
{
printf("(%d,%d)",x,y);
}
我的算法是按行输出,根据两个数的和判断是否需要输出
的确看错题了,修改一下:
#include "stdio.h"
#define M 4
#define N 3
int draw_num=0;
int draw_point(int x,int y);
main()
{
int sum=2,a,b;
while(sum<=(M+N))
{
if(sum%2==0)
{
a=1;
while(a<sum)
{
b=sum-a;
draw_point(a,b);
a++;
if(sum==(M+N))
{
if(a>M)
break;
}
}
}
else
{
b=1;
while(b<sum)
{
a=sum-b;
draw_point(a,b);
b++;
if(sum==(M+N))
{
if(b>N)
break;
}
}
}
sum++;
}
}
draw_point(int x,int y)
{
printf("(%d,%d)",x,y);
draw_num++;
if(draw_num%5==0)
printf("\n");
}