C语言编程题002
给出两个整数,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分,不知道哪里还需要改进?
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>
#define MAXSIZE (1000)
/*
求两个数的最大异或值。
*/ /*
*
*/
int maxXor(int l, int r)
{
//ASSERT 使用方法:放在函数开始,检测函数参数的合法性
assert(l >= );
assert(r <= MAXSIZE);
assert(l <= r); //二进制位数
int lengthL = sizeof(l) * ;
int lengthR = sizeof(r) * ;
//最大值
int max = ;
int len = (l+r)/;
//标志位
int flag0 ,flag1;
//两个for循环遍历所有肯能的组合数
for (int i = l ; i <= len; i++)
{
//printf("i=%d",i); for (int j = r ; j >= len; j--)
{
//printf("j=%d\n",j); //初始化各种值
lengthL = sizeof(l) * ;
lengthR = sizeof(r) * ;
flag0 = ;
flag1 = ; //从最高位开始判断
while (lengthL -- > && lengthR -- >)
{
if(i>>lengthL ^ j>>lengthR)//异或为1,记录
{
// printf("flag1=%d\n",flag1);
flag1 ++;//
}
else
{
//printf("flag0=%d\n",flag0);
flag0 ++;
if(flag1 != )//如果异或结果先出现1之后再次出现0,肯定不是最大值,退出while循环
{
printf("break\n");
break;//退出while循环,取下一个数
}
}
//输出最大值,前提就是没有提前退出循环,那样才有可能是最大值
//比较所有符合要求的值,然后取最大值
if((flag0 + flag1) == sizeof(l) * )
{
if(max < (i ^ j))
{
max = (i ^ j);
// printf("输出最大值=%d\n",max); }
}
} } }
//printf("输出最大值:\n"); return max;
} int main()
{
int res;
int _l;
scanf("%d", &_l); int _r;
scanf("%d", &_r); res = maxXor(_l, _r);
printf("%d", res); return ;
}
C语言编程题002的更多相关文章
- 2018.3 江苏省计算机等级考试 C语言 编程题答案
题目要求:给定一个数字范围,输出满足这些条件: 1.能被3整除: 2.包含数字5, 将满足的数字放在特定的数组里输出.输出这些数里5出现的个数.数字的个数. 想起来有点伤心,本来很简单的题,考试的时候 ...
- C语言编程题
1.将整形a的第m位赋值到整形b的第n位 int fun4(int a, int m, int b, int n) { a = (a>>m) & ;//将a的第m位取出,为1或0, ...
- C语言编程题001
有一颗树,一年两个生长周期,春天它长高一倍,夏天长高1m,问N个周期后树有多高?假设从春天开始树高为1m,第0个周期树高为1m. 要求:1.可以同时输入多个生长周期 如:3//表示下面有几个生长周期 ...
- 记一道C语言编程题(C语言学习笔记)
题目如下 解答如下 #include <stdio.h> #include<math.h> double Mysqrt(double n) { return sqrt(n); ...
- 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)
第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...
- C语言程序设计进阶 第1周编程题
第1周编程题 查看帮助 返回 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数 ...
- 面向对象程序设计--Java语言第二周编程题:有秒计时的数字时钟
有秒计时的数字时钟 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做 ...
- 中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机
期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成 ...
- 中国MOOC_零基础学Java语言_期末考试的编程题_1二进制的前导的零
期末考试的编程题 返回 这是期末考试的编程题,在60分钟内,你可以多次提交,直到正确为止. 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止 ...
随机推荐
- 常用的Homebrew命令
一些常用的Homebrew命令: 更新:brew update 安装包信息检索:brew info 安装包搜索:brew search foo 安装包列表:brew list 过时信息:brew ou ...
- 利用临时表实现CTE递归查询
一.CTE递归查询简介 --CTE递归查询终止条件在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递 ...
- Codeforces Round #327 (Div. 2) C Median Smoothing(找规律)
分析: 三个01组合只有八种情况: 000 s001 s010 0011 s100 s101 1110 s111 s 可以看出只有010,101是不稳定的.其他都是稳定的,且连续地出现了1或0,标记为 ...
- POJ 1703 Find them, Catch them(并查集,等价关系)
DisjointSet保存的是等价关系,对于某个人X,设置两个变量Xa,Xb.Xa表示X属于a帮派,Xb类似. 如果X和Y不是同一个帮派,那么Xa -> Yb,Yb -> Xa... (X ...
- ZOJ-1654 Place the Robots---二分图最小点覆盖+构图
题目链接: https://vjudge.net/problem/ZOJ-1654 题目大意: 有一个N*M(N,M<=50)的棋盘,棋盘的每一格是三种类型之一:空地.草地.墙.机器人只能放在空 ...
- python_60_装饰器3
#嵌套函数 def foo(): print('in the foo') def bar(): print('in the bar') bar() #bar()#出错,无法在外边调用,bar函数的作用 ...
- CPP-基础:C_C++变量命名规则
C_C++变量命名规则 变量命名规则是为了增强代码的可读性和容易维护性.以下为C++必须遵守的变量命名规则: 1. 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成. 2. 第一 ...
- ES6 Promise用法详解
What is Promise? Promise是一个构造函数,接受一个参数(Function),并且该参数接受两个参数resolve和reject(分别表示异步操作执行成功后的回调函数.执行失败后的 ...
- PAT (Basic Level) Practise (中文)- 1005. 继续(3n+1)猜想 (25)
http://www.patest.cn/contests/pat-b-practise/1005 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证 ...
- 【luogu P1983 车站分级】 题解
题目链接:https://www.luogu.org/problemnew/show/P1983 符合了NOIP命题的特点,知识点不难,思维量是有的. step1:把题读进去,理解.得到 非停靠点的等 ...