导航菜单

搜题公众号

超星尔雅C语言程序设计答案


第2讲 数据已完成

1

【单选题】

以下各项中,不能作为合法常量的是(   )。

A、

1.234e04

B、

 1.234e0.4

C、

1.234e+4

D、

1.234e0

我的答案:B

2

【单选题】

以下各项中,符合C语言语法规定的实型常量是(   )。

A、

1.2E0.5

B、

3.14.159E      

C、

.5E-3

D、

E15

我的答案:C

3

【单选题】

以下各个项中,可作为C语言中合法整数的是(   )。

A、

10110B

B、

0386

C、

0Xffa

D、

x2a2

我的答案:C

4

【单选题】

在VC中,若定义double b;,则变量b在内存中分配的字节数是( )

A、

1

B、

2

C、

4

D、

8

我的答案:D

5

【单选题】

下列定义变量的语句中错误的是( )

A、int _int;

B、double int_;

C、char For;

D、float US$;

我的答案:D

6

【单选题】

C语言中,最基本的数据类型是( )

A、

整型,实型,逻辑型

B、

整型,实型,字符型

C、

整型,字符型,逻辑型

D、

整型,实型,字符型,逻辑型

我的答案:B

第4讲测验已完成

1

【单选题】

若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。

A、scanf("%d,%f”, &a, &c);

B、scanf("d=%d, c=%f”, &a, &c);

C、scanf("%d%f”, &a, &c);

D、

scanf("%d%f”, a, c);

我的答案:D

2

【单选题】

程序员要想调用输入输出函数,需要在程序的开头写上语句( )。

A、#include <stdlib.h>

B、#include <stdio.h>

C、#include <math.h>

D、#include <string.h>

我的答案:D

3

【单选题】

已定义 int a = -2;和输出语句printf("%8lx",a);以下正确的叙述是

A、整型变量的输出只有%d一种

B、%x是格式符的一种,它可以适用于任何一种类型的数据

C、%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的

D、

%8lx不是错误的格式符,其中数字8规定了输出字段的宽度

我的答案:D

4

【单选题】

若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。

A、

scanf("%d,%f”, &a, &c);

B、

scanf("d=%d, c=%f”, &a, &c);

C、

scanf("%d%f”, &a, &c);

D、

scanf("%d%f”, a, c);

我的答案:D

5

【单选题】

设有定义:int a; float b; ,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 <空格>543.0<回车>,则a和b的值分别是( )

A、

87 和 6.0

B、

876 和 543.0

C、

87 和 543.0

D、

76 和 543.0

我的答案:A

6

【单选题】

已知字符 'a' 的ASCII码为 97,执行下列语句的输出是____。

printf ("%d, %c", 'b', 'b'+1 ) ;

A、

98, b

B、

语法不合法

C、

98, 99

D、98, c

我的答案:D

7

【单选题】

有以下程序:

 main()

 {  

     int m=0256, n=256;

     printf("%o %o\n", m, n);

}

运行程序后的输出结果是(   )。

A、0256 0400

B、0256 256

C、256 400

D、400 400

我的答案:D

8

【单选题】

有以下程序:

 main()

 { 

    int a;  char c=10;

    float f=100.0;    double x;

    a=f/=c*=(x=6.5);

    printf("%d  %d  %3.1f  %3.1f\n", a, c, f, x);

}

运行程序后的输出结果是(   )。

A、

1  65  1  6.5

B、

1   65   1.5   6.5

C、

1  65  1.0  6.5

D、

2   65   1.5   6.5

我的答案:D

第3讲测验已完成

1

【单选题】

假设字符变量ch中存放有小写英文字母,将其转换为相应的大写英文字母的表达式是 ( ) 。

A、

ch = ch-'a'+'A'

B、

ch = ch+32

C、

tolower(ch)

D、

ch -= 'a'+'A'

我的答案:A

2

【单选题】

若x为浮点型,则表达式x=10/4为( )。

A、

2.5

B、

2.0

C、

2

D、

3

我的答案:B

3

【单选题】

若有定义“char a; int b; float c; double d;”,则表达式“a*b+d-c”值的类型为____。

A、float

B、

int

C、

char

D、

double

我的答案:D

4

【单选题】

若" int n; float f=13.8; ",则执行"n=(int)f%3"后,n的值是( )。

A、

1

B、

4

C、

4.33333

D、

4.6

我的答案:A

5

【单选题】

若变量已正确定义,表达式 (j=3, j++) 的值是____。

A、

3

B、

4

C、

5

D、

6

我的答案:A

6

【单选题】

对于数学表达式2x+(a+b)÷3sinx,对应的C表达式是( )

A、2x+(a+b)/3sin(x)

B、2x+(a+b)/(3sin(x))

C、2*x+(a+b)/3/sin(x)

D、2*x+(a+b/3/sin(x))

我的答案:C

7

【单选题】

设有定义“int k = 0;”,下列选项的4个表达式中与其他3个表达式的值不相同的是____。

A、

k++

B、

k+=1

C、++k

D、

k+1

我的答案:A

8

【单选题】

下列关于单目运算符++、--的叙述正确的是____。

A、它们的运算对象可以是任何变量和常量

B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D、它们的运算对象可以是char型变量、int型变量和float型变量

我的答案:D

9

【单选题】

设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(   )。

A、

6.500000 

B、

C、

5.500000 

D、

6.000000

我的答案:D

10

【单选题】

设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的语句是(   )。

    

A、

x=x*100+0.5/100.0

B、

x=(x*100+0.5)/100.0

C、

x=(int)(x*100+0.5)/100.0

D、

x=(x/100+0.5)*100.0

我的答案:C

11

【填空题】

对程序填空,程序中a、b、c代表一元二次方程的三个系数,要求输出方程的两个根。

main()

{

    int a=1, b=3, c=2;

   printf("x1=%f \n",    第1空 );

   printf("x2=%f\n",  第2空   );

}

我的答案:

第一空: 

(-b+sqrt(b*b-4*a*c))/(2*a)

第二空:(-b-sqrt(b*b-4*a*c))/(2*a) 

选择-测验已完成

1

【单选题】

以下程序运行时,输入的x值在( )范围时才会有输出结果。

843bed4b-676f-4caa-8123-b4e56d11f3a0.png

A、

不等于10的整数

B、

大于3且不等于10的整数

C、

大于3且等于10的整数

D、

小于3的整数

我的答案:B

2

【单选题】

判断 i 和 j 至少有一个值为非0的表达式是____。

A、

i!=0 && j!=0

B、

i+j!=0

C、

i || j

D、

i&&j

我的答案:C

3

【单选题】

表达式__不能用于判断“x和y不同时为零”。

A、

x!=0 || y!=0

B、

x || y

C、

!(x==0 || y==0)

D、

!(x==0 && y==0)

我的答案:C

4

【单选题】

表达式8>6>3值是( )。

A、

0

B、

1

C、

3

D、

表达式语法错

我的答案:A

5

【单选题】

为表示关系x≥y≥z,应使用C语言表达式( )。

A、

(x>=y)&&(y>=z)

B、

(x>=y)AND(y>=z)

C、

(x>=y>=z)

D、

(x>=y)&(y>=z)

我的答案:D

6

【单选题】

表达式(x%3)等价于表达式( )。

A、

x%3 == 2

B、

x%3 != 0

C、

x%3 == 1

D、

x%3 == 0

我的答案:B

7

【单选题】

如果要求在if后一对括号中的表达式在表示a 不等于 0 的时候的值为“真”,则能正确表示这一关系的表达式为( )。

A、

a<>0

B、

!a

C、

a=0

D、

a

我的答案:D

8

【单选题】

设变量已正确定义,以下( )与其它switch语句不等价。 

A、

switch(op){

    case '+': printf("%d\n", value1 + value2); break;

    case '-': printf("%d\n", value1 - value2); break;

    case '*': printf("%d\n", value1 * value2); break;

    default: printf("Error\n"); break;

}

B、

switch(op){

    default: printf("Error\n"); break;

    case '*': printf("%d\n", value1 * value2); break;

    case '-': printf("%d\n", value1 - value2); break;

    case '+': printf("%d\n", value1 + value2); break;

}

C、

if(op != '+' && op != '-' && op != '*'){

    printf("Error\n");

}else{

    switch(op){

        case '+': printf("%d\n", value1 + value2); break;

        case '-': printf("%d\n", value1 - value2); break;

        case '*': printf("%d\n", value1 * value2); break;

    }

}

D、

switch(op){

    case '+': printf("%d\n", value1 + value2); break;

    case '-': printf("%d\n", value1 - value2); break;

    case '*': printf("%d\n", value1 * value2); break;

}

我的答案:D

9

【单选题】

以下关于switch语句和break语句的描述中正确的是( )

A、

在switch语句中必须使用break语句

B、

break语句只能用于switch语句体中

C、

break语句只能用于循环语句中

D、

在switch语句中可以不使用break语句

我的答案:D

10

【单选题】

下列程序段的输出结果是

#include <stdio.h>

int main(void)

{

int m, k = 0, s = 0;

for (m = 1; m <= 4; m++) {

switch (m % 4) {

case 0:

case 1: s += m; break;

case 2:

case 3: s -= m; break;

}

k += s;

}

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

return 0;

}

A、

10

B、

-2

C、

-4

D、

-12

我的答案:D

循环-测验已完成

1

【单选题】

设有程序段

int m=20;

 while (m=0) m=m++;

A、

while 循环执行 10 次

B、

循环是无限循环

C、

循环体语句一次也不执行

D、

循环体语句执行一次

我的答案:C

2

【单选题】

下列程序段执行后s的值为( )。

  int i=5, s=0;

  while(i--)  

      if (i%2) continue;

      else s+=i;

A、

15

B、

10

C、

9

D、

6

我的答案:D

3

【单选题】

以下程序段的输出结果是()。 

int main()

{   

      int  num = 0, s = 0;

      while(num <= 2)

      {

            num ++; 

            s += num;  

      }

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

      return 0;

}

A、

10

B、

6

C、

3

D、

1

我的答案:D

4

【单选题】

下列叙述中正确的是()。

A、

do-while语句构成的循环不能用其他语句构成的循环来代替

B、

do-while语句构成的循环只能用break语句退出

C、

用do-while语句构成的循环,在while后的表达式为非零时结束循环

D、

用do-while语句构成的循环,在while后的表达式为零时结束循环

我的答案:D

5

【单选题】

以下程序段若要使输出值为2,则应该从键盘给n输入的值是

int s = 0, a = 1, n;

scanf("%d", &n);

do

 {

s += 1; a = a - 2;

} while (a != n);

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

A、

-1

B、

-3

C、

-5

D、

0

我的答案:D

6

【单选题】

下面的这个循环的循环次数是( )。 

int i,j;

for( i=0,j=10; i=j=10; i++,j--)

A、

语法错误,不能执行

B、

无限次

C、

10

D、

1

我的答案:B

7

【单选题】

语句for (表达式1; ; 表达式3)等价于?( )

A、

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

B、

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

C、

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

D、

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

我的答案:B

8

【单选题】

要求以下程序的功能是计算:s=1+

2

1

  + 

3

1

  + ... + 

10

1

 ,但运行后输出结果错误,导致错误结果的程序行是 

#include <stdio.h>

int main(void)

{

int n; float s;

s = 1.0;

for (n = 10; n > 1; n--)s = s + 1 / n;

printf("%6.4f\n", s);

return 0;

}

A、

int n; float s;

B、

for (n = 10; n > 1; n--)

C、

s = s + 1 / n;

D、

s = 1.0;

我的答案:D

9

【单选题】

循环 for(i=0, j=5; ++i!=--j; ) printf(“%d %d”, i, j); 将执行_。

A、

6

B、

3

C、

0

D、

无限次

我的答案:D

10

【单选题】

下列程序段的输出结果是()。

int main(void) 

{

      int i;

      for( i = 1; i < 6; i ++) {

            if( i % 2 != 0) { 

                  printf("#");

                  continue;  

            }

      printf("*");     

      }

      printf("\n");    

      return 0;

}

A、

#*#*#

B、

#####

C、

*****

D、

*#*#*

我的答案:D

循环-测验-2已完成

1

【单选题】

下列叙述中正确的是()。

A、

break 语句只能用于 switch 语句体中

B、

continue语句的作用是使程序的执行流程跳出包含它的所有循环

C、

break 语句只能用在循环体内和 switch 语句体内

D、

在循环体内使用 break语句和 continue 语句的作用相同

我的答案:D

2

【单选题】

运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为()。

int main(void)

{  

      int  m, n;

      printf("Enter m,n;");   

      scanf("%d%d", &m,&n);

      while (m != n)

      {   while (m > n)       m = m - n;

          while (n > m)       n = n - m;    

      }

      printf("m=%d\n",m);    

      return 0;

}

A、m=3

B、

m=2

C、

m=1

D、

m=0

我的答案:D

3

【单选题】

若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是 

for (i = 5; i; i--)

    for (j = 0; j < 4; j++) {...}

A、

20

B、

25

C、

24

D、

30

我的答案:A

4

【单选题】

以下程序段的输出结果是 

int i, j;

for (i = 1; i < 4; i++) {

for (j = i; j < 4; j++)

printf("%d * %d = %d  ", i, j, i * j);

printf("\n");

}

A、

1 * 1 = 1  1 * 2 = 2  1 * 3 = 3

2 * 1 = 2  2 * 2 = 4

3 * 1 = 3

B、

1 * 1 = 1  1 * 2 = 2  1 * 3 = 3

2 * 2 = 4  2 * 3 = 6

3 * 3 = 9

C、

1 * 1 = 1

1 * 2 = 2  2 * 2 = 4

1 * 3 = 3  2 * 3 = 6  3 * 3 = 9

D、

1 * 1 = 1

2 * 1 = 2  2 * 2 = 4

3 * 1 = 3  3 * 2 = 6  3 * 3 = 9

我的答案:D

模块化程序设计已完成

1

【单选题】

在一个被调用函数中,关于 return 语句使用的描述,错误的是( )

A、

被调用函数中可以不用 return 语句

B、

被调用函数中可以使用多个 return 语句

C、

被调用函数中,如果有返回值,就一定要有 return 语句

D、

被调用函数中,一个 return 语句可以返回多个值给调用函数

我的答案:D

2

【单选题】

对于以下递归函数f,调用f(4),其返回值为() 。

int f(int n)

{  

     if (n)  return f(n - 1) + n;

     else return n;

}

A、

10

B、

4

C、

0

D、以上均不是

我的答案:A

3

【单选题】

C语言中函数返回值的类型是由( )决定的。

A、

return语句中的表达式类型

B、

调用该函数的主调函数的类型

C、

调用函数时临时决定

D、

定义函数时所指定的函数类型

我的答案:D

4

【单选题】

以下( )函数的定义是错误的? 

A、

void f(int i) { return i+1; }

B、

void f( ) { }

C、

void f(int i) { }

D、

int f( ) { return 0; }

我的答案:A

5

【单选题】

以下函数值的类型是()。

fun(float x)

{

   float y;

   y=3*x-4;

   return y;

}   

A、

int

B、

不确定

C、

void

D、

float

我的答案:A

6

【单选题】

调用函数f(27)的输出结果是( )。

void f(int n)

{  if(n<5)

     printf("%d", n);

   else{

     printf("%d", n%5);

     f(n/5);

   }

}

A、

102

B、

201

C、

21

D、

20

我的答案:B

7

【单选题】

一个递归算法必须包括()。

A、

递归部分

B、

终止条件和递归部分

C、

循环部分

D、

终止条件和循环部分

我的答案:B

8

【单选题】

有如下函数调用语句: func(rec1, rec2+rec3, (rec4, rec5)); 则该函数调用语句中,含有的实参个数是( )。

A、

3

B、

4

C、

5

D、

有语法错

我的答案:A

9

【单选题】

在C语言中,下列错误的说法是。 

A、

函数可以递归调用

B、

不允许在函数定义中再定义函数

C、

递归程序不可能用非递归算法实现

D、

对于continue语句,可以通过改变程序的结构而不使用它

我的答案:C

10

【单选题】

对于以下递归函数 f ,调用 f(4),其返回值为( )。

int f(int n)

{ return f(n-1)+n; }

A、

10

B、

11

C、

0

D、

以上均不是

我的答案:D

变量存储属性及预编译已完成

1

【单选题】

下列程序的输出结果是( )。 

# include <stdio.h>

int f(int n)

static int k, s;

n--;

for(k=n; k>0; k--)

s += k;  

return s;

}

int main(void)

int k;

k=f(3);

printf("(%d,%d)", k, f(k));

return 0;

}

A、

(3,3)

B、

(6,6)

C、

(3,6)

D、

(6,12)

我的答案:C

2

【单选题】

函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为( )。

int f(int m)                      

{  static int i=0; 

   int s=0;            

   for(;i<=m;i++) 

s+=i; 

   return s;

}

A、

21

B、

16

C、

15

D、

8

我的答案:C

3

【单选题】

凡是函数中未指定存储类别的局部变量,其隐含的存储类别是____。

A、

auto

B、

register

C、

extern

D、

static

我的答案:A

4

【单选题】

如果要一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,则这个变量的存储类型应该被说明为( )。

A、

自动变量

B、

静态变量

C、

外部变量

D、

寄存器变量

我的答案:D

5

【单选题】

下面关于形参和实参的说法中,正确的是( )。

A、

形参是虚设的,所以它始终不占存储单元。

B、

实参与它所对应的形参占用不同的存储单元。

C、

实参与它所对应的形参占用同一个存储单元。

D、

实参与它所对应的形参同名时可占用同一个存储单元。

我的答案:B

6

【单选题】

如果所有的变量按照下面的程序进行定义和声明,那么在main()函数中所有可用的变量为 ()。

void fun(int x)

{  

    static int y;

    ……

    return;

}

int z;

void main( )

{   

    int a,b;

    fun(a);

    ……

}

A、

x,y

B、

x,y,z

C、

a,b,z

D、

a,b,x,y,z

我的答案:C

7

【单选题】

宏定义“#define DIV(a, b) a/b”,经DIV(x + 5, y - 5) 引用,替换展开后是()。

A、

x + 5 / y - 5

B、

(x + 5 / y – 5)

C、

(x + 5) / (y - 5)

D、

(x + 5) / (y - 5);

我的答案:A

一维数组已完成

1

【单选题】

若有定义,int a[10];,则对数组a元素的正确引用是( )

A、

a[10]

B、

a[3.5]

C、

a(5)

D、

a[10-10]

我的答案:D

2

【单选题】

假定int类型变量占用两个字节,其有定义:int x[10]={0, 2, 4}; 则数组x在内存中所占字节数是()。

A、

3

B、

6

C、

10

D、

20

我的答案:D

3

【单选题】

以下正确地定义了一维整型数组a的语句组是( )

A、

int a(10) ;

B、

int n=10,a[n];

C、

int n; scanf(“%d”,&n); int a[n];

D、

int a[SIZE];(在程序开始有#define SIZE 10)

我的答案:D

4

【单选题】

下面程序的运行结果是( )

#include<stdio.h>

int main()

{

   int a[]= {2,3,5,4},i;

   for(i=0; i<4; i++)

       switch(i%2)

       {

       case 0:

           switch(a[i]%2)

           {

           case 0:

               a[i]++;

               break;

           case 1:

               a[i]--;

           }

           break;

       }

   for(i=0; i<4; i++)

       printf("%2d",a[i]);

   printf("\n");

   return 0;

}  

A、

3 3 4 4

B、

2 0 5 0

C、

3 0 4 0

D、

0 3 0 4

我的答案:D

5

【单选题】

下面的程序段将输出 ▁▁▁▁▁ 。

double a[] = {1, 2, 3, 4, 5};

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

A、

0

B、

5

C、

40

D、

48

我的答案:D

二维数组及其他已完成

1

【单选题】

以下数组定义中错误的是( )。

A、

int x[][3]={0};

B、

int x[2][3]={{1,2},{3,4},{5,6)};

C、

int x[][3]={{1,2,3},(4,5,6)};

D、

int x[2][3]={1,2,3,4,5,6};

我的答案:B

2

【单选题】

数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素____的值为6。

A、

a[3][2]

B、

a[2][1]

C、

a[1][2]

D、

a[2][3]

我的答案:B

3

【单选题】

有说明语句int a[4][5];,则a[2]+3表示__。

A、

a数组行下标为2、列下标为3的元素的地址

B、

a数组行下标为2、列下标为3的元素的值

C、

a数组第2行的首地址

D、

a数组第3行的首地址

我的答案:A

4

【单选题】

在int a[ ][3] = { {1,4}, {3,2}, {4,5,6}, {0} };中,a[2][1]的值是( )。

A、

5

B、

0

C、

6

D、

2

我的答案:A

5

【单选题】

下列字符串赋值语句中,不能正确把字符串"Hello World"赋给数组的语句是() 

A、

char a1[]={'H','e ','l','l','o',' ','W','o','r','l','d','\0'};

B、

char a2[15]; strcpy(a2,"Hello World");

C、

char a3[15]; a3="Hello World";

D、

char a4[15]={"Hello World"};

我的答案:D

6

【单选题】

对于定义 char str[] = "abc\000def\n"(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是:

A、

12 ,13

B、

3 ,11

C、

3 ,9

D、

3 ,4

我的答案:D

7

【单选题】

有两个字符数组a,b,则以下正确的输入语句是() 

A、

gets(a,b);

B、

scanf("%s%s",a,b);

C、

scanf("%s%s",&a,&b);

D、

gets("a"),gets("b");

我的答案:D

8

【单选题】

若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。

A、

数组首地址

B、

数组的第一个元素值

C、

数组中全部元素的值

D、

数组元素的个数

我的答案:A

9

【单选题】

判断字符串a和b是否相等,应当使用()

A、

if (a==b)

B、

if (a=b)

C、

if (strcpy(a,b))

D、

if (strcmp(a,b)==0)

我的答案:D

10

【单选题】

以下程序的输出结果是()。

int main(void)

{

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

      int i, s=0;

      for(i=0; i<4; i++) 

            s += aa[i][1];

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

     return 0;

}

A、

11

B、

19

C、

13

D、

20

我的答案:D

指针基础已完成

1

【单选题】

若定义pf为指向float类型变量f的指针,下列语句中__是正确的。

A、

float f, *pf = f;

B、

float f, *pf = &f;

C、

float *pf = &f, f;

D、

float f, *pf =0.0;

我的答案:D

2

【单选题】

若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, ( )是正确的。

A、

p2 = p1;

B、

p2 = **p1;

C、

p2 = &p1;

D、

p2 = *p1;

我的答案:A

3

【单选题】

若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于____。

A、

p++

B、

x++

C、

*(p++)

D、

&x++

我的答案:B

4

【单选题】

下面程序的输出结果是( )。

#include<stdio.h>

void fun (int *x, int *y)

{

  printf("%d%d", *x,*y);

  *x=3;  *y=4;

}

int main(void)

{

  int x=1,y=2;  

  fun(&x,&y);  

  printf("%d%d", x, y);

  return 0;

}

A、

2 1 3 4

B、

1 2 1 2

C、

1 2 3 4

D、

2 1 1 2

我的答案:C

5

【单选题】

执行下面程序段后,a的值为( )。

int *p,a=10,b=1;

p=&a; 

a=*p+b;

A、

12

B、

11

C、

10

D、

编译错误

我的答案:B

6

【单选题】

在说明语句“ int *f( );”中,标识符 f 代表是( )。

A、

一个用于指向整型数据的指针变量

B、

一个用于指向一维数组的行指针

C、

一个用于指向函数的指针变量

D、

一个返回值为指针型的函数名

我的答案:D

7

【单选题】

int *p 的含义是

A、

p是一个指针, 用来存放一个整型数

B、

p是一个指针, 用来存放一个整型数据在内存中的地址

C、

p是一个整型变量

D、

以上都不对

我的答案:D

8

【单选题】

下面程序运行后的输出结果是____。

#include <stdio.h>

int main() 

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

    return 0;

A、

0

B、

1

C、

-1

D、

NULL没定义,出错

我的答案:D

指针与数组已完成

1

【单选题】

根据声明int a[10], *p=a; ,下列表达式错误的是( )。

A、

a[9]

B、

p[5]

C、

a++

D、

*p++

我的答案:C

2

【单选题】

设变量定义为 int a[2]={1,3}, *p=&a[0]+1;,则*p的值是( )。

A、

2

B、

3

C、

4

D、

&a[0]+1

我的答案:B

3

【单选题】

下面程序的运行结果是()。

#include<stdio.h>

int main(void)

{  

      int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;

      p = x;

      pp = &p;

      printf(“%d ”, *(p++));

      printf(”%d\n”, **pp);

      return 0;

}

A、

4 4

B、

2 4

C、

2 2

D、

4 6

我的答案:D

4

【单选题】

根据声明int (*p)[10], p是一个( )。

A、

数组

B、

指针

C、

函数

D、

数组的元素

我的答案:B

5

【单选题】

 假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是__。

A、

char s[5]={"ABCDE"}; puts(s);

B、

char s[5]={'A', 'B', 'C', 'D', 'E'}; puts(s);

C、

char *s; scanf("%s", s); puts(s);

D、

char *s; s="ABCDE"; puts(s);

我的答案:D

6

【单选题】

若有定义:int *p[3]; 则以下叙述中正确的是( )。

A、

定义了一个基类型为int的指针变量p,该变量具有三个指针

B、

定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C、

定义了一个名为*p的整型数组,该数组含有三个int类型元素

D、

定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

我的答案:D

7

【单选题】

存在定义int a[10], x, *pa; , 若pa=&a[0], 下列的哪个选项和其他3个选项不是等价的?

A、

x=*pa;

B、

x=*(a+1);

C、

x=*(pa+1);

D、

x=a[1];

我的答案:A

8

【单选题】

如果char cc[]="12345",sizeof(cc)的值应为( )。

A、

2

B、

5

C、

6

D、

1

我的答案:C

结构体与共用体已完成

1

【单选题】

有如下定义:

struct Student{

    char name[10];

    int age;

    char gender;

}std[3], *p=std;

则以下各输入语句中错误的是:

A、

scanf("%d",&(*p).age);

B、

scanf("%c",&std[0].gender);

C、

scanf("%c",&(p->gender));

D、

scanf("%s",&std.name);

我的答案:D

2

【单选题】

若有下列语句,则以下引用方式不合法的是( )。 

struct student

{  int num;

   int age;

};

struct student stu[3]={{101,20}, {102,19}, {103,20}}, *p=stu;

A、

(p++)->num

B、

p++

C、

(*p).num

D、

p=&stu.age

我的答案:D

3

【单选题】

定义下列结构体(联合)数组:

struct st { char name[15]; 

int age; }

a[10]={"ZHAO",14, "WANG",15, "LIU",16, "ZHANG",17 }; 

执行语句printf["%d,%c",a[2].age, *(a[3].name+2))的输出结果为() 

A、

15, A

B、

16, H

C、

16, A

D、

17, H

我的答案:C

4

【单选题】

以下程序运行后的输出结果是____。

#include<stdio.h>

struct s

{

  int x;

  int y;

} data[2] = {10, 100, 20, 200};

int main()

{

  struct s *p = data + 1;

  printf("%d\n", p->x);

  return 0;

}

A、

10

B、

11

C、

20

D、

21

我的答案:D

5

【单选题】

若有以下语句,则下面表达式的值为1002的是()。

  struct student

   {int age;

   int num;};

struct student stu[3]={{1001,20},{1002,19},{1003,2}};

struct student *p;

p=stu;

A、

(p++)->num

B、

(p++)->age

C、

(*p).num

D、

(*++p).age

我的答案:D

链表已完成

1

【单选题】

在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。

A、

p->next=q->next; q->next=p;

B、

q->next=p->next; p=q;

C、

p->next=q->next; p->next=q;

D、

q->next=p->next; p->next=q;

我的答案:D

2

【单选题】

在一个单链表head中,若要删除指针p所指结点的后继结点,则执行()。

A、

p=p->next;free(p);

B、

p->next=p->next->next; free(p);

C、

q= p->next q->next=p->next; free(q);

D、

q=p->next; p->next=q->next; free(q);

我的答案:D

3

【单选题】

链表不具有的特点是()。

A、

 插入、删除不需要移动元素

B、

可随机访问任一元素

C、

不必事先估计存储空间

D、

所需空间与线性长度成正比

我的答案:B

4

【单选题】

设有如下定义的链表,则值为7的表达式是( )。

struct st{

     int n;

     struct st *next;} a[3] = {5, &a[1], 7, &a[2], 9, NULL}, *p = &a;

A、

p->next->n

B、

(++p)->n

C、

(p->n)++

D、

p->n

我的答案:A


发表评论