实验内容
输入三个整数,按照由小到大的顺序输出。要求然后将程序改为,输入三个字符串,按照由小到大的顺序输入。
1、算法思想
①、数字排序
因为只有三个数字排序,所以采用比较简单的算法:第一个数和第二个数比较,如果第一个数大于第二个数,则交换两个数;用相同的思想分别比较第二个和第三个、第一个和第三个。
②、字符串排序
因为涉及到字符串,又不能预料用户输入的最大长度,所以定义字符串指针存储三个字符串,调用字符串比较函数进行排序。
③、考虑到便于比较,我设计了两个函数分别处理数字排序和字符串排序,在主程序中进行调用。
2、程序代码
#include "stdio.h"
#include "string.h"
void shuzipaixu(int *a,int *b,int *c)
{int tem,tem1;
if(*a>*b){tem1=*a;*a=*b;*b=tem1;}
if(*b>*c) {tem1=*b;*b=*c;*c=tem1;}
if(*a>*b){tem1=*a;*a=*b;*b=tem1;}
printf("%d<%d<%d\n",*a,*b,*c);
}
void zifuchuanpaixu(char *ac,char *bc,char *cc)
{char *tem,*tem1;
if(strcmp(ac,bc)>0){tem1=ac;ac=bc;bc=tem1;}
if(strcmp(bc,cc)>0) {tem1=bc;bc=cc;cc=tem1;}
if(strcmp(ac,bc)>0){tem1=ac;ac=bc;bc=tem1;}
printf("%s<%s<%s\n",ac,bc,cc);
}
main()
{int a1,b1,c1;
char *ac1;int tem;char *bc1;int tem2;char *cc1;
printf("***********利用函数调用分别对数字和字符串进行排序(实验者:齐照林)*************\n");
printf("即将测试第一个函数~~数字排序函数!\n");
printf("请输入三个整数用于测试程序,每输完一个请按回车键!\n");
scanf("%d%d%d",&a1,&b1,&c1);
shuzipaixu(&a1,&b1,&c1);
printf("数字排序测试完毕,接着测试第二个函数~~字符串排序!\n");
printf("请输入三个字符串用于测试程序,每输完一个请按回车键!\n");
scanf("%s%s%s",ac1,bc1,cc1);
zifuchuanpaixu(ac1,bc1,cc1);
printf("测试完毕,按任意键退出\n");
}