| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2273 人关注过本帖
标题:求解答,关于矩阵交换行的,不知道怎么把输出的矩阵每行第一个数前的空格删 ...
只看楼主 加入收藏
rushi
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
求解答,关于矩阵交换行的,不知道怎么把输出的矩阵每行第一个数前的空格删掉
描述
    编写一个函数,输入参数是5*5的二维int型数组,和n,m两个行下标。功能:判断n,m是否在数组范围内,如果不在,则返回0;如果在范围内,则将n行和m行交换,并返回1。
    在main函数中, 声明一个5*5的int型矩阵,输入矩阵数据,并输入n,m的值。调用前面的函数。如果返回值为0,输出error。如果返回值为1,输出交换后的新矩阵。

关于输入
5*5矩阵的数据,以及n和m的值。

关于输出
如果不可交换,则输出error; 如果可交换,则输出新矩阵
#include <stdio.h>
int swap(int array[5][5],int n,int m){
        int t[5][5],i;
        if(n<=4&&m<=4){
        for(i=0;i<=4;i++){
                t[n][i]=array[n][i];
                array[n][i]=array[m][i];
                array[m][i]=t[n][i];}
            return 1;}
        else
            return 0;
            }
int main(){
        int i,j,n,m;
        int a[5][5];
        for(i=0;i<5;i++)
            for(j=0;j<5;j++){
                scanf("%d",&a[i][j]);
            }
            scanf("%d %d",&n,&m);
        if(swap(a,n,m)){
            for(i=0;i<5;i++){
                for(j=0;j<5;j++){
                    printf("%4d",a[i][j]);
                        
            }
            printf("\n");
            return 1;
        }
        }
        else
            printf("error\n");
        return 0;
    }
搜索更多相关主题的帖子: 矩阵 交换 输出 int for 
2017-12-23 11:11
rushi
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-23
收藏
得分:0 
例子输入
1 2 2 1 2

5 6 7 8 3

9 3 0 5 3

7 2 1 4 6

3 0 8 2 4

0 4
例子输出
3 0 8 2 4

5 6 7 8 3

9 3 0 5 3

7 2 1 4 6

1 2 2 1 2
2017-12-23 11:14
rushi
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-23
收藏
得分:0 
例子输入
1 2 2 1 2

5 6 7 8 3

9 3 0 5 3

7 2 1 4 6

3 0 8 2 4

0 4
例子输出
3 0 8 2 4

5 6 7 8 3

9 3 0 5 3

7 2 1 4 6

1 2 2 1 2
2017-12-23 11:14
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:5 
弄好了。
程序代码:
#include <stdio.h>
int swap(int array[5][5],int n,int m){
        int t[5][5]={0};
        int i;
        if(n<=4&&m<=4){
        for(i=0;i<=4;i++){
                t[n][i]=array[n][i];
                array[n][i]=array[m][i];
                array[m][i]=t[n][i];}
            return 1;}
        else
            return 0;
            }
int main(void){
        int i,j,n,m;
        int a[5][5]={0};
        for(i=0;i<5;i++){
            printf("输入5x5矩阵第%d行:\n",i+1);
           for(j=0;j<5;j++){
                  

                scanf("%d",&a[i][j]);   

            }
        

        }
            printf("输入2个下标:\n");       

            scanf("%d %d",&n,&m);
        if(swap(a,n,m)){
            for(i=0;i<5;i++){
                for(j=0;j<5;j++){
                    printf("%d ",a[i][j]);
                 }
            printf("\n");
            //return 1;
            }
        }
        else
            printf("error\n");
        return 0;
    } 

2017-12-23 11:48
rushi
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-23
收藏
得分:0 
回复 4楼 虫眼
还是不行,新的问题又有了,每行要最后一个数之后没有空格,其他数之间要有空格,怎么弄?
2017-12-23 12:15
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:0 
你用图说明一下
2017-12-23 12:19
rushi
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-23
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-12-23 12:21
rushi
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-12-23
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

我新做了一个,和那个是一样的问题。
2017-12-23 12:26
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:0 
因为printf("%d ",a[i][j]);
这里有空格,如果不加空格输出的数字都连一起了,所以最后会多一个
2017-12-23 13:05
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:15 
如果这个空格对你很重要就按下面的改一下。
程序代码:
#include <stdio.h>
int swap(int array[5][5],int n,int m){
        int t[5][5]={0};
        int i;
        if(n<=4&&m<=4){
        for(i=0;i<=4;i++){
                t[n][i]=array[n][i];
                array[n][i]=array[m][i];
                array[m][i]=t[n][i];}
            return 1;}
        else
            return 0;
            }
int main(void){
        int i,j,n,m;
        int a[5][5]={0};
        for(i=0;i<5;i++){
            printf("输入5x5矩阵第%d行:\n",i+1);
           for(j=0;j<5;j++){
                 


                scanf("%d",&a[i][j]);  


            }
       


        }
            printf("输入2个下标:\n");     


            scanf("%d %d",&n,&m);
        if(swap(a,n,m)){
            for(i=0;i<5;i++){
                for(j=0;j<5;j++){
                    printf("%d",a[i][j]);
                    if(j==4)break;
                    printf(" ");
                 }
            printf("\n");
            //return 1;
            }
        }
        else
            printf("error\n");
        return 0;
    }

2017-12-23 13:20
快速回复:求解答,关于矩阵交换行的,不知道怎么把输出的矩阵每行第一个数前的空 ...
数据加载中...
 
   



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

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