updated for C program

上一篇 / 下一篇  2008-05-30 15:58:27 / 个人分类:study

面朝大海,春暖花開......

題目: 輸入10個整數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換.(用指針來完成)
 关于这个题目,之前我自己有写过一个程序.但昨天晚上看书的时候,发现之前的程序是存在问题的.在被调用函数Max, Min执行完毕,系统将释放 a 所占存储单元,指针变量 a, p 将不再存在.因此被调用函数Max, Min不应把 p 的值作为函数值返回,这样做,主函数中的指针变量t1,t2将不指向任何对象而成为"无向指针".

 

因此修改代码如下:

/*#include<stdio.h>
int  Max(int a[10])
{
 int i,m,max;
 max=a[0];
 for(i=0;i<10;i++)
 {
  if(a[i]>=max)
  {
   max=a[i];
   m=i;
  }
 }
 return m;
}

int Min(int a[10])
{
    int i,n,min;
 min=a[0];
 for(i=0;i<10;i++)
 {
  if (a[i]<=min)
  {
   min=a[i];
   n=i;
  }
 }
 return n;
}

void swap(int *p1,int *p2)
{
 int temp;
 temp=*p1;
 *p1=*p2;
 *p2=temp;
}

void main()

{
 int a[10], i,t1,t2;
 int *Q1,*Q4;
    for(i=0;i<10;i++)
  scanf("%d",&a[i]);
 t1=Min(a);
 t2=Max(a);
 Q1=&a[0];Q4=&a[9];
 swap(Q1,&a[t1]);
 swap(Q4,&a[t2]);
 for(i=0;i<10;i++)
  printf("%3d",a[i]);
 printf("\n");
}*/


TAG: study

 

评分:0

我来说两句

Open Toolbar