小题目 大家看一下
输入n(n为奇数),输出如下:
举例:n=3,则输出
1 2 1
2 4 2
1 2 1
n=5,则输出
1 2 3 2 1
2 4 6 4 2
3 6 9 6 3
2 4 6 4 2
1 2 3 2 1
依次类推。
问题点数:20、回复次数:10Top
1 楼afx_swallow(足球和啤酒)回复于 2005-08-02 22:30:29 得分 0
//输出前(N-1)/2行
for(int i=1; i<=(N-1)/2; i++)
{
for(int j=i; j<=(N-1)/2; j++)
{
int k=0;
k+=i;
cout <<k <<" ";
push(k,s1); //k进栈s1
}//输出每行的前半部分
cout <<(N+1)/2 <<" "; //输出中间的数
for(int j=i; j<=(N-1)/2; j++)
cout <<pop() <<" "; //输出每行的后半部分
cout <<endl;
push(i,s2); //i进栈s2
}
//输出中间一行
……
//输出后面
……
Top
2 楼oDon(孤独绑定)回复于 2005-08-02 22:42:37 得分 0
有没有C语言版本的。。。Top
3 楼LoveYouJustOneDay(哈哈)回复于 2005-08-02 22:50:06 得分 0
http://community.csdn.net/Expert/topic/4179/4179674.xml?temp=.4673731Top
4 楼qybao(阿宝)回复于 2005-08-02 22:52:56 得分 0
试试看
s = 0;
for (i=1; i<=n; i++)
{
s = (i>(n+1)/2)?s-1:s+1;
v = 0;
for (j=1; j<=n; j++)
{
v = (j>(n+1)/2)?v-s:v+s;
cout << v << " ";
}
cout << endl;
}Top
5 楼qybao(阿宝)回复于 2005-08-02 22:55:28 得分 0
c语言版
int s,v,i,j;
s = 0;
for (i=1; i<=n; i++)
{
s = (i>(n+1)/2)?s-1:s+1;
v = 0;
for (j=1; j<=n; j++)
{
v = (j>(n+1)/2)?v-s:v+s;
printf("%d ", v);
}
printf("\n");
}
Top
6 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 08:53:23 得分 0
这个问题用数组也很方便
定义一个大的数组
输入头一行
后面的行 根据头一行做相应的倍数就好了
程序如下 :Top
7 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 09:16:10 得分 0
main()
{
int n,mid,multi,i,j;
printf ("pliease enter the num n = ");
scanf ("%d",&n);
printf ("\n");
multi = 1 ;
mid = (n+1) / 2;
for (j=0; j<mid; j++)
a[0][j] = j + 1 ;
for (;a[0][j-1]>1; j++)
a[0][j] = a[0][j-1] -1 ;
for (i=1; i<mid; i++)
for (j=0; j<n; j++)
a[i][j] = a[0][j] * (i+1);
for (; i<n; i++)
for (j=0, mid = (n+1)/2; j<n; j++)
a[i][j] = a[0][j]*(--mid);
for (i=0; a[i][0]>0; i++)
{for (j=0; a[i][j]>0; j++)
printf("%d ",a[i][j]);
printf("\n");
}
getch();
}Top
8 楼jixingzhong(瞌睡虫·星辰)回复于 2005-08-03 09:21:32 得分 0
修改一下
上面的输出错了
呵呵 不好意思拉 !
main()
{
int n,mid,multi,i,j;
printf ("pliease enter the num n = ");
scanf ("%d",&n);
printf ("\n");
multi = 1 ;
mid = (n+1) / 2;
for (j=0; j<mid; j++)
a[0][j] = j + 1 ;
for (;a[0][j-1]>1; j++)
a[0][j] = a[0][j-1] -1 ;
for (i=1; i<mid; i++)
for (j=0; j<n; j++)
a[i][j] = a[0][j] * (i+1);
for (mid-=1; i<n; i++,mid--)
for (j=0; j<n; j++)
a[i][j] = a[0][j]*mid;
for (i=0; a[i][0]>0; i++)
{for (j=0; a[i][j]>0; j++)
printf("%d ",a[i][j]);
printf("\n");
}
getch();
}Top
9 楼tina_0305(问问)回复于 2005-08-03 15:41:41 得分 0
上面的程序我上机调试了下,错误有没给a[][]定义,还有multi定义了,可从来没有用过.而且运行的结果还有很多不确定的值.建议:int a[10][10],or,在main函数之前#define N 10.具体程序我还没想好,不过我觉的瞌睡虫说的用数组是一个好方法.Top
10 楼antijpn(antijpn)回复于 2005-08-03 20:29:42 得分 0
直接求代码,转新手乐园Top




