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); 为何不行呀?
因为printf内的不会被弘替换。。。
你作个实验
#define x 10
printf (" x " );
这样你就知道了
页:
[1]