[指针] 实在是不好意思了,我又来了!指针真的很让人很头疼~~
本以为在纸上调试过了开开心心写完的代码,结果一上机调试,就是这样那样的麻烦!
心情实在是不爽~~ 纠结死了
我恨指针~~
程序代码:/*题目,有一个5*5的矩阵,要求将4个最小的放在四个角上,最大的放在中间,也就是‘12’的位置,然后输出 */
#include "stdio.h"
#include "stdlib.h"
int main()
{
void change(int *);
int i,j=1,*p;
p=(int *)malloc(sizeof(int)*25);
if(NULL==p) return 0;
printf("请输入数组的各个元素:");
for(i=0;i<25;i++)
{
printf("请输入a[%d]:",i+1);
scanf("%d",p+i);
}
change(p);
printf("改变之后的数组为 ");
for(i=0;i<25;i++)
{
printf("a[%d]:",i+1);
printf("%d",*(p+i));
j++;
if(j%5==0)
{
printf("\n");
j=1;
}
}
free(p);
return 0;
}
void change(int *p)
{
int j,t;
int min,max;
min=0;
max=0;
for(j=1;j<25;j++) /*find the max and min */
{
if(*(p+min)>*(p+j))
min=j;
if(*(p+max)<*(p+j))
max=j;
}
t=*(p+min); /*change min and max*/
*(p+min)=*p;
*p=t;
t=*(p+max);
*(p+max)=*(p+12);
*(p+12)=t;
min=1;
for(j=1;j<25;j++)
if(*(p+min)>*(p+j))
min=j;
t=*(p+min);
*(p+min)=*(p+4);
*(p+4)=t;
min=1;
for(j=1;j<25;j++)
{
if(j==4||j==1)
continue;
else if(*(p+min)>*(p+j))
min=j;
}
t=*(p+min);
*(p+min)=*(p+20);
*(p+20)=t;
min=1;
for(j=1;j<25;j++)
{
if(j==4||j==20||j==1)
continue ;
else if(*(p+min)>*(p+j))
min=j;
}
t=*(p+min);
*(p+min)=*(p+24);
*(p+24)=t;
}
[ 本帖最后由 C梦天下 于 2011-4-13 20:06 编辑 ]


