小程序(一)

来源:互联网 发布:mac os x ei系统下载 编辑:程序博客网 时间:2024/06/11 06:20

输入一串乱序的数字和一个整数。

首先将其排序,再在这个有顺序的数字串中,找出所有两个数字之和等于那个整数的数对,并打印,如果没有,那么提示重新输入。

CODE:

#include <stdio.h>

#include <string.h>

char tab[ 200 ];      //存放数字串

int  num;          //输入的整数

int count = 0;       //数字串的长度

void serial ()       //得到数字串

{

printf("请输入一串无序的数字,以回车结束:\n");

   scanf("%s",tab );

}

void intnumber()     //得到整数

{

printf("请输入一个整数:\n");

scanf("%d",&num);

}

void sort()        //从小到大排序

{

int i = 0;

int j = 0;

char temp;

count = strlen(tab);

for ( j = 0; j < count - 1; j ++ )  //排序

{

  for ( i = 0; i < count - 1 - j; i ++ )

  {

   if ( tab[ i ] > tab[ i + 1 ] )

   {

   temp = tab[ i + 1 ];

    tab[ i + 1 ] = tab[ i ];

    tab[ i ] = temp;

   }

  }

}

printf("由小到大排列后的数字串为:\n");

for ( i = 0; i < count; i ++ )

{

  printf("%c",tab[ i ] );

}

}

void find()        //寻找两个数字之和等于num

{

int i = 0;

int j = 0;

int flag = 0;

for ( j = 0; j < count - 1; j ++ )

{

  for ( i = j + 1; i < count; i ++ )

  {

   if ( num ==  tab[ i ]-'0'  +  tab[ j ]-'0' )     // 减去'0'是为了将字符转为对应的整型数值

   {

if (flag == 0)

printf("\n配对情况如下:\n");

       printf(" %c + %c = %d \n", tab[ j ], tab[ i ], num );

flag = 1;

   }

  }

}

if ( flag == 0 )

printf("\n没有找到,请重新输入!");

}

void main()

{

serial();

intnumber();

sort();

find();

}