博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言编程题002
阅读量:5323 次
发布时间:2019-06-14

本文共 2866 字,大约阅读时间需要 9 分钟。

 给出两个整数,L和R,其中L<=A<=B<=R,然后求出A^B值最大的数。其中1<=L<=R<=1000.

比如说L = 1;R = 3;

L 0001

R 0011

LR中间还有 0010,其中的最大值是0001 ^ 0010 = 0011;输出就是2.

写出一个函数计算这个数;

 

 

我写了一个,但是没通过最终测试,只有12分,总分20分,不知道哪里还需要改进?

 

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #define MAXSIZE (1000) 7 /* 8  求两个数的最大异或值。 9 */ 10 11 12 /* 13 * 14 */ 15 int maxXor(int l, int r) 16 { 17 //ASSERT 使用方法:放在函数开始,检测函数参数的合法性 18 assert(l >= 1); 19 assert(r <= MAXSIZE); 20 assert(l <= r); 21 22 //二进制位数 23 int lengthL = sizeof(l) * 8; 24 int lengthR = sizeof(r) * 8; 25 //最大值 26 int max = 0; 27 int len = (l+r)/2; 28 //标志位 29 int flag0 ,flag1; 30 //两个for循环遍历所有肯能的组合数 31 for (int i = l ; i <= len; i++) 32 { 33 //printf("i=%d",i); 34 35 for (int j = r ; j >= len; j--) 36 { 37 //printf("j=%d\n",j); 38 39 //初始化各种值 40 lengthL = sizeof(l) * 8; 41 lengthR = sizeof(r) * 8; 42 flag0 = 0; 43 flag1 = 0; 44 45 //从最高位开始判断 46 while (lengthL -- > 0 && lengthR -- >0) 47 { 48 if(i>>lengthL ^ j>>lengthR)//异或为1,记录 49 { 50 // printf("flag1=%d\n",flag1); 51 flag1 ++;// 52 } 53 else 54 { 55 //printf("flag0=%d\n",flag0); 56 flag0 ++; 57 if(flag1 != 0)//如果异或结果先出现1之后再次出现0,肯定不是最大值,退出while循环 58 { 59 printf("break\n"); 60 break;//退出while循环,取下一个数 61 } 62 } 63 //输出最大值,前提就是没有提前退出循环,那样才有可能是最大值 64 //比较所有符合要求的值,然后取最大值 65 if((flag0 + flag1) == sizeof(l) * 8) 66 { 67 if(max < (i ^ j)) 68 { 69 max = (i ^ j); 70 // printf("输出最大值=%d\n",max); 71 72 } 73 } 74 } 75 76 77 } 78 79 } 80 //printf("输出最大值:\n"); 81 82 return max; 83 } 84 85 86 87 88 int main() 89 { 90 int res; 91 int _l; 92 scanf("%d", &_l); 93 94 int _r; 95 scanf("%d", &_r); 96 97 res = maxXor(_l, _r); 98 printf("%d", res); 99 100 return 0;101 }

 

 

 

转载于:https://www.cnblogs.com/songliquan/p/4420947.html

你可能感兴趣的文章
Code Snippet
查看>>
MFC模态对话框程序不响应OnIdle
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
Oracle 序列的应用
查看>>
1201 网页基础--JavaScript(DOM)
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
EFCode First 导航属性
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
I - Agri-Net - poj 1258
查看>>
git 的回退
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
Confluence配置数据库
查看>>
Java锁机制(一)synchronized
查看>>
002.文件删除功能
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
06-redis主从
查看>>