C语言编程题002
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言编程题002,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1800字,纯文字阅读大概需要3分钟。
内容图文
![C语言编程题002](/upload/InfoBanner/zyjiaocheng/1313/897f2164df3c4fcf9dcbe43be56a9407.jpg)
给出两个整数,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 <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include <stdlib.h> 5 #include <assert.h> 6#define MAXSIZE (1000) 7/* 8 求两个数的最大异或值。 9*/ 10 11 12/* 13 * 14*/ 15int maxXor(int l, int r) 16{ 17//ASSERT 使用方法:放在函数开始,检测函数参数的合法性 18 assert(l >= 1); 19 assert(r <= MAXSIZE); 20 assert(l <= r); 21 22//二进制位数 23int lengthL = sizeof(l) * 8; 24int lengthR = sizeof(r) * 8; 25//最大值 26int max = 0; 27int len = (l+r)/2; 28//标志位 29int flag0 ,flag1; 30//两个for循环遍历所有肯能的组合数 31for (int i = l ; i <= len; i++) 32 { 33//printf("i=%d",i); 34 35for (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//从最高位开始判断 46while (lengthL -- > 0 && lengthR -- >0) 47 { 48if(i>>lengthL ^ j>>lengthR)//异或为1,记录 49 { 50// printf("flag1=%d\n",flag1); 51 flag1 ++;// 52 } 53else 54 { 55//printf("flag0=%d\n",flag0); 56 flag0 ++; 57if(flag1 != 0)//如果异或结果先出现1之后再次出现0,肯定不是最大值,退出while循环 58 { 59 printf("break\n"); 60break;//退出while循环,取下一个数 61 } 62 } 63//输出最大值,前提就是没有提前退出循环,那样才有可能是最大值 64//比较所有符合要求的值,然后取最大值 65if((flag0 + flag1) == sizeof(l) * 8) 66 { 67if(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 82return max; 83} 84 85 86 87 88int main() 89{ 90int res; 91int _l; 92 scanf("%d", &_l); 93 94int _r; 95 scanf("%d", &_r); 96 97 res = maxXor(_l, _r); 98 printf("%d", res); 99100return0; 101 }
原文:http://www.cnblogs.com/songliquan/p/4420947.html
内容总结
以上是互联网集市为您收集整理的C语言编程题002全部内容,希望文章能够帮你解决C语言编程题002所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。