CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

小题目 大家看一下

楼主oDon(孤独绑定)2005-08-02 22:26:10 在 C/C++ / 新手乐园 提问

输入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

相关问题

  • 大家帮忙看一下,这道题目和最小生成树有什么关系?
  • 一道java的题目,应该不难,进来看一下
  • 哪位高手帮我看一下这个JAVA题目
  • 哪位高手帮我看一下这个JAVA题目
  • 几个概念性的题目,帮忙看一下,谢谢
  • 一个小问题帮忙看一下。
  • 各位帮我看一下,小问题。
  • 帮忙看一下小代码
  • 两个C++小题。看一下就行。
  • 两个小问题,帮忙看一下

关键词

  • 输出

得分解答快速导航

  • 帖主:oDon

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo