C语言基础练习——Day13

目录

选择题

编程题

统计每个月兔子的总数

数列的和


选择题

1、如果x=2014,下面函数的返回值是

int fun(unsigned int x)
{
     int n = 0;
     while(x + 1)
     {
         n++;
         x = x | (x + 1);
     }
     return n;
}
  • A 20
  • B 21
  • C 23
  • D 25
答案:C
💡

解析:

上面的代码中的x = x | (x + 1)表示改变从右向左的第一个0为1,直到变成全1的时候x+1就溢出为全0,循环结束。2014的二进制是0000 0000 000 0000 0000 0111 1101 1110,所以结果是23

2、下列语句定义x为指向int类型变量a的指针,其中哪一个是正确的

  • A int a , *x = a;
  • B int a , *x = &a;
  • C int *x = &a , a;
  • D int a , x = a;
答案:B
💡

解析:

A选项的x是指针,赋值时使用a不合适,C选项在赋值时a变量还没定义,D选项中的x不是指针。

3、下面有关空指针和未初始化指针,说法错误的是

  • A 对0x0这个地址取值是非法的
  • B 空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方
  • C 空指针与任何对象或函数的指针值都不相等
  • D malloc在其内存分配失败时返回的是一个未初始化的指针
答案:D
💡

解析:

malloc在其内存分配失败时返回为NULL,而在内存分配成功时返回未初始化的指针

4、若有定义int a[8];,则以下表达式中不能代表数组元素a[1]的地址的是

  • A &a[0]+1
  • B &a[1]
  • C &a[0]++
  • D a+1
答案:C
💡

解析:

a[0]表示数组第一个元素,而a[0]++是一个表达式,不可以对表达式取地址

5、以下选项中,对基本类型相同的两个指针变量不能进行运算的运算符是

  • A +
  • B -
  • C =
  • D ==
答案:A
💡

解析:

A错误,因为两个地址相加无意义也可能越界,所以规定不允许指针相加。B选项,可以求出两个数据元素储存位置之间的相隔同数据类型的元素个数,C选项,赋值,没问题,D选项,判断两指针是否相同

编程题

统计每个月兔子的总数

题目链接:统计每个月兔子的总数_牛客题霸_牛客网 (nowcoder.com)

描述
有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?
数据范围:输入满足1≤ n≤31
输入描述:
输入一个int型整数表示第n个月
输出描述:
输出对应的兔子总数

思路解析:

通过对题目的分析可以发现本题和斐波那契数列的思路基本一致,所以可以直接使用斐波那契数列求解的思想

参考代码:

#include <stdio.h>

int GetRabbits(int month){
    if(month == 1 || month == 2){
        return 1;
    }

    return GetRabbits(month-1)+GetRabbits(month -2);
}

int main() {
    int month = 0;
    scanf("%d", &month);
    int rabbits = GetRabbits(month);
    printf("%d ",rabbits);
    return 0;
}

数列的和

题目链接:数列的和_牛客题霸_牛客网 (nowcoder.com)

描述
数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
输入描述:
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出描述:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

思路解析:

本题只需要处理好每次求和的数据,使用sqrt函数求平方根即可

参考代码:

#include <math.h>
#include <stdio.h>

int main() {
    double n = 0;
    int m = 0;
    while (~scanf("%lf%d",&n,&m)) {
        double sum = 0;
        while (m--) {
            sum += n;
            n = sqrt(n);
        }
        printf("%.2f\n",sum);
    }
    return 0;
}

相关推荐

  1. C语言基础练习——Day13

    2024-03-21 04:48:02       46 阅读
  2. C语言基础练习——Day12

    2024-03-21 04:48:02       50 阅读
  3. C语言基础练习——Day04

    2024-03-21 04:48:02       37 阅读
  4. 嵌入式学习——C语言基础——day13

    2024-03-21 04:48:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 04:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 04:48:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 04:48:02       82 阅读
  4. Python语言-面向对象

    2024-03-21 04:48:02       91 阅读

热门阅读

  1. web学习笔记(三十七)

    2024-03-21 04:48:02       44 阅读
  2. 前端流式(stream)请求,获取持续响应的方式

    2024-03-21 04:48:02       42 阅读
  3. 算法训练营day50(补),单调栈2

    2024-03-21 04:48:02       35 阅读
  4. 僵尸进程_ZombieProcess

    2024-03-21 04:48:02       41 阅读
  5. Oracle OR条件的优化与改写

    2024-03-21 04:48:02       33 阅读
  6. 笔试题——得物春招实习

    2024-03-21 04:48:02       43 阅读
  7. day11【网络编程】

    2024-03-21 04:48:02       43 阅读
  8. 课时66:流程控制_case条件控制_嵌套案例

    2024-03-21 04:48:02       44 阅读
  9. 低代码与前端项目部署:革新软件开发的新篇章

    2024-03-21 04:48:02       46 阅读