【牛客网】每天刷题–第十一天

  • Post author:
  • Post category:其他



目录


1.设有定义: double array[10]; 表达式 sizeof(array)/sizeof(array[0])的结果是 array数组中元素个数。说法是否正确?


2.在以下程序段中,若从键盘输入:abc def↙,则输出结果是( )


3.对于 32 位机器,则下面代码输出结果为()


4.用calloc函数创建具有10个整型元素的动态存储空间的正确调用是( )。


5.上下文及头文件均正常的情况下,以下程序的输出结果是________。


6. 下面函数的时间复杂度是


7.运行下面这段C语言程序之后,输出在屏幕上的结果是:



1.设有定义: double array[10]; 表达式 sizeof(array)/sizeof(array[0])的结果是 array数组中元素个数。说法是否正确?


答案:正确


解析:sizeof,用数组的大小除以单个元素的大小得到数组中元素的个数


2.在以下程序段中,若从键盘输入:abc def↙,则输出结果是( )

char *p, *q;
p = (char *)malloc(sizeof(char) * 20);
q = p;
scanf("%s %s", p, q);
printf("%s %s\n", p, q);


答案:def def


解析:p q 指向同样的地址, scanf(“%s %s”, p, q);”abc”赋值给p,然后”def”赋值给q(即p),把之前的赋值覆盖了。


3.对于 32 位机器,则下面代码输出结果为()

#include<iostream>
#include<string>

using namespace std;

typedef struct data_ {
    int a[10];
} data_t;

typedef struct descriptor_ {
    data_t* ptr;
    char data[0];
} desc_t;

int main() {
    cout << sizeof(desc_t) << endl;
    return 0;
} 


答案:4


解析:data[0]的长度为零,字节为零。在WIN32编译器下指针长度为4。总长度为4,不需要补齐。所以结构体长度为4


4.用calloc函数创建具有10个整型元素的动态存储空间的正确调用是( )。


答案:C


解析:calloc函数会给申请的空间置0初始化,而malloc不会


5.上下文及头文件均正常的情况下,以下程序的输出结果是________。

void fut(int**s,int p[2][3]) {
    **s=p[1][1];
}
void main( ) {
    int a[2][3]={1,3,5,7,9,11},*p;
    p=(int*)malloc(sizeof(int));
    fut(&p,a);
    cout<< *p;
}


答案:9


解析:**s=a[1][1]; ————> *s=p; *(*s)=a[1][1]; 就是a[1][1]的值.


6. 下面函数的时间复杂度是

long foo(long x){
    if(x < 2) return 1;
        return x * x * foo(x - 1);
}


答案: A


解析:


可以配合自己画的流程图看


x=1    O(1)


x=2    O(1+O(foo(1)))=O(2)


x=3    O(1+O(foo(2)))=O(3)


。。。依次类推


x=N    O(1+O(foo(N-1)))=N


7.运行下面这段C语言程序之后,输出在屏幕上的结果是:

#include<stdio.h>
void foobar(int a, int *b, int **c)
{
    int *p = &a;
    *p = 101;
    *c = b;
    b = p;
}

int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    int *p = &c;
    foobar(a, &b, &p);
    printf("a=%d, b=%d, c=%d, *p=%d\n", a, b, c, *p);
    return (0);
}


答案:A


解析:函数foobar中的a是按值传递,因此在函数中的修改不会引起主函数中的变化。

函数中b传递的是主函数中b的指针,语句b = p ,其中p指向的是函数foobar内局部变量a的地址,让传递过去的指针换了指向的数据,原来指向的数据(主函数中的b)不会有影响。如果这里是*b = *p那么主函数中的b也要相应变化。

函数中的c传递的是双重指针,*c = b,也就是让主函数中的p指针指向了主函数中的b的地址

在函数foobar中对指针的变化没有影响到主函数,只是让双重指针更换了指向而已



版权声明:本文为qq_61168152原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。