标题:救救孩子
只看楼主
九笙
Rank: 1
等 级:新手上路
帖 子:48
专家分:5
注 册:2019-10-9
 问题点数:0 回复次数:8 
救救孩子
目前只学了数组之前的基本知识
指针只限于知道  还没学到数组与指针那张
这是作业题  求大佬们用基础的语句解答下
define a m×n array ,output the array with the following type using 1-m*n
输入 3 4
输出
1 2 3 4
10 11 12 5
9 8 7 6
搜索更多相关主题的帖子: 孩子 指针 array the 数组 
2019-11-26 20:28
九笙
Rank: 1
等 级:新手上路
帖 子:48
专家分:5
注 册:2019-10-9
得分:0 
QvQ
2019-11-27 10:03
c鳌白
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:101
注 册:2019-11-10
得分:0 
这太简单了。
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("1 2 3 4\n10 11 12 5\n9 8 7 6");
return 0;
}
2019-11-27 10:52
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:0 
题目不会这么简洁吧?
2019-11-27 11:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
这标题起得……,很无聊

程序代码:
#include <stdio.h>

void foo( unsigned row, unsigned col )
{
    for( unsigned i=0; i!=row*col; ++i )
    {
        unsigned r = i/col;
        unsigned c = i%col;

        unsigned v;
        if( r-0<=row-1-r && r-0<=c-0 && r-0<=col-1-c ) //
            v = 2*(row+col-2*r)*r + c-r+1;
        else if( col-1-c<=c-0 && col-1-c<=r-0 && col-1-c<=row-1-r ) //
            v = 2*(row+col-2*(col-1-c))*(col-1-c) + r+3*c-2*col+3;
        else if( row-1-r<=r-0 && row-1-r<=col-1-c && row-1-r<=c-0 ) //
            v = 2*(row+col-2*(row-1-r))*(row-1-r) + 2*col-4*row+5*r-c+3;
        else if( c-0<=col-1-c && c-0<=row-1-r && c-0<=r-0 ) //
            v = 2*(row+col-2*c)*c + 2*row+2*col-r-7*c-3;
        printf( "%u%c", v, " \n"[c+1==col] );
    }
}

int main( void )
{
    unsigned m, n;
    scanf( "%u%u", &m, &n );
    foo( m, n );
}

2019-11-27 14:53
九笙
Rank: 1
等 级:新手上路
帖 子:48
专家分:5
注 册:2019-10-9
得分:0 
回复 3楼 c鳌白
。。。。。你没懂题
2019-11-28 12:07
九笙
Rank: 1
等 级:新手上路
帖 子:48
专家分:5
注 册:2019-10-9
得分:0 
回复 4楼 bcbbcclbbc
相当于你输入矩阵规格,按那种数字方向打印出矩阵,从1开始
2019-11-28 12:15
九笙
Rank: 1
等 级:新手上路
帖 子:48
专家分:5
注 册:2019-10-9
得分:0 
回复 5楼 rjsp
标题废
能否说一下思路,我还是有点乱,虽然程序语言看懂了,但我还是不太能想清楚,标量和条件有点绕
2019-11-28 12:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 8楼 九笙
跟程序关系不大,就是简单的数学题,根据 行号、列号 求其值。

程序代码:
#include <stdio.h>

void foo( unsigned row, unsigned col, unsigned base, const char* fmt )
{
    for( unsigned i=0; i!=row*col; ++i )
    {
        unsigned T = i/col;
        unsigned B = row-1-T;
        unsigned L = i%col;
        unsigned R = col-1-L;

        unsigned v;
        #define bar(row,col,t,l,base) (2*(row)*(t) + 2*(col)*(t) - 4*(t)*(t) + (l)-(t) + (base))
            if( T<=B && T<=L && T<=R ) //
                v = bar( row, col, T, L, base );
            else if( R<=T && R<=B && R<=L ) //
                v = bar( col, row-1, R, T-1, base+col );
            else if( B<=T && B<=L && B<=R ) //
                v = bar( row-1, col-1, B, R-1, base+col+row-1 );
            else if( L<=T && L<=B && L<=R ) //
                v = bar( col-1, row-2, L, B-1, base+2*col+row-2 );
        #undef bar
        printf( fmt, v );
        putchar( " \n"[R==0] );
    }
}

int main( void )
{
    foo( 5, 4, 1, "%02u" );
    foo( 5, 5, 1, "%02u" );
    foo( 5, 6, 1, "%02u" );
    foo( 7, 11, 1, "%02u" );
    foo( 17, 9, 1, "%03u" );
}

2019-11-28 14:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498095-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015208 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved