标题:(求助)对电子表格进行删除交换等操作
只看楼主
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
结帖率:80%
已结贴  问题点数:20 回复次数:3 
(求助)对电子表格进行删除交换等操作
C语言新手 最好能说一下思路和注释
有一个r行c列(1<=r,c<=50)的电子表格,行从上到下编号为1~r,列从左到右编号是1~c。下面定义了几种操作:(x, y等都是整数)
SR x1 x2
交换x1行和x2行
SC y1 y2
交换y1列和y2列
DR x
删除x行
DC y
删除y列
IR x
在x行上面插入一行,新插入的行的所有单元格值为0
IC y
在y列前面插入一列,新插入的列的所有单元格值为0
输入
第一行是2个整数r, c,表示电子表格有r行c列。接下来的r行,每行c个整数,表示每个单元格的值。再接下来的一行有1个整数n,表示随后有n行,每行是一个操作命令。
输出
输出经过这n次操作后的电子表格内容。
样例输入
3 5
1 2 3 4 5
3 4 5 6 7
5 6 7 8 9
4
SR 1 3
SC 2 4
IR 2
DC 2
样例输出
5 7 6 9
0 0 0 0
3 5 4 7
1 3 2 5

搜索更多相关主题的帖子: 电子表格 删除 交换 插入 操作 
2020-12-13 15:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
n 最大是多少?
假如一开始是 50行50列,你连弄 99999999999999999999999999 个“IR 0”的话,就有 50+99999999999999999999999999 行了
2020-12-13 17:06
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 2楼 rjsp
n最大为多少在题目中没有限制,可以自行设定一个最大值
2020-12-13 17:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
回复 3楼 Sopphhiiaa
枯燥无味的题目,我都猜不出作者想考察什么,考察学生是不是像复印机一样不出错吗?

以下代码可能有错,因为我懒得检查
程序代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    unsigned r, c;
    scanf( "%u%u", &r, &c );

    int m[100][100];
    for( unsigned i=0; i!=r*c; ++i )
       scanf( "%d", &m[i/c][i%c] );

    unsigned n;
    scanf( "%u", &n );

    int row[100], col[100];
    for( int i=0; i!=100; ++i )
       row[i]=i, col[i]=i;

    while( n-- )
    {
        char p1, p2; unsigned p3, p4;
        scanf( " %c%c%u", &p1, &p2, &p3 );
        if( p1 == 'S' )
            scanf( "%u", &p4 );

        if( p1=='S' && p2=='R' )
        {
            int t = row[p3-1];
            row[p3-1] = row[p4-1];
            row[p4-1] = t;
        }
        else if( p1=='S' && p2=='C' )
        {
            int t = col[p3-1];
            col[p3-1] = col[p4-1];
            col[p4-1] = t;
        }
        else if( p1=='D' && p2=='R' )
        {
            memmove( &row[p3-1], &row[p3], (r-p3)*sizeof(int) );
            --r;
        }
        else if( p1=='D' && p2=='C' )
        {
            memmove( &col[p3-1], &col[p3], (c-p3)*sizeof(int) );
            --c;
        }
        else if( p1=='I' && p2=='R' )
        {
            memmove( &row[p3], &row[p3-1], (r+1-p3)*sizeof(int) );
            row[p3-1] = -1;
            ++r;
        }
        else if( p1=='I' && p2=='C' )
        {
            memmove( &col[p3], &col[p3-1], (c+1-p3)*sizeof(int) );
            col[p3-1] = -1;
            ++c;
        }
    }

    for( unsigned i=0; i!=r; ++i )
    {
        for( unsigned j=0; j!=c; ++j )
            printf( "%d%c", (row[i]==-1 || col[j]==-1)?0:m[row[i]][col[j]], " \n"[j+1==c] );
    }
}
收到的鲜花
  • Sopphhiiaa2020-12-14 20:20 送鲜花  1朵  
2020-12-13 17:47



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




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

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