一、问题描述
二、思路分析
1、先查找出两个数组中较短的一位的长度
2、同时遍历数组查看到第几位两者是相同的(即查找最大公共前缀),这里可以使用一个变量count来计数,count的数量即为最大公共前缀
3、判断m、n和count的关系,计算A和B的大小
三、代码实现
#include<stdio.h>
//m为a数组长度,n为b数组长度
int compare(float a[],float b[],int m,int n){
//查找两个数组中较短的长度
int k = n>m?m:n;
//记录最大公共前缀的长度
int count = 0;
//计算最大前缀的长度
for(int i=0;i<k;i++){
if(a[i] == b[i]){
count++;
}
}
//前缀长度以及两个数组的长度均相等则两个数组相等
if((m==count)&&(n==count)){
printf("%s\n","相等");
return 1;
}
//最大公共前缀为m,则B>A
if(m == count && n != count){
printf("%s\n","A<B");
return 2;
}
//最大公共前缀为n,则A>B
if(m != count && n == count){
printf("%s\n","A>B");
return 3;
}
//两个都不为空表,则比较剩余元素中第一位的大小
if(m != count && n!= count){
if(a[count]>b[count]){
printf("%s\n","A>B");
return 3;
}else{
printf("%s\n","A<B");
return 2;
}
}
}
int main(){
float a[5] = {1,2,3,7,6};
float b[6] = {1,2,3,7,7,8};
int result = compare(a,b,5,6);
printf("%d",result);
}