输入一个整数,判断其是否是2^n,是就输出这个数,不是就输出和它最接近的为2^n的那个整数。

输入一个整数,判断其是否是2^n,若是,输出这

//个数,若不是,输出和它最接近的为2^n的那个整数。

附加源代码1:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	int input;//键盘输入一个整数input
	int i,j;//i,j待会儿存放input与左边和右边的为2^n的差值
	int m,n;//保存左边,右边的与inout最接近的2^n

	printf("请输入一个整数input=");
	scanf("%d",&input);

	if(input<=0)
	{
		printf("不是2^n");
		printf("和它最接近的2^n为1");
	}
	else
	{
		for(int k=0;k<1000;k++)//假设2^n中的n不会超过1000
		{
			if(input==pow(2.0,k))
			{
				printf("%d是2^k",input);
				break;//跳出for循环
			}
			else if(input>pow(2.0,k-1)&&input<pow(2.0,k))
			{
				i = input-pow(2.0,k-1);
				j = pow(2.0,k)-input;
				m = pow(2.0,k-1);
				n = pow(2.0,k);

				if(i<j)//即与他最接近的是他左边的那个数字
				{
					printf("%d",m);
					break;
				}
				else
				{
					printf("%d",n);
					break;
				}
			}
		}
	}

	system("pause");//包含在include<stdlib.h>
	return 0;
}

==================================================================================

附加源代码2:

//如果这个数是2的n次方幂,那可以将这个数先对2取模为0,再对2整除,再对2取模,

//一直到这个数最后为2;如果不能这样做,那么这个整数就不是2的n次方幂。

<span style="color:#000000;">#include<stdio.h>
#include<stdlib.h>
int main()
{
    int input;//键盘输入一个整数input
    int count = 1;//待判断的整数是2的count次方

    printf("请输入一个整数input=");
    scanf("%d",&input);

    while(input)
    {
        if(2==input)//依次除2,最后只剩下2时,表明是2的几次幂
        {
            printf("YES:他是2的%d次幂\n",count);
            break;
        }
        if(0==input%2)//如果数与2求余为0
        {
            input = input/2;//那么取他的一半继续循环下去
            count++;//幂加1
        }
        else
        {
            printf("NO\n");//此循环类可以判断前后的与他最接近的2^n并输出
            break;
        }
    }

    return 0;
}
</span>
时间: 2024-08-05 19:36:15

输入一个整数,判断其是否是2^n,是就输出这个数,不是就输出和它最接近的为2^n的那个整数。的相关文章

输入一个日期判断是否正确 javascript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

20150910输入一个日期判断是这一年的第一天

bool isok = false;//用来记录日期是否正确 bool isrun = false;//用来判断是否是闰年 Console.Write("输入年:"); int year = int.Parse(Console.ReadLine()); Console.Write("输入月:"); int month = int.Parse(Console.ReadLine()); Console.Write("输入日:"); int day =

c语言输入一个字符串,统计其字母,数字和其他字符的个数,并以柱状图输出

#include<stdio.h>int main(int arge,char *argv[]){ char ch; int alp=0,num=0,oth=0,len,alp_start,num_start,oth_start,i; while((ch=getchar())!=-1) { if(ch>='0'&&ch<='9') num++; else if((ch>='a'&&ch<='z')||(ch>='A'&&am

键盘输入一个整数,判断是否是素数

/* ============================================================================ Name        : prime.c Author      : zhangsan Version     : Copyright   : Your copyright notice Description : 键盘输入一个整数,判断是否是素数 ============================================

输入一个100以内的整数,判断与9的关系

Console.Write("请输入一个100以内的整数:"); int shu =int.Parse(Console.ReadLine()); if (shu % 9 == 0) Console.WriteLine("这是9的倍数"); if (shu / 10 == 9) Console.WriteLine("他的十位是9"); if (shu % 10 == 9) Console.WriteLine("他的个位是9");

python 输入一个整数,判断其是否既是3的倍数,又是5的倍数

v = int(input('请输入一个整数:')) if v % 3 == 0 and v % 5 ==0: print(v,'即是3的倍数又是5的倍数') else: print('不是3或5的倍数') 原文地址:https://www.cnblogs.com/chengxubo/p/9902302.html

Python3基础 if else 格式 输入一个整数并判断是8吗

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: 1 temp=input('请输入一个数字:') 2 guess=int(temp) 3 4 if guess==8: 5 print('输入的数字是8') 6 else: 7 print('输入的数字不是8') result: step1: 1 ============= R

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中。例如123放在num[0]中,456放在num[1]中……统计共有多少个整数,并输出这些数。

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中.例如123放在num[0]中,456放在num[1]中--统计共有多少个整数,并输出这些数. #include <stdio.h> int main(){ void search(char * parr, int * pnum); char arr[100],* parr; int num[30],* pnum; parr=arr;

[华为机试]输入一个正整数,输出2000年1月1日经过该整数天后的日期.

//输入一个正整数,输出2000年1月1日经过该整数天后的日期.已测试,输入值可以为0~1095727 //如,100天后,日期为2000 4 10 #include<stdio.h> #define MAX_YEAR 5000//年数可以从2000一直到4999年. //函数功能:求解第year年共有多少天 int day_in_year(int year) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400