关于软件工程的一道习题~求解
14.有比较两个二元组的方法如下:二元组的集合是:
E={(a,b)|0≤a,b≤9 且a,b都是整数 }。其中单个数的大小如下:
1≤2≤3≤4≤5≤6≤7≤8≤9≤0。
对于一个二元组A∈E,
定义1:如果a=b,则称A成对。
定义2:r=(a+b)%10,称为A的点数。
定义3:如果a>b,temp=a,否则temp=b。temp称为A的大数,记为MA。
对于A(a,b),B(c,d)∈E,比较它们大小的规则如下:
1.如果A和B都成对,则比较a,b。如果a<b,则A<B。如果b<a,则B<A。如果a=b,则A=B。
2.成对的都比不成对的大。
3.如果都不成对,则比较点数。如果点数不同,则点数大的那个二元组大。零点最小。
4.如果都不成对,且点数相同。如果点数都是零。则A=B。如果点数不为零。则比较A和B的大数。如果MA<MB,则A<B。如果MB<MA,则B<A。如果MA=MB,则A=B。
请回答下列问题:
1. 画出流程图。
2. 用C语言写出一个比较二元组的函数。如果前一个二元组大于后一个二元组,则返回1,如果相等则返回3,否则返回2。函数接口如下:
int compare(int a, int b, int c, int d)
{}
3.根据书上的各种黑盒和白盒的测试方法写出你的测试数据。并且写出期望结果。