栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

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 %sn", p, q);

答案:def def

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


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

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
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=%dn", 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中对指针的变化没有影响到主函数,只是让双重指针更换了指向而已
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号