[指针] 实在是不好意思了,我又来了!指针真的很让人很头疼~~
本以为在纸上调试过了开开心心写完的代码,结果一上机调试,就是这样那样的麻烦!
心情实在是不爽~~ 纠结死了
我恨指针~~
程序代码:
/*题目,有一个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 编辑 ]