【PTA】客观题NO.9

1-1

如果strcmp(s1,s2)返回的结果为0,表示字符串s1和s2不相同。

语法/原型:

int strcmp(const char* stri1,const char* str2);

参数 str1 和 str2 是参与比较的两个字符串。
strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不同的字符,或者到达字符串末尾(遇见\0)。
返回值:

  • 如果返回值 < 0,则表示 str1 小于 str2。
  • 如果返回值 > 0,则表示 str2 小于 str1。
  • 如果返回值 = 0,则表示 str1 等于 str2。

T

F

1-2

c语言的数组下标从0开始。

(1分)

T

F

1-3

数组初始化时,初始值个数小于数组元素的个数,C语言自动将剩余的元素初始化为初始化列表中的最后一个初始值

字符数组 \0

整型数组 0

(1分)

T

F

1-4

数组定义后,数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址是一个常量,不能被修改。

(1分)

T

F

1-5

== can be used to compare two strings.

(1分)

T

F

1-6

指向数组元素的指针只可指向数组的首元素。

(1分)

T

F

1-7

数组定义后,数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。

(1分)

T

F

1-8

二维数组的元素在内存中按行/列方式存放,即先存放第0行的元素,再存放第1行的元素……其中每一行的元素再按照列的顺序存放。

(1分)

T

F

1-9

若有定义int a[]={2,4,6,8,10},a[1]和a++表示的含义相同。

a[1] == *(a+1)

a++不允许!a是常量!

T

F

(0 分)


1-10

数组的长度可以是变量。

(1分)

T

F

1-11

执行语句int *p = 1000;后,指针变量p指向地址为1000的变量。

(1分)  p是指针, p=1000 是把p指向了地址为1000的值(没实际意义

T

F

1-12

不同类型的指针变量是可以直接相互赋值的。

(1分)

T

F

1-13

要通过函数调用来改变主调函数中某个变量的值,可以把指针作为函数的参数。

(1分)

T

F

1-14

对于定义int a[10],*p=a; 语句p=a+1;a=a+1;都是合法的。

a是常量!

T

F

1-15

在C语言中,数组名是不可改变的,不能对它进行赋值运算

(1分)

T

F

2-1

为了判断两个字符串s1和s2是否相等,应当使用下列哪个语句( )。

(2分)

A.

if(s1==s2);

B.

if(strcmp(s1,s2)==0);

C.

if(s1=s2);

D.

if(strcpy(s1,s2));

2-2

设有二维数组定义及初始化 int a[][3] = {{1,4}, {3,2}, {4,5,6}, {0}}; 则元素 a[2][1] 的值是______。

(2分)

A.

2

B.

5

C.

6

D.

4

2-3

一维数组初始化 以下关于数组定义时进行初始化的描述中,( )选项是错误的。

(2分)

A.

int d[5]; 数组d中的值是无法预知。

B.

int d[5]={0}; 数组d中的值全为0;

C.

int d[5]={1}; 数组d中的值全为1;

D.

int d[5]={1}; 数组d中的值第1个为1,其余均为0;

2-4

若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是( ).

(2分)

A.

strcpy(a,b);

B.

trcat(b,a);

C.

b=a;

D.

strcpy(b,a);

2-5

下述对C语言字符数组的描述错误的是( )

(2分)

A.

字符数组可以存放字符串

B.

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

C.

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

D.

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

2-6

在C/C++语言中引用数组元素时,数组下标的要求,下列选项中最合适的是( ) 。

(2分)

A.

整型常量

B.

整型变量

C.

整型表达式

D.

任何类型的表达式

2-7

有数组初始化语句“int a[] ={1,2,3,4,5,6,7,8,9,10};”,则数值最小和最大的元素下标分别是( )。

(2分)

A.

1,10

B.

0,9

C.

1,9

D.

0,10

2-8

有数组定义语句“int i=3,a[20];”,则元素引用错误的是( ) 。

(2分)

A.

a[7*i-1]

B.

a[2*i*i+1]

C.

a[3*i+1]

D.

a[0]

2-9

有初始化语句“int a[3][4]={1,3,5,7,9};”,则a[1][2]的值为( )。

(2分)

A.

0

B.

3

C.

5

D.

9

2-10

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

(2分)

A.

a[9]

B.

p[5]

C.

a++

D.

*p++

2-11

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

# 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;

}

(2分)

A.

2134

B.

1212

C.

1234

D.

2112

2-12

已有定义int k=2; int *ptr1, *ptr2; ptr1ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。

(2分)

A.

k = *ptr1 + *ptr2;

B.

ptr2 = k;

C.

ptr1 = ptr2;

D.

k = *ptr1 *(*ptr2);

2-13

执行以下程序后,y的值是:

int main ( )

 {

    int a[]={2,4,6,8,10};

    int y=1,x,*p;

    p=&a[1];

    for(x=0;x<3;x++)

     y + = * (p + x);

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

    return 0;

 }

(2分)

A.

17

B.

18

C.

19

D.

20

2-14

下列程序的执行结果是( )。

void fun ( int  *p )

{ (*p)++;

}

main(  )

{ int a=5;

  fun(&a);

  printf("%d",a);

}

(2分)

A.

5

B.

a

C.

6

D.

程序有误

2-15

变量的指针是指变量的( )。

(2分)

A.

B.

地址

C.

D.

内存单元

2-16

执行语句char a[10]={"abcd"}; *p=a;后,*(p+4)的值是( )。

(2分)

A.

"abcd"

B.

'd'

C.

'\0'

D.

不能确定

2-17

若有定义int(*p)();标识符p可以( )。

一个指向函数值为整数的函数指针

函数指针

定义

函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针

声明格式:类型说明符 (*函数名) (参数)

如下:

int (*fun)(int x,int y);

1

函数指针是需要把一个函数的地址赋值给它:

fun = &Function

fun = Function;

调用函数指针的方式:

x = (*fun)();

x = fun();

指针函数

定义

指针函数,是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。

声明格式为:*类型标识符 函数名(参数表)

int *fun(int x,int y);

这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。

A.

表示函数的返回值

B.

指向函数的入口地址

C.

表示函数的返回类型

D.

表示函数名

2-18

若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是( )。

(2分)

A.

(*p)max(a,b)

B.

*pmax(a,b);

C.

(*p)(a,b);

D.

*p(a,b);

2-19

请问下列程序的执行结果是( )

void fun(int *p,int n)

{

    int i;

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

        (*p)++;

}

int main()

{

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

    fun(a,5);

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

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

    return 0;

}

(2分)

A.

1 2 3 4 5

B.

2 3 4 5 6

C.

6 2 3 4 5

D.

2 2 4 4 6

2-20

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

(2分)

A.

p++

B.

x++

C.

*(p++)

D.

&x++

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值