C 语言的练习题附加答案

C语言选择题精选

*1 A

一个C程序的执行是从_____。

 A)本程序的main函数开始,到main函数结束√

 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

 C)本程序的main函数开始,到本程序文件的最后一个函数结束

 D)本程序文件的第一个函数开始,到本程序main函数结束

*2 D    

以下叙述不正确的是。

A)一个C源程序可由一个或多个函数组成

B)一个C源程序必须包含一个main函数

C)C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于一条语句的后面

*3  B

一个C语言程序是由

A)一个主程序和若干子程序组成    B)函数组成

C)若干过程组成           D)若干子程序组成

*4 A

在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为

A)char<int<1ong  int<=float<double

B)char=int<1ong  int<=float<double       char(1)int(2)long(4)float(4)double(8)

C)char<int<1ong  int=float=double

D)char=int=1ong  int<=float<double

*5  C 

若x,i,j和k都是int型变量,则执行下面表达式后x的值为

 x=(i=4,j=16,k=32)

 A)4      B)16      C)32     D)52

*6  B

假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是:

 A)7    B)8   C)6   D)2

*7   C

C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符

 A)必须为字母            B)必须为下划线

 C)必须为字母或下划线    D)可以是字母,数字和下划线中任一种字符

*8 D   

下面四个选项中,均是不正确的八进制数或十六进制数的选项是。

 A)  016      B)oabc       C)010      D)  0a12

      0x8f         017                  -0x11             7ff

      018         0x8                  0x16            -123

八进制以0开头,十六进制以0x,0X开头

*9  C 

若有代数式3ae/bc,则不正确的C语言表达式是:

 A) a/b/c*e*3      B)3*a*e/b/c

 C)3*a*e/b*c       D)a*e/c/b*3

*10 A

已知各变量的类型说明如下:

   int   k,a,b;

   unsigned  long  w= 5;

  double    x=1.42;

则以下不符合C语言语法的表达式是:

A)  x%(一3)              B)  w+=-2

C) k=(a=2,b=3,a十b)      D) a十= a一=(b=4)*(a=3)

*11 A

已知各变量的类型说明如下:

 int i=8,k,a,b;

unsigned  long  w=5;

 double  x=1.42,y=5.2;

则以下符合C语言语法的表达式是:

A)  a十=a一=(b= 4)*(a=3)         B)a=a*3=2

C)  x%(一3)                       D)y=f1oat(i)

*12  D  

以下不正确的叙述是

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。

*13  B

以下符合C语言语法的赋值表达式是

A)d=9+e+f=d+9            B)  d=9+e,f=d+9

C)d=9十e,e++,d十9      D)d=9十e++=d十7

*30 A

已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为

A)D         B)68        C)不确定的值       D)C

*14  D  

在C语言中,要求运算数必须是整型的运算符是。

A) /       B) ++       c) !=      D)%

*15 B

若以下变量均是整型,且num=sum=7;则执行表达式sUM=num++,sUM++,++num后sum的值为

 A)  7        B  8         C) 9          D) 10

*16  D  

在C语言中,int   har和short种类型数据在内存中所占用的字节数

A)由用户自己定义     B)均为2个字节

C)是任意的           D)由所用机器的机器字长决定

*17 A

若有说明语句:cha c='\72'则变量c

A)包含1个字符   B)包含2个字符

C)包含3个字符   D)说明不合法,c的值不确定

*18 A

若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是

A)2·500000       B)2.7500OO       C)  3.500000       D)  0.000000。

*19  C 

设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为

 A)int     B)  float     C)  double     D)不确定

*20 A

下面四个选项中,均是非法常量的选项是。

A)'as'         B)'\\'       c)-0xl8      D)0xabc

  -0fff          '\01'        01177        '\0'

  '\0xa'         12,456       0xf"a"

*21  B

在C语言中,当调用函数时,下面说法不正确的是

A. 实参和形参各占一个独立的存储单元

B. 实参和形参可以共用存储单元

形参是实参的副本,即拷贝,不能共用存储单元,不占相同空间

C. 主调函数把实参的值传递给形参

D. 形参只有在发生函数调用时才会被分配存储单元

*22  B

设变量n为f1oat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是一一一。

A) n=(n*100+0.5)/100.0     B)m=n*100+0.5 ,n= m/100.0

C) n=n*100+0.5/100.0      D)n=(n/100+0.5)*100.0

*23  C

表达式18/4*sqrt(4.0)/8值的数据类型为:

A)  int    B)float   C)double  D)不确定

*24   C

设C语言中,一个int型数据在内存中占2个字节,则unsigned  int型数据的取值范围为:

A)  0~255     B) 0~32767     C) 0~65535     D)  0~2147483647

*25    D

设有说明:  char w; int  x;  f1oat  y;  double  z;则表达式w* x+z一y值的数据类型为:

A)float    B)char   C)int     D)double

*26    D

若有以下定义,则能使值为3的表达式是:

int  k= 7,x =12;

A)  x%=(k%= 5)       B)  x%=(k一k%5)

C)  x%=k- k%5        D)  (x%=k)一(k%=5)

