day13(练习题)

1.寻找2的幂

【描述】数学上把2的K次方叫2的K次幂,如4、8、32等。给定一个整数n,请输出距离它最近的那个2的幂是多少。如果有两个距离相同,输出那个小的。
【输入描述】只有一个整数 n(10 <= n <= 2000000000)
【输出描述】只有一个整数,表示距离 最近的那个2的幂。
【样例输入】17
【样例输出】16

#include<iostream>
using namespace std;
int main()
{
	int n,x=0,y=0;
	cin>>n;
	//因为n的最小值为10,并且2的3次方=8,2的4次方=16;
	//所以i=4,较为合理
	// 
	for(int i=4;i<=n;i=i*2)
	{
		x=i;
	}
	y=2*x;
	if(n-x>y-n)
	{
		cout<<y;
	}
	else
	{
		cout<<x;
	}
	return 0;
}

2.编程求123*…*n

【描述】编程求123*…*n
【输入描述】输入一行,只有一个整数n(1<=n<=10)
【输出描述】输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
【样例输入】5
【样例输出】120

#include<iostream>
using namespace std;
int main()
{
	int n,sum=1;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		sum*=i;
	}
	cout<<sum;
	return 0;
}

3.求满足条件的整数个数

【描述】在1-n中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数的个数,如果没有请输出0。
【输入描述】输入一行,只有一个整数n(1<=n<=2000)
【输出描述】输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
【样例输入】100
【样例输出】1

#include<iostream>
using namespace std;
int main()
{
	int n,sum=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		if(i%3==2&&i%5==3&&i%7==2)
		{
			sum++;
			cout<<i<<endl; 
		}
	}
	cout<<"一共"<<sum<<"个";
	return 0;
}

4.九九乘法表

【描述】设计一个程序,能够自动打印出数学里面的九九乘法表
【输入描述】无
【输出描述】输出九九乘法表
【样例输入】无
【样例输出】
11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
1
6=6 26=12 36=18 46=24 56=30 66=36
1
7=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=2749=36 59=45 69=54 79=63 89=72 9*9=81

#include<iostream>
using namespace std;
int main()
{
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=i;j++)
		{
			cout<<j<<"*"<<i<<"="<<i*j<<"\t";
		}
		cout<<endl;
	}
	return 0;
}

5.三角形的个数

【描述】从键盘输入整数L,统计出边长为整数,周长为L的不等边三角形的个数。整数L ( 3 <= L <= 32767 )
【输入描述】整数L ( 3 <= L <= 32767 )
【输出描述】三角形个数
【样例输入】15
【样例输出】6

#include<iostream>
using namespace std;
int main() 
{
    int a,b,c,l,sum=0;
    cin>>l;  
    //a>b>c
    for(a=2;a<l;a++)
    {
        for(b=1;b<=a;b++)
        {
            for(c=1;c<=b;c++)
            {
                if((b+c>a)&&((a-c)<b)&&(a+b+c==l))
                {
                    if(a==b&&a==c) break;
                    else
                    {
                       //printf("%d %d %d \n",a,b,c);
                       sum++;
                    }
                }
            }
        }
    }
    cout<<sum;
    return 0;
}

6.回文数判断

【描述】回文数是指一个数字从左到右顺序与从右到左的顺序是一样的数字,则这个数字称为回文数,例如12321、2332。使用for循环与pow()函数,设计一个程序能够判断输入的数字是否为回文数
【输入描述】输入一个正数字
【输出描述】输出该数字是否为回文数,如果是则输出为1,否则输出为0。
【样例输入】12321
【样例输出】1

#include <iostream>
#include <cmath>
using namespace std;
int main() 
{
    int num; 
    bool flag;
    cin >> num;
    if(num<0) 
    {
        flag=false;
    }
    else
    {
       int digits = log10(num)+1;
       for(int i=0; i<digits/2; i++)
           // 将double结果显式转换为int
           if( (int)(num/pow(10,i)) %10 != (int)(num/pow(10,digits-i-1))%10 )
               flag=false;
           else
               flag=true;    
    }
    cout <<flag << endl;
    return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有点。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值