c++ 数组置0_2019二级C题库及解析(4)

31.若有以下说明语句:

        struct  date

         { int year;

           int month;

           int day;

          }brithday;

      则下面的叙述不正确的是__C___.

A) struct是声明结构体类型时用的关键字    

B) struct date 是用户定义的结构体类型名

C) brithday是用户定义的结构体类型名  

D) year,day 都是结构体成员名

32. 以下对结构变量stul中成员age的非法引用是   B    

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A) stu1.age   B) student.age   C) p->age    D) (*p).age

33.设有如下定义:

struck sk

{   int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是  C   

A) p=&a;      B) p=data.a;    C) p=&data.a;  D) *p=data.a;

34.设有以下说明语句:

           typedef  struct  stu

           {  int  a;

              float  b;

           } stutype;

    则下面叙述中错误的是( D  )。

    A、struct是结构类型的关键字  

    B、struct stu是用户定义的结构类型 

    C、a和b都是结构成员名

    D、stutype是用户定义的结构体变量名

35. 语句int *p;说明了   C   。

A) p是指向一维数组的指针   

B) p是指向函数的指针,该函数返回一int型数据

C) p是指向int型数据的指针   // 指针的定义

D) p是函数名,该函数返回一指向int型数据的指针

36.下列不正确的定义是( A  )。

A.int *p=&i,i;                  B. int *p,i;

C.int i,*p=&i;                  D. int i,*p;

选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为p赋i的地址,C正确)

37. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( D  )

A)p=q        B)*p=*q     C)n=*q      D)p=n

p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

选项A,q中为地址,因此可将此地址赋给p

选项B,*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;

选项C,n=*q  等价于n=n;

选项D,p中只能存放地址,不能将n中的整数值赋给p 

38.有语句:int a[10]; 则  B   是对指针变量p的正确定义和初始化。

A) int p=*a;  B) int *p=a;   C) int p=&a;  D) int *p=&a;

选项A,a是数组名,不是指针变量名,因此不可用*标注数组名a

选项C,a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量

选项D,a是数组名,数组名就是地址,无需再用地址符号。

39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )。

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

首先定义一个整型数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

对于数组元素下标的引用(详见p144), 一般形式 数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

选项A,p中存放的是地址,不是整数,不能做数组元素的下标

选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

选项C,(重点!!!)   p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

40. 有如下程序

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

则数值为9的表达式是  B  

A) *P+9            B) *(P+8)          C) *P+=9         D) P+8

(重点!!!)首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

数组中9对应的是a[8], 选项B,P+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8)则表示该地址内所存放的内容,即a[8]的值。

选项A,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1. *P+9=1+9=10

选项C,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等价于a[0]=a[0]+9.

选项D,P+8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。


学习有困难怎么办,快来加入微信群和大家交流吧。

a0b97f16e82f4ad7e2e06747bf725407.png

计算机等级考试二级C语言,资源交流、问题讨论群。

欢迎分享高质量有价值的学习资源。

提问请说明遇到的问题、不明白的地方,最后附代码文本;直接发题目要答案的、图片不清不好辨别的,可能会被无视。

请勿发送无关链接、影响他人等,违者踢出。

ec475fbb7fd450e2c1e3cf91fa0053f3.png

往期精彩文章:

2020全国二级C语言学习指南

WL教育计算机二级C-VIP题库

计算机二级C语言总结系列(含word下载链接)

分享一个计算机等级考试题库的手机APP

全国计算机二级公共基础知识2020大纲(有新增)

VC6.0使用操作-带字幕讲解

计算机等级考VC++2010学习版如何使用:安装、操作与注册?

全国计算机二级C语言 考试大纲(2018年版)

C语言入门小程序-猜数字

指针讲解:*&p和&*p

一道题明白什么是共用体

数组学习之杨辉三角

更多文章、资源请查看公众号历史消息。

d533689c5a2bc713492d6bfaa75379c4.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值