暑假第三天之每天一些题系列

暑假第三天之每天一些题系列


一. 选择题

  • 以下关于函数设计不正确的说法是
    A. 函数设计应该追求高内聚低耦合
    B. 要尽可能多的使用全局变量
    C. 函数参数不易过多
    D. 设计函数时,尽量做到谁申请的资源就由谁来释放

答案解析:

函数设计应尽可能少的使用全局变量,因为全局变量的声明周期太长会长时间占用空间,容易出错

  • 下面的程序,输出结果正确的是
int main()
{
    int a = 5;
    if( a = 0 )
    {
    	printf("%d", a - 10);
    }
    else
    {
    	printf("%d", a++);
    }
    return 0;
}

A. -5 B. 6 C. 1 d. 0

答案解析:

注意if语句里面是赋值号,而不是==号,将0赋给a,a=0这个表达式的值为0,为假,故进入else,注意此时a变为了0,a是后置++,先使用后加加,故打印的是0

  • 关于野指针,下面说法错误的是
    A. 野指针指可能指向非法的内存地址
    B. 野指针有时也可能指向合法的内存地址
    C. 野指针都是由指针未初始化导致的
    D. 对野指针的访问,可能会导致程序异常

答案解析:

野指针的成因不只是指针未初始化导致的,还有比如指针越界访问、指针指向的空间释放

想要更多了解指针,请前往博主两篇讲解指针的博客:指针初阶指针进阶

  • include <x.h> 和 include “y.h” ,以下说法正确的是
    A. “” 表示先到源文件所在目录下搜索头文件
    B. <> 表示先到源文件所在目录下搜索头文件
    C. 两者用法没有区别

答案解析:

"" 表示先到源文件所在目录下搜索头文件,如果头文件没有找到,编译器就像查找库函数头文件一样,在库函数的头文件目录下查找
<> 表示直接到库函数头文件所在目录下搜索

  • 定义变量 double **a[3][4] ,假设为32位平台,则此变量占有内存空间是字节
    A. 12 B. 24 C. 48 D. 96

a是一个二维数组,数组的元素类型为double型的二级指针,但它也是指针,大小为4字节(32位平台),8字节(64位平台),一共有12个元素,12*4=48字节


二、填空题

  • 假定所有变量均已正确说明,执行下述程序段后 z 的值是
x = z = 2,y = 3;
if (x > y)
	z = 1;
else if (x == y)
	z = 0;
else
	z = -1;

答案解析:

此时x=2,y=3,x不大于y并且x不等于y,故来到了最后的else,将-1赋给z,此时z为-1

  • 有如下代码:
char acHello[] = "hello\0world";
char acNew[15] = {0};
strcpy(acNew,acHello);

则 strlen(acNew) =, sizeof(acHello) =

答案解析:

strlen是求字符串长度的函数,\0是结束标志,将acHello拷贝进acNew,即acNew数组中是"hello\0world",\0是结束标志,故求得strlen(acNew)=5;sizeof(acHello)求acHello的空间大小,注意\0算是一个字符,我们字符串中相当于有11个字符,对吗?不对,别忘了最后面还有一个\0,因为一个字符是1字节大小,故一共是12字节的空间大小


三、算法题

题目描述:

编写函数,求第n个斐波那契数列的值(非递归)

斐波那契数列是什么呢?前两个数相加等于下一个数:

0,1,1,2,3,5,8,13,21,34…]

思路:

我们定义a、b、c三个变量,将a初始化为0,b初始化为1,c等于a+b,然后让a=b,b=c,这样进行迭代

代码如下:

int Fibonacci(int n)
{
    int a=0;
    int b=1;
    int c;
    if(n==1)
    {
        return 0;
    }
    if(n==2)
    {
        return 1;
    }
    while(n>2)
    {
        c=a+b;
        a=b;
        b=c;
        n--;
    }
    return c;
}

在写求斐波那契数列代码时,我们写非递归的,因为递归的时间复杂度过高,效率不行

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小赵小赵福星高照~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值