C语言经典程序之:求十个整数中的最大&最小数并输出(指针)

#include "stdio.h"
void max(int *p,int N)             /*求最大数的函数(void--无返回值),定义指针*/
{
  int i,max=*p;                       /*定义整型i;设指针指向的第一个值是最大值*/

 for(i=0;i<N;i++,p++)             /*for循环,逐个指针向下*/
  {
     if(max<*p)                      /*假如后面出现一个比前一个数值大的数*/      

      max=*p;                          /*马上将较大的数赋给max*/
  }
  
 printf("最大的数是%d\n",max);      /*格式化输出最大数*/
  }
void min(int *p,int N)               /*求最小数的函数,定义指针*/
{
 int i,min=*p;                          /*设指针指向的第一个值是最小值*/
 for(i=0;i<N;i++,p++)             /*for循环,逐个指针向下*/


 {
  if(min>*p)                          /*假如后面出现一个比前一个数值小的数*/  
      min=*p;                          /*马上将较小的数赋给max*/
     
 }
 printf("最小的数是%d",min);        /*格式化输出最大数*/
    }
 
main()                                  /*主函数说:我才是老大,上面的两个函数都得听我的!O(∩_∩)O哈!*/
{
    int a[10],*p,i;                      /*定义一个长度为10的数组,一个指针和一个整型i*/
  
    p=a;                                    /*将数组的第一个地址赋给指针的第一个地址,也就是把数组和指针对应。即a[0]=*p;

                                                  a[1]=*(p+1)*;a[2]=*(p+2);……*/
    puts("请输入十个整数:\n");       /*屏幕显示用户提示信息;puts()--即put string--字符串输出命令*/
    for(i=0;i<10;i++)                        /*for循环依次向下*/
     scanf("%d",&a[i]);                      /*扫描用户输入的数据*/
     
    puts("\n");                                    /*换行*/
    max(p,10);                                   

    min(a,10);                                  /*按最大&最小函数格式分别调用它们,求最大数和最小数*/

    
}

程序执行顺序说明:

       众所周知,C程序是从main()开始执行的。所以前面的两个求最大&最小函数先不执行,程序先执行main(),一直到“ max(p,10); ”时,调用前面的void max()函数,当它执行完毕,输出最大数后,函数生命期结束。接着返回到main()中,又遇到“min(a,10); ”,马上调用void min()函数,执行完毕,找到并输出最小数后,函数生命期结束,返回main()中,然后整个程序结束。

       这个程序也可以这样写:

 #include "stdio.h"
void max(int *p,int N);  

void min(int *p,int N);       /*若求最大函数&最小函数不放在main()之前,要事先在程序中声明*/
main()
{
    int a[10],*p,i;
  
    p=a;
    puts("请输入十个整数:\n");
    for(i=0;i<10;i++)
     scanf("%d",&a[i]);
     
    puts("\n");
    max(p,10);
    
    min(a,10);
    
}
void max(int *p,int N)
{
  int i,max=*p;

 for(i=0;i<N;i++,p++)
  {
     if(max<*p)
       max=*p;
    
   
  }
  
  printf("最大的数是%d\n",max);
 
 

}
void min(int *p,int N)
{
 int i,min=*p;
 for(i=0;i<N;i++,p++)
 {
  if(min>*p)
      min=*p;
     
 }
 printf("最小的数是%d",min);
}

这样可以比较两个程序的不同,学会外部子函数的调用方法。

原文地址:https://www.cnblogs.com/Joynic/p/2879195.html