注册 登录
编程论坛 C++教室

c++ 左右打印 大神帮帮忙

ww707287875 发布于 2014-09-08 23:13, 424 次点击
请输第1个数字:1
请输第2个数字:35
1       2       3       4       5       6       7       8       9       10

20      19      18      17      16      15      14      13      12      11

21      22      23      24      25      26      27      28      29      30

                                        35      34      33      32      31

请按任意键继续. . .
帮帮忙  用c++怎么写啊。
4 回复
#2
richardw2014-09-08 23:56
每行十个,用一层循环(奇数行是正序,偶是倒序),外层用一层循环,另外要补足整十,以保证最后一行的输出

具体代码就很简单了,就是循环嵌套
#3
fl89622014-09-09 08:03
回复 楼主 ww707287875
#include<iostream>
#include<iomanip>
#include<vector>
using namespace std;
int main(void)
{
   int begin,end;
   cout<<"please input the begin and end"<<endl;
   cin>>begin;
   cin>>end;
   int d;
   d=end-begin+1;
   vector<int> a;
   for(int i=0;i!=d;++i)
   {
     a.push_back(begin+i);
   }

   int m=d/10;
   int n=d%10;
   for(int i=0,t=1;i!=m;++i)
     { if(t%2==1)
         for(int j=0;j!=10;++j)
       cout<<setw(3)<<a[i*10+j];
      else
      for(int j=0;j!=10;++j)
         cout<<setw(3)<<a[(i+1)*10-j-1];
        cout<<endl;
        t++;
     }
   for( int i=0;i!=(10-n);++i)
      cout<<setw(3)<<" ";
    for( size_t i=0;i!=n;++i)
     cout<<setw(3)<<a[d-i-1];
    return 0;
}
随手写了点,没检查,运行了好像符合你结果。你再看看
#4
rjsp2014-09-09 08:45
程序代码:
#include <stdio.h>

void foo( unsigned a, unsigned b )
{
    for( unsigned r=0; r!=(b-a+10)/10; ++r )
    {
        for( unsigned c=0; c!=10; ++c )
        {
            unsigned v = a + r*10 + (r%2?9-c:c);
            printf( "%u"+(v>b)*2, v );
            printf( "\t\0\n"+(c==9)*2 );
        }
    }
}

int main()
{
    foo( 1, 35 );
    return 0;
}
#5
fl89622014-09-09 09:24
r 版的代码就是好看,真简洁呀。膜拜。。
1