| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1861 人关注过本帖
标题:代码有问题!
只看楼主 加入收藏
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
经过几个小时的努力,终于将程序改好了,大家看一下有哪些地方还可以进行改进。

程序代码:
#include<stdio.h>
void chuli(int (*)[5]);
void shuchu(int (*)[5]);
int main(void)
{
    int a[5][5]={{2,5,6,3,7},{8,9,10,11,12},{13,14,1,15,16},{17,18,19,20,21},{4,22,23,24,25}};
    int i,j;
    shuchu(a);
    printf("\n\n");
    chuli(a);
    shuchu(a);
    return 0;
}
void chuli( int (*point)[5] )
{
    int *p=*point,m,n,i,temp,a[5]={0,1,2,3,0};//a[0]到a[3]表示最小值位置,a[4]表示最大值位置
    for(n=0;n<5;n++)
        for(i=0;i<25;i++)//遍历二维数组,寻找目标值位置
        {
            if( n<4 && *(p+i)<*(p+a[n]) )//标记最小值
            {
                for(m=n-1;a[m]!=i && m>=0;m--);
                if(m<0)//m<0说明该位置上的值未被标记,又因该值小于第n个最小值,应将其标记
                    a[n]=i;
            }
            if( n==4 && *(p+i)>*(p+a[n]) )//标记最大值
                a[n]=i;
        }
    for(n=0;n<5;n++)//将目标值从当前位置移至目标位置
    {
        temp=*(p+a[n]); 
        *(p+a[n])=*(p+5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2));
        *(p+5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2))=temp;
        //移动当前目标值至目标位置时,有概率影响其他目标值的位置,用以下代码避免此影响带来的错误
        for(m=n+1;m<5;m++)
            if( a[m]==5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2) )
                a[m]=a[n];
    }
}
void shuchu(int (*p)[5])
{
    int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            printf("%5d",*(*(p+i)+j));
        printf("\n\n");
    }
}




[此贴子已经被作者于2018-11-6 16:58编辑过]

2018-11-06 16:49
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
经过几个小时的努力,终于将程序改好了,大家看一下有哪些地方还可以进行改进。

程序代码:
#include<stdio.h>
void chuli(int (*)[5]);
int main(void)
{
    int a[5][5]={{2,5,6,3,7},{8,9,10,11,12},{13,14,1,15,16},{17,18,19,20,21},{4,22,23,24,25}};
    int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            printf("%5d",a[i][j]);
        printf("\n\n");
    }
    printf("\n\n");
    chuli(a);
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            printf("%5d",a[i][j]);
        printf("\n\n");
    }
    return 0;
}
void chuli( int (*point)[5] )
{
    int *p=*point,m,n,i,temp,a[5]={0,1,2,3,0};//a[0]到a[3]表示最小值位置,a[4]表示最大值位置
    for(n=0;n<5;n++)
        for(i=0;i<25;i++)//遍历二维数组,寻找目标值位置
        {
            if( n<4 && *(p+i)<*(p+a[n]) )//标记最小值
            {
                for(m=n-1;a[m]!=i && m>=0;m--);
                if(m<0)//m<0说明该位置上的值未被标记,又因该值小于第n个最小值,应将其标记
                    a[n]=i;
            }
            if( n==4 && *(p+i)>*(p+a[n]) )//标记最大值
                a[n]=i;
        }
    for(n=0;n<5;n++)//将目标值从当前位置移至目标位置
    {
        temp=*(p+a[n]); 
        *(p+a[n])=*(p+5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2));
        *(p+5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2))=temp;
        //移动当前目标值至目标位置时,有概率影响其他目标值的位置,用以下代码避免此影响带来的错误
        for(m=n+1;m<5;m++)
            if( a[m]==5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2) )
                a[m]=a[n];
    }
}


2018-11-06 16:49
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
经过几个小时的努力,终于将程序改好了,大家看一下有哪些地方还可以进行改进。

程序代码:
#include<stdio.h>
void chuli(int (*)[5]);
int main(void)
{
    int a[5][5]={{2,5,6,3,7},{8,9,10,11,12},{13,14,1,15,16},{17,18,19,20,21},{4,22,23,24,25}};
    int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            printf("%5d",a[i][j]);
        printf("\n\n");
    }
    printf("\n\n");
    chuli(a);
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            printf("%5d",a[i][j]);
        printf("\n\n");
    }
    return 0;
}
void chuli( int (*point)[5] )
{
    int *p=*point,m,n,i,temp,a[5]={0,1,2,3,0};//a[0]到a[3]表示最小值位置,a[4]表示最大值位置
    for(n=0;n<5;n++)
        for(i=0;i<25;i++)//遍历二维数组,寻找目标值位置
        {
            if( n<4 && *(p+i)<*(p+a[n]) )//标记最小值
            {
                for(m=n-1;a[m]!=i && m>=0;m--);
                if(m<0)//m<0说明该位置上的值未被标记,又因该值小于第n个最小值,应将其标记
                    a[n]=i;
            }
            if( n==4 && *(p+i)>*(p+a[n]) )//标记最大值
                a[n]=i;
        }
    for(n=0;n<5;n++)//将目标值从当前位置移至目标位置
    {
        temp=*(p+a[n]); 
        *(p+a[n])=*(p+5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2));
        *(p+5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2))=temp;
        //移动当前目标值至目标位置时,有概率影响其他目标值的位置,用以下代码避免此影响带来的错误
        for(m=n+1;m<5;m++)
            if( a[m]==5*(n<4?(n>1?4:0):2)+(n<4?(n%2?4:0):2) )
                a[m]=a[n];
    }
}


2018-11-06 16:50
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
回复 10楼 Tomorrw_I
我是自学的c语言,看不懂你这个代码,第一行应该是一个文件包含吧,可是这个程序的主函数在哪
2018-11-06 17:02
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
回复 10楼 Tomorrw_I
我是自学的c语言,看不懂你这个代码,第一行应该是一个文件包含吧,可是这个程序的主函数在哪
2018-11-06 17:03
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
收藏
得分:0 
回复 15楼 lxk1732942
编译环境不一样而已

和你的程序差不多  那个文件,你忽略!   
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])

这是vs2013自动给出的头文件和主函数!

以后,你会遇到的!

程序改进这方面,不用急,你每天在进步,下一个,再写这个程序,你的代码就会有所改进!

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-06 17:14
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
哦,我的是vs6.0,怪不得不一样
2018-11-06 21:19
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
哦,我的是vs6.0,怪不得不一样
2018-11-06 21:20
快速回复:代码有问题!
数据加载中...
 
   



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

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