暑假第五天之每天一些题系列(代码片段)

小赵小赵福星高照~ 小赵小赵福星高照~     2022-12-22     689

关键词:

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

一、选择题

  • 如下程序:

    int a[10];
    int*pa;
    pa = a;
    

    则元素a[1]的地址可以表示为
    A. pa+1 B. pa+2 C. pa+4 D. a+2

答案解析:

数字名a是首元素的地址,pa存放的是首元素的地址,pa+1是第二个元素的地址,即a[1]的地址可以表示为pa+1

  • 如下程序结果运行结果是

    int Change(int *pX)
    
        int y = 8;
        y = y - *pX;
        pX = &y;
    	return 0;
    
    int main()
    
        int xx = 3;
        int *pY = &xx;
        Change(pY);
        printf("%d\\n", *pY);
        return 0;
    
    

    A. 8 B. 3 C. 5 D. 不确定

答案解析:

指针pY指向xx,将pY的值传给Change,需要注意的是值传递没办法改变外面的值的,故*pY为3

  • 下列程序执行后的输出结果是

    int main()
    
        char arr[2][4];
        strcpy((char*)arr,"you");
        strcpy(arr[1],"me");
        arr[0][3] = '&';
        printf("%s\\n",arr);
        return 0;
    
    

    A. you&me B. you C. me D. err

答案解析:

arr是二维数组数组名,数组名是首元素地址首元素是arr[0],所以arr是arr[0]的地址,将"you"拷贝到arr[0]中,然后将me拷贝到arr[1]中,最后将’&'赋给了arr[0][3],刚好在you后面,故打印的arr为you&me

  • -27 在内存中的存储形式是以下哪一种
    A. 0001 1011 B. 1110 0100 C. 1110 0101 D. 1010 0111

答案解析:

原码:10011011

反码:11100100

补码:11100101

内存中存储的是补码

  • 若有以下定义和语句,则选项中错误的语句是

    int a = 4,b = 3,*p,*q,*w;
    p = &a;
    q = &b;
    w = q;
    q = NULL;
    

    A. *q = 0 B. w = p C. *p = a D. *p = *w

答案解析:

q最后赋为NULL了,不能对NULL指针解引用

二、填空题

  • 如下代码结果是多少

    int fun(int x)
    
        int count = 0;
        while(x)
        
            count++;
            x = x & (x-1);
        
        return count;
    
    int main()
    
        printf("fun(2019)=%d\\n",fun(2019));
    
    

答案解析:

该fun函数的功能是求x的二进制有多少个1,x=x&(x-1)是将x的二进制中从右到左第一个1去掉,功能就是统计x的二进制有多少个1,2019的二进制有8个1,故最后输出结果为8

  • 以下程序的输出结果为

    #define CIR(r) r*r
    void main()
    
        int a = 1;
        int b = 2;
        int t;
        t = CIR(a + b);
        printf("%d/n", t);
        return;
    
    

答案解析:

CIR(a + b)在预处理阶段完成替换,替换为a + b*a + b,代入值得t=5

  • 下面的代码中,函数Test执行完毕后,打印的结果是

    unsigned long g_ulGlobal = 0;
    void GlobalInit(unsigned long ulArg)
    
        ulArg = 0x01;
        return;
    
    void Test()
    
        GlobalInit(g_ulGlobal);
        printf("%lu", g_ulGlobal);
        return;
    
    

答案解析:

g_ulGlobal是个全局变量,初始化为0,GlobalInit为传值调用,是不能改变实参的,故打印的是0

三、算法题

题目描述:

有一张单链表,编写函数求倒数第K个结点。

思路:

我们先定义两个指针slow,fast,fast先走k步,然后再一起走,我们看下面的动图:

当fast为NULL时,此时的slow就为倒数第k个结点

需要注意的是:输入的k如果大于结点的个数,fast还没走完k步就变为NULL了,这里要特别返回NULL

代码如下:

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) 

    struct ListNode* slow=pListHead;
    struct ListNode* fast=pListHead;
    if(k==0)
    
        return NULL;
    
    while(k--)
    
        if(fast==NULL)//k大于链表长度时,k没减完fast就走到NULL
        
            return NULL;
        
       	fast=fast->next;
    
    while(fast)
    
        slow=slow->next;
        fast=fast->next;
    
    return slow;

暑假第四天之每天一些题系列(代码片段)

暑假第四天之每天一些题系列文章目录暑假第四天之每天一些题系列一、选择题二、填空题三、算法题一、选择题下列程序执行后,n的值等于chara[20];char*p1=(char*)a;char*p2=(char*)(a+5);intn=p2-p1;A.4B.5C.10D.20答案解析:... 查看详情

暑假第一天之每天一些题系列(代码片段)