*27  C 

设以下变量均为int类型,则值不等于7的表达式是

A)  (x= y= 6,  x+y,x+1)   B)(x= y= 6,x+y,y+1)

C)  (x= 6,x+1,y= 6,x+y)   D)  (y=6,y+l,x = y,x+1)

*28  B

printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式

A)从左起输出该字串,右补空格

B)按原字符长从左向右全部输出

C)右对齐输出该字串,左补空格

D)输出错误信息

*29  D

有输入语句:  scanf("a= %d,b= %d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是

A)132(回车)

B)1,3,2(回车)

C)a=1b=3c=2(回车)

D)a=1,b =3,c =2(回车)

*30 A

以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是

 A)int a=b= c= 5;       B) int a,b, c= 5;

 C)a= 5,b=5,c=5;     D)  a= b= c=5;

*31 A

已知ch是字符型变量,下面不正确的赋值语句是

A)ch='a+b';  B)ch='\0';  C)ch='7'+'9';  D)  ch=5+9;

*32  B

已知ch是字符型变量,下面正确的赋值语句是 

A)  ch= '123';  B)  ch= '\xff';  C)  ch= '\08';  D)  ch="\";

*33  B

若有以下定义,则正确的赋值语句是:

 int  a,b;float  x;

  A)  a=1,b=2,    B)b++;  C)  a= b= 5     D)  b= int(x);

*34  B

设x 、y均为f1oat型变量,则以下不合法的赋值语句是

A)++x;     B)y=(x%2)/10;    C)  x*=y+8;    D)x=y=0;

*35 A

x,y,z均为int型变量,则执行语句x=(y=(z=10)+5)一5;后,x 、y 和之的值是:

  A)  x=10          B) x=10       C) x=10       D)x=10

      y=15 y=10        y=10          y=5

      z=10 z=10        z=15          z=10

 *36  D      

逻辑运算符两侧运算对象的数据类型一一一。

  A)只能是0或1

  B)只能是0或非0正数

  C)只能是整型或字符型数据

  D)可以是任何类型的数据

*37   C

下关于运算符优先顺序的描述中正确的是一一一。

A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符

B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符

C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符

D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符

*38  B

下列运算符中优先级最高的是一一一。

  A)<   B)十   C)&&     D)!=

*39   C

判断char型变量ch是否为大写字母的正确表达式是一一一。

  A)' A' <=ch<='z'       B)(ch> = 'A')&(ch<=' z' )

  C)(ch>=' A' )&&(ch<='Z')       D)(' A' < = ch)AND('z'> = ch)

*40    D

设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是

  A)'y'&&'y'

  B)x < =y

  C) x||y+z&&y-z

  D) !(x<y)&&!z||1)

*41   C

已知x =43,ch='A',y=0则表达式(x > = y && ch<'B'&&!Y) 的值是

   A)0        B)语法错        C)1       D)"假"  

*42   C

若希望当A的值为奇数时,表达式的值为"真",A的值为偶数 表达式的值

为"假"。则以下不能满足要求的表达式是:

A)  A%2= =1      B)!(A%2 = =0)       C)!(A%2)    D)  A%2

*43  B

设有 int a = 1,b=2,c =3, d =4, m=2, n=2;

      执行(m= a>b)&&(n=c>d)后n的值为:

    A)1      B )2       C)3      D)4

*44 A

 执行以下语句后b 的值为:

    int  a=5,b=6,w=1,x=2,y=3,z=4;

    (a=w>x)&&(b=y>z);

  A)  6      B)  0      C)  1      D)  4

*45 C 

以下不正确的if语句形式是:   

  A)if(x>y && x!=y);

  B)if(x= =y)  x+=y    

  C)if(x != y)scanf("%d",&x )else scanf("%d",&y);

  D)if(X<Y) {X++;Y++;}

*46 A

下列运算符中优先级最低的是:

  A)?:       B)&&     c)+     D)  !=

*47  D  

请阅读以下程序:

    main()

    {int  a=5,b=0,c=0; 

    if(a=b+c)  printf("***\n  ");

    e1se   printf("$$$\n");

   以上程序 :

      A 有语法错不能通过编译       B可以通过编译但不能通过连接

      C 输出***                    D 输出$$$

*48   C

以下程序的运行结果是 :

     main()    

    {int m=5;

    if(m++> 5)  printf(" %d\n",m);

    e1se     printf("%d\n",m- - );

  }

  A)4       B)5       C)6       D)7

*49  B

以下程序的输出结果是:

      main()

      {int  x= 2,y= 一1,z=2;

if (x<y)

     if(y<0)  z= 0;

     else    z+ =1;

    printf("%d\n",z);

    }

    A)3      B )2       C)1      D) 0

*50  B

为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句

    总是与(  )配对。

    A)缩排位置相同的if        B)其之前最近的if

    C) 之后最近的if           D)同一行上的if

*51  A

若有定义:int a[10],*p=a;,则p+5表示:

  A. 数组元素a[5]的地址        B. 数组元素a[5]的值

  C. 数组元素a[6]的地址          D. 数组元素a[6]的值

