Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99313
  • 博文数量: 102
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1011
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-15 13:58
个人简介

普普通通一个人

文章分类

全部博文(102)

文章存档

2018年(1)

2015年(13)

2014年(88)

我的朋友

分类: C/C++

2014-02-22 22:48:13

从键盘接收一个5位整数,用该算法将其每位上的数字从小到大重新排列
要求是:找到最大的元素,与最后一个元素交换,实现从小到大排列。

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>
  3. //数组大小设置为5
  4. #define SIZE 5

  5. int main(){
  6.     //定义变量:
  7.     //a:临时存放收入的整数,利用其给数组的每一个元素赋值
  8.     //i,j:for循环使用的计数器,i打印数组for循环使用;j比较数组元素大小for循环使用
  9.     //array:存放输入的整数每一位上,值的数组
  10.     //count:计数器控制比较数组元素大小的循环,每次减少1,
  11.     //tmp:临时存放待交换的值
  12.     int a, i, j, array[SIZE], count = (SIZE - 1), tmp;
  13.     //maxPtr:用来在每一轮比大小循环中指向该轮循环中最大的值,这里先把它初始化指向数组的第一个元素
  14.     int *maxPtr = &array[0];
  15.     //从键盘输入一个5位整数,保存在整型变量a中
  16.     scanf_s("%d", &a);
  17.     //按照如下方法,拆分整数,并赋值给array数组
  18.     array[0] = a / 10000;
  19.     array[1] = (a % 10000) / 1000;
  20.     array[2] = ((a % 10000) % 1000) / 100;
  21.     array[3] = (((a % 10000) % 1000) % 100) / 10;
  22.     array[4] = (((a % 10000) % 1000) % 100) % 10;
  23.     //打印比较前数组各个值
  24.     printf("before arrangment:");
  25.     for ( i = 0; i < SIZE; i++){
  26.         printf("%d", array[i]);
  27.     }
  28.     printf("\n");

  29.     //开始进行比较
  30.     while (count > 0){
  31.         //遍历数组,让每一项跟maxPtr比较大小,如果比maxPtr大,则让maxPtr指向该元素,每轮下来,max都指向最大的元素
  32.         for ( j = 1; j <= count; j++){
  33.             if (array[j] > *maxPtr)
  34.                 maxPtr = &array[j];
  35.         }
  36.         //进行交换,把max和数组最后一个元素进行交换
  37.         tmp = *maxPtr;
  38.         *maxPtr = array[count];
  39.         array[count] = tmp;
  40.         //重新把maxPtr定位到数组的第一个元素,为下一轮比较做准备
  41.         maxPtr = &array[0];
  42.         //把count减1,因为除第一轮外,每次比较,都不用比最后一个元素
  43.         count--;
  44.     }
  45.     //循环打印比较后的数组
  46.     printf("after arrangment:");
  47.     for (int i = 0; i < SIZE; i++)
  48.         printf("%d", array[i]);
  49.     printf("\n");

  50.     return 0;
  51. }


阅读(166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~