鱼C论坛

 找回密码
 立即注册
查看: 1358|回复: 0

[技术交流] 这个程序对初学者很难么?

[复制链接]
发表于 2015-3-29 16:38:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*****************************************************************
将一个 5*5 的矩阵中最大的元素放在中心,4个角分别放4个最小的元素
(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。
用 main函数调用。
*****************************************************************/

#if(1)
#include<stdio.h>
#include<string.h>

int main()
{
        void sx(char *y[]);
        char a[5][5][20],*p[25];
        int i,k,j=0,n=25;
    for(k=0;k<5;k++)
        {
                for(i=0;i<5;i++,j++)
                {
                                gets(a[k][i]);
                        p[j]=a[k][i];                        
                }
        }  
        
        for (i=0,k=0;i<n;i++)         //打印原矩阵
        {
                if(k%5==0) printf("\n");
                printf("%s  ",*(p+i));
                
                k++;
                
        }
        printf("\n");
        
        sx(p);
        
        
        
        for (i=0,k=0;i<n;i++)       //打印改变后的矩阵
        {
                if(k%5==0) printf("\n");
                printf("%s  ",*(p+i));
                k++;
        }
        printf("\n");
        
}


void sx(char *y[])
{
        void sh(char *y1,char *y2);     //指针所指字符串交换
        
        int i,k,n=25,a[5]={0};
        char temp[30]={0};
        
        strcpy(temp,*(y+0));
        for(i=0;i+1<n;i++)
        {
                if(  strcmp( temp,*(y+i))>0  )                                                           
                {        
                        strcpy(temp,*(y+i));        
                        *(a+0)=i;
                }
                
                
        }
        if(  ( strcmp( *(y+0),*(y+*(a+0))) !=0 ))          sh(*(y+0),*(y+*(a+0)));  //最小的数放到左上角
        
        
        strcpy(temp,*(y+1));
        for(i=1;i+1<n;i++)
        {
        if(  strcmp( temp,*(y+i))>0  &&  strcmp( *(y+i),*(y+0) )>0 )                   
                {
                        strcpy(temp,*(y+i));
                        if(        strcmp( temp,*(y+0)  )>0 ) 
                                *(a+1)=i;
                }                                
        }
        if (*(a+1)==0) *(a+1)=1;
        if(( strcmp( *(y+4),*(y+*(a+1)))!=0 ))          sh(*(y+4),*(y+*(a+1)));  // 第二小的数放到右上角
        
        
        strcpy(temp,*(y+1));
        for(i=1;i+1<n;i++)
        {
        if(  strcmp( temp,*(y+i))>0  &&  strcmp( *(y+i),*(y+4) )>0 )                   
                {
                        strcpy(temp,*(y+i));
                        if(        strcmp( temp,*(y+4)  )>0 ) 
                                *(a+2)=i;
                }                
        }
        if (*(a+1)==0) *(a+1)=1;
        if(( strcmp( *(y+20),*(y+*(a+2)))!=0 ))         sh(*(y+20),*(y+*(a+2))); // 第三小的数放到左下角
        
        
        strcpy(temp,*(y+1));
        for(i=1;i+1<n;i++)
        {
        if(  strcmp( temp,*(y+i))>0  &&  strcmp( *(y+i),*(y+20) )>0 )          
                {
                        strcpy(temp,*(y+i));
                        if(        strcmp( temp,*(y+20) )>0 ) 
                                *(a+3)=i;
                }                
        }
        if (*(a+1)==0) *(a+1)=1;
        if(( strcmp( *(y+24),*(y+*(a+3)))!=0 ))         sh(*(y+24),*(y+*(a+3))); // 第四小的数放到右下角
        
        strcpy(temp,*(y+1));
        for(i=0,k=1;i+1<n;i++)
        {
                if(  strcmp( temp,*(y+i))<0 )
                {
                        strcpy(temp,*(y+i));
                        *(a+4)=i;
                }            
        }                        
        
        if(( strcmp( *(y+12),*(y+*(a+4)))!=0 ))  sh(*(y+12),*(y+*(a+4)));   // 最大的数放到中间
        
}


void sh(char *y1,char *y2)
{
        char cc[20];
        strcpy(cc,y1);
        strcpy(y1,y2);
        strcpy(y2,cc);                
}
#endif
已经是第二次写这个程序了,还是用了6个小时,我笨死了55555555555555555555555


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表