*52  B

若有条件表达式(exp) ?  a++:b--,则以下表达式中能完全等价于表

    达式(exp)的是:

    A)  (exp==0)       B)  (exp!=0)

    C)  (exp== 1)      D)  (exp!=1)   

*53  D  

C语言中,能代表逻辑值“真”的是      。

A.true

B.大于0的数

C.非0整数

D.非0的数

*54  D 

已知:

struct

{int i;char c;float a;}ex;

则ex所占内存空间为       .

A.4      B. 5      C. 6     D.7

*55  B

对for(表达式1;;表达式3)可以理解为      

  A.for(表达式1;0;表达式3)

  B.for(表达式1;1;表达式3)

  C.for(表达式1;表达式1;表达式3)

  D.for(表达式1;表达式3;表达式3)

*56  C 

设有程序段

  int  k=10;

  while  (k=0)  k= k-1;

  则下面描述中正确的是

A)  while循环执行10次      B)循环是无限循环

C)循环体语句一次也不执行    D)循环体语句执行一次

*57  B

有以下程序段

    int  x=0,s=0;

    while  (!  x!= 0)  s+=++x;

    printf("%d",s);

    则

A)运行程序段后输出0                 B)运行程序段后输出1

C)程序段中的控制表达式是非法的       D)程序段执行无限次

*58 A

语句while(!E)中的表达式!E等价于:

A)  E==0       B)  E!=1       C)  E!=0    D)  E==1

*59 C

  以下定义整型3行4列的二维数组a并初始化,不正确的是       

  A.int a[3][4]={0};

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

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

  D.int a[3][4]={ {1,2},{1,2,3},{1,2,3,4}};

*60  C 

下面程序段的运行结果是

  if    n=0;

  while(n++<=2);  printf("%d",n); 

A)  2          B)  3            C)  4         D)有语法错

*61 A

在链表数据中,任意一个数据项都包含一个      项和一个指针项。

A)  数据项         B)  地址项           C)  参数项         

*62   C

以下描述中正确的是:

     A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

     B)  do一while循环由do开始,用while结束,在while(表达式)后面不能写分号

     C)在do一while循环体中,一定要有能使while后表达式值变为零("假")的操作

     D)do一while循环中,根据情况可以省略while

*63  B

若有如下语句

 int  x=3;

 do { printf(" %d\n",x -=2);} while(!(--x));

    则上面程序段

    A)输出的是 1         B)输出的是1和-2

    C)输出的是3和0      D)是死循环

*64 C

下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。

    #i nclude<stdio. h>

main()

       {int  n,sum=0;

n=2345

do{ sum=sum+(n%10)*n%10}; 

n=【2】;

}while(n);

printf("sum=%d",sum);} 

【2】 A)  n/1000    B)n/100      C)  n/10     D)  n%10

*65  B 

调用函数时,实参是一个数组名,则向函数传送的是   

A.数组长度               B. 数组的首地址 

C.数组元素                D. 数组最后一个元素地址

*66   C

在c语言中,引用数组元素时,其数组下标的数据类型允许是__.

        A)整型常量                 B)整型表达式

        C)整型常量或整型表达式     D)任何类型的表达式

*67    D

以下对一维整型数组a的正确说明是__。

        A)  int a(10);        B)int n= 10,a[n];

        c)  int  n;           D)  #define  SIZE  10;

            scanf("%",&J1);       int a[SIZE];

            int a[n];

*68    D

若有说明:int a[10];则对a数组元素的正确引用是__。

        A)a[10]      B) a[3.5]     C) a[5]     D) a[10-10]

*69 A

在C语言中,一维数组的定义方式为:,类型说说明符 数组名__。

A) [常量表达式]                B) [整形表达式]    

c)[ 整型常量]或[整型表达式]    D)[整型常量]

*70  C

以下能对一维数组a进行正确初始化的语句是__。

A)  int a[10]=(0,0,0,0,0)        B)int  a[10]={}

C)  int  a[]={0};                D) int a[10]={10*1};

*71   C

以下对二维数组a的正确说明是__。

      A)  int a[3][];        B)  floatf a(3,4);

      C)  double a[1][4];    D)  float a(3)(4);

*72 C 

若有说明:int a[3][4]; 则对a数组元素的正确引用是__。

 A)  a[2][4]     B) a[1,3]     C) a[1+1][0]    D) a(2)(1);

*73  D  

若有说明:int a[3][4];则对a数组元素的非法引用是__。

A) a[0][2*1]     B) a[1][3]      C)a[4-2][0]       D)a[0][4]

74 A  D  

c语言中      为指针运算符,      为取地址运算符。

若有说明:int a[3][4];则对a数组元素的非法引用是__。

A)  *     B) -      C)%      D)&

75 A D   

c语言中      函数为打开文件,      寒舍为关闭文件。

若有说明:int a[3][4];则对a数组元素的非法引用是__。

A)  fclose    B) fseek      C)fopen     D)frind

猜你喜欢

转载自blog.csdn.net/qq_44761243/article/details/108391911