C语言经典题目(13)

简介: C语言经典题目(13)

61. 写一个函数isPowerOfTwo判断是不是2的幂次方

在这里插入图片描述

bool isPowerOfTwo(int n)
{
   unsigned int k = 1;
    if(n<=0)
        return false;
    if(n==1)
        return true;
    for(int i = 1;i<32;i++)
    {
        k*=2;
        if(k==n)
            return true;
    }
    return false;
}

62. 写一个函数isPowerOfThree判断是不是3的幂次方

在这里插入图片描述

bool isPowerOfThree(int n){
    unsigned int k = 1;
    if(n<=0)
        return false;
    if(n==1)
        return true;
    for(int i = 0;i<=20;i++)//3的20次幂已经是32位整型的上限了。
    {
        k*=3;
        if(k==n)
            return true;
    }
    return false;

}

63.n 的第 k 个因子

在这里插入图片描述

int kthFactor(int n, int k)
{
    int count = 0;
    for(int i = 1;i<=n;i++)
    {
        if(n%i==0)
            count++;
        if(count==k)
            return i;
    }
    return -1;
}

64.有效的完全平方数

在这里插入图片描述

防止溢出,要用long long型
死循环枚举所有情况
bool isPerfectSquare(int num)
{
    int i = 0;
    long long sum = 0;
    while(1)
    {
        i++;
        sum=(long long)i*i;
        if(sum==num)
            return true;
        if(sum>=num)
            return false;
    }
}

65.搜索旋转排序数组

int search(int* nums, int numsSize, int target)
{
    int i;
    for(i =0; i < numsSize; i++ )
    {
        if(nums[i]== target)
        {
            return i;
        }
    }
    return -1;
}
相关文章
|
5月前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
5月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
42 1
|
10月前
2.C语言题目---字符串左旋
2.C语言题目---字符串左旋
71 1
|
10月前
|
存储
1.C语言题目---指针类(基础)
1.C语言题目---指针类(基础)
53 1
|
2月前
|
存储 编译器 C语言
【C语言】指针练习题目
【C语言】指针练习题目
|
4月前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
41 1
|
5月前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
4月前
|
C语言
c语言循环题目
c语言循环题目
|
5月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
5月前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)