c笔试题

Posted 独孤流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c笔试题相关的知识,希望对你有一定的参考价值。

1.sizeofstrlen的区别

#include<stdio.h>

#include<string.h>

int main()

{

char a[10] = "12345";

char *p = "12345";

char b[20];

printf("%d %d\n",sizeof(a),strlen(a));

/*sizeof是运算符,strlen是函数,sizeof要加上‘/0‘,

strlen表示字符串的长度,且strlen的参数只能是‘char*‘ */

printf("%d %d\n",sizeof(*a),strlen(a));

printf("%d %d\n",sizeof(p),strlen(p));

printf("%d %d\n",sizeof(*p),strlen(p));

/*由于b是未知的,所以strlen是不确定的*/

printf("%d %d\n",sizeof(b),strlen(b));

printf("%d %d\n",sizeof(*b),strlen(b));

return 0;

}

运行结果:

10   5

1    5

4    5 

1    5

20   23

1    23

2.下列程序的运行结果

#include<stdio.h>

int main()

{

double a[2]={3,9},*p,*q;

p=&a[0];

q=p+1;

printf("%d    %d\n",(q-p),(int)q-(int)p);

return 0;

}

运行结果:1   8

 

3.下列程序

#include<stdio.h>

int main()

{

#define SUN 0

printf("1");

#ifndef SUN

printf("2");

#endif

printf("3");

return 0;

}

运行结果:

13

 

4.数组的时候int *p=(int*)malloc(10*sizeof(int)) 释放的时候 free(p)即可;这是因为编译器对malloc做了一些特殊的处理,以保证可以正确释放内存。而当int *p=new int[10]释放的时候应为delete []p,注意[]的作用说明释放的是一个数组的内存,如果delete p则只是释放的p[0],其余9int的内存没有释放;这是因为当指明为[]的时候,编译器实际上是做了一个循环来释放这个数组的所有内存。

 

5.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1101112、 13因此共出现6,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

int NumberOf1Between1AndN_Solution(int n)

 {

    int count=0;

    for(int j=1;j<=n;j++)

    {

        int i=j;

        while(i)

        {

            if(i%10==1)

                count++;

            i=i/10;

        }

    }

    return count;

}

 

6.像如a=(b++,c++)这类语句,a的值就是c++。

7.fork()函数的头文件是#include<unistd.h>,且fork()函数是按2的n次方进行递增的。

以上是关于c笔试题的主要内容,如果未能解决你的问题,请参考以下文章

c笔试题

java笔试题

MySql 笔试题

几道C笔试题

嵌入式c笔试题(整理)

笔试题合集