C基础笔试题

    xiaoxiao2021-12-14  18

    http://blog.csdn.net/tanqiuwei/article/details/7409241

    C语言基础

    选择题:

    1、下列选项中,合法的C语言关键字是    D

    A.VAR      B. cher      C. integer       D. default

     

    2、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是  C

    A.-3       B.9          C.-12         D.6

     

    3、以下程序的输入结果是  A

    main( ) {  int i=010,j=10,k=x10;

      printf("%d,%d,%d ",i,j,k);

    }

    A.8,10,16       B.8,10,10    C.10,10,10      D.10,10,16

     

    4设有以下定义:

    int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; 

    int (*prt)[3]=a, * p=a[0];

    则下列能够正确表示数组元素a[1][2]的表达式是  D

    A.*((*prt+1)[2])       B.*(*(p+5))       C.(*prt+1)+2     D.*(*(a+1)+2)

    数组指针解法

    ((*(prt+1))[2])

    *(*(prt+1)+2) 

    其实二维数组名a的类型就是int (*)[3];

    所以prt和a是等价的。

     

    5、以下对C语言函数的有关描述中,正确的是 A

    A. 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

    B. C函数既可以嵌套定义又可以递归调用

    C .函数必须有返回值,否则不能使用函数

    D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

     

    6、在以下一组运算中,优先级最高的运算符是?  C

    A. <=          B.=           C.%          D.&&

     

    7、若有定义:int a[3][4];不能表示数组元素a[1][1]的是 C

    A.*(a[1]+1)       B.*(&a[1][1])       C.(*(a+1))[1]        D.*(a+5)

     

    8、程序中定义以下宏 #define S(a,b) a*b     A

    若定义 int area; 且令area=S(3+1,3+4),则变量area的值为:

    A.10           B.12         C.21          D.28

     

    9、以下关于typedef的叙述中错误的是: A

    A. 用typedef可以增加新的类型

    B. 用typedef可以定义各种类型名,但不能用来定义变量

    C. 用typedef只是将已有的类型用新的标识符来代表

    D. 使用typedef有利于程序的通用和移植

    10、以下关于宏替换的叙述不正确的是:  D

    A.宏替换只是字符替换                       B.宏名无类型

    C.宏替换不占用运行时间                      D.宏替换不占用编译时间

     

    11、以下所列的各函数首部中,正确的是    C

    A.void play(var :Integer,var b:Integer)             B.void play(int a,b)

    C.void play(int a,int b)                          D.Sub play(a as integer,b as integer)

     

    12、为表示关系x大于等于y大于等于z,应使用C语言表达式  A

    A.(x>=Y)&&(Y>=z)                                 B.(x>=Y)AND(y>=z)

    C.(x>=Y>=z)                                       D.(x>=Y)&(Y>=z)

     

    13、下列对C语言字符数组的描述中错误的是  D

    A.字符数组可以存放字符串

    B.字符数组中的字符串可以整体输入、输出

    C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 

    D.不可以用关系运算符对字符数组中的字符串进行比较

     

    14、若有以下说明和语句,则输出结果是?  C char str[]="\"c:\\abc.dat\"";   printf("%s",str);

    A.字符串中有非法字符    B.\"c:\\abc.dat\"      C."c:\abc.dat"      D."c:\\abc.dat"

     

    15、若有以下定义和语句:   int w[2][3],(*pw)[3];pw=w; 则对w数组元素的非法引用是  C

    A.*(w[0]+2)          B.*(pw+1)[2]             C.pw[0][0]            D.*(pw[1]+2)

     

    16、若有以下定义和语句:  B int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是

    A.*p                B.a[10]                  C.*a                 D.a[p-a]

     

    17、若有以下定义和语句: char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+'A');  则输出结果是  B

    A.2,M      B.3,E     C.2,E    D.输出项与对应的格式控制不一致,输出结果不确定

     

    18、正确的标识符是: D

    A.?a          B.a=2      C.a.3        D.a_3

     

    19、若执行完成下列语句: int a=3,b=6,c; c=a∧b<<2; 则变量c的二进制值为:D

    A.00011100             B.00010100            C.0001000            D.00011011

     

    20、若执行以下程序时从键盘上输入9, Main() { int n; scanf("%d",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); } 则输出结果是: B

    A.11          B.10          C.9           D.8

     

    21、设有以下定义或语句,则输出的结果是?  A (用small模式编译,指针变量占2个字节) struct date {long *cat; struct date *next; double dog; }too; printf("%d",sizeof(too));

    A.20         B.16          C.14          D.12

     

    22、以下程序的输出结果是 C fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf("%d",a); }

    A.0         B.29          C.31         D.无定值

     

    23、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为   A

    A.不定值     B.4           C.3          D.1

     

    24、若x=4,则x*=x+2的值为:B

    A.36           B.24            C.18           D.20

     

    25、执行下列语句中,sum变量的值是:D int sum=0 for(int i=0;i<10;i++,sum+=i);

    A.45           B.55            C.0            D.编译错误

     

     

     

     

     

     

     

     

     

     

     

    问答题

    1、 请给出下列代码的输出结果

    union

    {

    unsigned char a;

    struct

    {

    unsigned i:3;

    unsigned j:2;

    unsigned k:3;

    }b;

    }u_ab;

     

    void main(void)

    {

            u_ab.a = 45;

           

            printf(“u_ab.b.k = %d\n”, u_ab.b.k);

    }

    输出结果:

     答:如果是小端模式则为 1,如果为大端模式则为:6

    转载请注明原文地址: https://ju.6miu.com/read-969887.html

    最新回复(0)