haiouda 发表于 2015-3-21 13:13:52

printf

本帖最后由 haiouda 于 2015-3-21 13:18 编辑

/*****************************************************************
将一个 5*5 的矩阵中最大的元素放在中心,4个角分别放4个最小的元素
(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。
用 main函数调用。
*****************************************************************/
#include <stdio.h>
#include <string.h>
#define xx 5   //设置矩阵大小
#define aa 10    //设置矩阵单元大小
int main()
{
      
      char a,*b,*c,*min,*max,*max1,*temp1,temp;
      int i,k,p,j;
      
      for (i=0,j=0;i<xx;i++)   //输入矩阵,一个回车代表一个(字符串)单元输入结束
      {
                for (k=0;k<xx;k++,j++)
                {
                        b=a;
                        for(p=0;p<aa;p++)
                        {
                              temp=getchar();
                              if(temp=='\n')
                              {
                                        a='\0';
                                        break;
                              }
                              a=temp;
                        }
                }
      }
      
      
      
      
      
      
      min=min=min=min=b;   //找出最小的四个数
      
      for(i=0;i<4;i++)               
      {
                for(j=0;j<xx*xx;j++)
                {
                        if(strcmp(min,b)>0)
                        {
                              if(i==0)
                              {                                       
                                        c=b;
                                        temp1=min;
                                        min=c;
                                        c=temp1;      
                                       
                              }
                              if(i==1)
                              {
                                        if(strcmp(b,min)>0)
                                        {
                                                c=b;
                                        temp1=min;
                                        min=c;
                                        c=temp1;
                                        }
                              }
                              if(i==2)
                              {
                                        if( strcmp(b ,min)>0)
                                        {
                                                c=b;
                                        temp1=min;
                                        min=c;
                                        c=temp1;
                                        }
                              }
                              
                              if(i==3)
                              {
                                        if(strcmp(b ,min)>0)
                                        {
                        c=b;
                                        temp1=min;
                                        min=c;
                                        c=temp1;
                                        }
                              }
                        }
                }                              
      }
      
      
      max=b;
    for(j=0;j<xx*xx;j++)      //找出最大的数
      {
                if(strcmp(max,b)<0)
                {
                        max1=b;
                        temp1=max;
                        max=max1;
                        max1=temp1;
                }
      }
      
      
      printf("\n\n");
      
      for (j=0;j<xx*xx;j++)    //打印原矩阵
      {
                if(j%xx==0)
                {
                        printf("\n");
                }
                printf("%10s",b);
               
      }


for (j=0;j<xx*xx;j++)      //交换四角及中心单元
{
      if(strcmp(b,max)==0)
{
      temp1=b;
      b=max;
      b=temp1;
}


      if(strcmp(b,min)==0)
{
      temp1=b;
      b=min;
      b=temp1;
}
      if(strcmp(b,min)==0)
{
      temp1=b;
      b=min;
      b=temp1;
}
      if(strcmp(b,min)==0)
{
      temp1=b;
      b=min;
      b=temp1;
}

if(strcmp(b,min)==0)
{
      temp1=b;
      b=min;
      b=temp1;
}


      
}      
      printf("\n\n");
      
      for (j=0;j<xx*xx;j++)      //打印交换后的矩阵
      {
                if(j%xx==0)         printf("\n");
      
                        printf("%10s",b);
               
      }
      
      printf("\n");
      
      return 0;
}





第112和162 行改成:printf("%aas",b); 为何不行呀?

秀丽江山 发表于 2015-3-21 18:06:15

因为printf内的不会被弘替换。。。
你作个实验
#define x 10
printf (" x " );
这样你就知道了
页: [1]
查看完整版本: printf