暑假第一天之每天一些题系列文章目录暑假第一天之每天一些题系列一、选择题二、填空题三、算法题一、选择题若有定义:inta[]=2,4,6,8,10,12,14,16,18,20,22,24,*q[4],k;for(k=0;k<4;k++) q[k]=&a[k*3];printf("%d\\n",q[3... 查看详情

暑假第十天之每天一些题系列(代码片段)

暑假第十天之每天一些题系列一、选择题关于如下代码,说法错误的是characX[]="abc";characY[]='a','b','c';char*szX="abc";char*szY="abc";A.acX与acY的内容可以修改B.szX与szY指向相 查看详情

暑假第二天之每天一些题系列(代码片段)

暑假第二天之每天一些题系列文章目录暑假第二天之每天一些题系列一、选择题二、填空题三、算法题一、选择题表达式0x13&0x17,0x13|0x17的值分别是多少A.0x170x13B.0x130x17C.0xF80xE8D.0xec0xC8答案解析:0x13的二进制为:000100110x... 查看详情

暑假第九天之每天一些题系列(代码片段)

暑假第九天之每天一些题系列一、选择题下面程序的输出结果为多少(32位机器上)voidFunc(charstr_arg[2])intm=sizeof(str_arg);intn=strlen(str_arg);printf("%d\\n",m);printf("%d\\n",n);intmain(void)charstr[]="H 查看详情

暑假第十一天之每天一些题系列(代码片段)

暑假第十一天之每天一些题系列一、选择题程序的输出结果是#include<stdio.h>intfun(char*s)char*p=s;while(*p!='\\0') p++; return(p-s);intmain() printf("%d\\n",fun("goodbye!"));A.0B 查看详情

暑假第十七天之每天一些题系列(代码片段)

暑假第十七天之每天一些题系列一、选择题下列程序段的输出结果为unsignedlongpulArray[]=6,7,8,9,10;unsignedlong*pulPtr;pulPtr=pulArray;*(pulPtr+2)+=2;printf("%d,%d\\n",*pulPtr,*(pulPtr+2));A.8,10B.6,8C 查看详情

暑假第三天之每天一些题系列(代码片段)

暑假第三天之每天一些题系列文章目录暑假第三天之每天一些题系列一.选择题二、填空题三、算法题一.选择题以下关于函数设计不正确的说法是A.函数设计应该追求高内聚低耦合B.要尽可能多的使用全局变量C.函数参数不易过多D... 查看详情

暑假第八天之每天一些题系列(代码片段)

暑假第八天之每天一些题系列一、选择题若有定义typedefcharSTRING[255];STRINGs;则s是A.字符指针数组变量B.字符数组变量C.字符变量D.字符指针变量答案解析:typedefcharSTRING[255];将char类型重定义为STRING[255],而STRINGs就相当于是char... 查看详情

暑假第六天之每天一些题系列(代码片段)

暑假第六天之每天一些题系列一、选择题以下程序的运行结果是intfun(inta,intb)if(a>b) return(a+b);else return(a-b);intmain()intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%d\\n”,r);return0;A.-48B.58C.-58D.-17 查看详情

暑假第十九天之每天一些题系列(代码片段)

暑假第十九天之每天一些题系列一、选择题下面哪个选项可以交换指针p和q所指的int型变量的值A.temp=p;p=q;q=temp;B.temp=*p;*p=*q;*q=temp;C.temp=&p;*p=*q;q=*temp;D.temp=p;*p=*q;q=temp;答案解析:t 查看详情

暑假第二十天之每天一些题系列(代码片段)

暑假第二十天之每天一些题系列一、选择题若函数的参数是数组,则传递给这个参数的值是A.整个数组被拷贝过去B.数组的首地址C.数组元素的个数D.数组第一个元素的值答案解析:数组传参是传过去得是数组的首地址以下... 查看详情

暑假第十二天之每天一些题系列(代码片段)

暑假第十二天之每天一些题系列一、选择题定义了一维int型数组a[10]后,下面错误的引用是A.a[0]=1B.a[0]=5*2C.a[10]=2D.a[1]=a[2]*a[0]答案解析:a[10]越界访问了,10个元素下标是0-9。在C/C++语言中,下面关... 查看详情

暑假第七天之每天一些题系列(代码片段)

暑假第七天之每天一些题系列一、选择题设m和n都是int类型,那么以下for循环语句for(m=0,n=-1;n=0;m++,n++)n++;A.循环体一次也不执行B.循环体执行一次C.是无限循环D.有限次循环E.循环结束判断条件不合法F.... 查看详情

暑假第十八天之每天一些题系列(代码片段)

暑假第十八天之每天一些题系列一、选择题设有以下宏定义,则执行语句:z=2*(N+Y(5+1));后z的值为#defineN3#defineY(n)((N+1)*n)/*这种定义在编程规范中是严格禁止的*/A.出错B.42C.48D.54答案解析:#define定义的符号和宏在预处理... 查看详情

暑假第十四天之每天一些题系列(代码片段)

暑假第十四天之每天一些题系列一、选择题已知inta[10]=0,1,2,3,4,5,6,7,8,9,*p=a;以下不能表示数组a中元素的表达式是A.*aB.*pC.aD.a[p-a]答案解析:a是数组名,数组名是首元素的地址,是表示地址,不表示元素;... 查看详情

暑假第十三天之每天一些题系列(代码片段)

暑假第十三天之每天一些题系列一、选择题如果二进制文件a.dat已经存在,现在要求写入全新数据,应以什么方式打开A.“w”B.“wb”C.“w+”D.“wb+”答案解析:首先a.dat是二进制文件,现在要求写入数据࿰... 查看详情

暑假第十六天之每天一些题系列(代码片段)

暑假第十六天之每天一些题系列一、选择题在C语言中,表示静态存储类别的关键字是A.autoB.registerC.staticD.extern答案解析:static是静态存储类别的关键字C语言中函数返回值的类型是由决定的A.函数定义时指定的类型B.return语... 查看详情