C语言练习记录(1)

本文章仅为记录C语言学习过程中的练习及其注意事项
如有错误,欢迎指正
题目:
(《C语言程序设计(第五版)》 谭浩强) 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:1.输入10个整数;2.进行处理;3.输出10个数

代码块:

#include <stdio.h>
int main()
 {
   void input(int *);
   void exchange(int *);
   void output(int *);
   int number[10];
   input(number);
   exchange(number);
   output(number);
   return 0;
 }
//输入
 void input(int *number)
 {
  int i;
  printf("请输入十个整数:\n");
  for (i=0;i<10;i++)
    scanf("%d",&number[i]);
  }
//兑换
 void exchange(int *number)
 {
   int *max,*min,*p,temp;
   max=min=number;//初始max、min指向第一个数
    //记录最大的数和最小的数
   for (p=number+1;p<number+10;p++)
   	//如果p指向的数大于max指向的数,则max指向p指向的数
     if (*p>*max){
        max=p;
     }
     else if (*p<*min){//如果p指向的数小于min指向的数,则min指向p指向的数
        min=p;
     }
   //将最小的数于第一个数对换位置
   temp=number[0];
   number[0]=*min;
   *min=temp;
   //当第一个数是最大的数时,此时最大的数的地址改变
   //不能指向之前的地址,而是以最小的数对换前的地址
   //也就是min的地址
   if(max==number){
    max=min;
   }
   //将最大的数于最后一个数对换位置
   temp=number[9];
   number[9]=*max;
   *max=temp;
  }
//输出
void output(int *number)
  {
   int *p;
   printf("对换后:\n");
   for (p=number;p<number+10;p++){
     printf("%d ",*p);
   }
   }

结果截图:
第一个最大但最小不是最后一个:
第一个最大但最小不是最后一个最大在第一个且最小在最后一个最大在第一个且最小在最后一个最后一个最小但最大不是第一个
最后一个最小但最大不是第一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值