沈阳师范大学C++ pta第三章 指针引用

沈阳师范大学C++ pta第三章 指针引用


判断题
1.字符串常量实质上是一个指向该字符串首字符的指针常量。 — — — T
2.定义一个指针数组并初始化赋值若干个字符串常量,则指针数组并不存放这些字符串,而仅仅指向各个字符串。 — — — T
3.指向整数指针的指针与指向整数数组的指针可以看成是等价的类型。 — — — F
4.定义指针函数变量后,将一个函数名赋值该指针变量,要求函数的参数个数、类型一致。 — — — T
5.对于定义int a[10],*p=a; 语句p=a+1;和a=a+1;都是合法的。— — — F
6.执行语句int *p; 后,指针变量p只能指向int类型的变量。— — — T
7.int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。— — — F
8.若有定义char* p=“computer”;则表示p的值是字符串" computer "。— — — F
9.如果函数的返回类型是指针,则可以返回函数内部任意变量的地址。— — — F
10.语句 int *p[5]; 定义了一个指针数组p,用于指向一个有5个元素的数组。 — — — F
11.指向结构体变量的指针可以作函数参数,实现传址调用。。 — — — T
12.调用printf函数,%s的格式输出字符串时,字符数组名、字符指针和字符串常量都可以作为输出参数。 — — — T
13.语句int *p, q, r; 定义了3个指针变量。— — — F
14.两个任意类型的指针可以使用关系运算符比较大小。— — — F
15.可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。— — — T
16.char *s=“C Language”;表示s是一个指向字符串的指针变量,把字符串的首地址赋予s。— — — T
17.int i; int &ri=i;对于这条语句,ri和i这两个变量代表的是同一个存储空间。— — —T
18.指针数组的每个元素都是一个指针变量。— — — T
19.不同类型的指针变量是可以直接相互赋值的。— — — F
20.只要将多个指针作为函数的参数,函数就一定会返回多个值。— — — F
21.调用strcmp函数比较字符串大小时,通常较长的字符串会较大。— — —F
22.字符串常量在内存中的存放位置由系统自动安排。— — — T

单选题
设void f1(int * m,long & n);int a;long b;则以下调用合法的是()。

A.f1(&a,&b);
B.f1(a,b);
C.f1(&a,b);
D.f1(a,&b);

下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。

A.int a, *x = a;
B.int a, x = a;
C.int *x = &a, a;
D.int a, *x = &a;

下列程序片段哪一个是正确的。

A.int m=8; int &r1=m; const int r2=r1;
B.int m=5; const int &r=m; r=16;
C.int m=8; const int &r1=m; int &r2=r1 ;
D.int m=4; int &r=m*6;

对于int *pa[5];的描述,以下哪个选项是正确的

A.pa是一个具有五个元素的指针数组,每个元素都是一个int类型的指针
B.pa是一个指向某个数组中第五个元素的指针,该元素是int类型的变量
C.pa是一个指向数组的指针,所指向的数组是五个int类型的指针
D.pa[5]表示某个数的第五个元素的值

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

A.p2=&p1
B.p2=**p1
C.p2=*p1
D.p2=p1

下列关于引用的说法,错误的是____。

A.引用初始化后,可以通过更变来引用其他变量
B.数组不能定义引用
C.引用在定义时必须初始化
D.引用在初始化时不能绑定常量值

下列哪一个说法是不正确的?

A.const T 类型的常变量和const T & 类型的常引用,也可以用来初始化T & 类型的引用
B.T & 类型的引用或T类型的变量,可以用来初始化const T &类型的引用
C.定义引用时,前面加const关键字,即为"常引用"
D.不能通过常引用去修改其引用的内容

以下不正确的赋值或赋初值的方式是( )。

A.char str[]=“string”;
B.char str[10];str="string";
C.char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’, ’\0’};
D.char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’};

下面程序段:

int main() {
int intone;
int &rsomeref = intone;
intone = 5;
cout<<intone<<" “<<rsomeref;
rsomeref = 7;
cout<<intone<<” "<<rsomeref;
return 0; }

输出结果为( )。
A.55 77
B.5 5 7 7
C.5 57 7
D.5577

以下哪个定义中的p不是指针,请选择恰当的选项:

A.char (*p)[10];
B.char **p;
C.char *p[6];
D.给出的三项中,p都是指针

下面程序段 int a=1,b=2; int &r=a; r=b; r=7; cout<<a<<endl; 的输出结果是?

A.1
B.无法确定
C.2
D.7

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

A.&a[0]+1
B.3
C.2
D.4

下面程序片段,哪一个是正确的?

A.int n=8; int &p=n; const int q=p ;
B.int m=5; const int &r=m; r=6;
C.int n=4; int &r=n*3;
D.int n=8; const int &p=n; int &q=p ;

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

A.float f, *pf = &f;
B.float f, *pf =0.0;
C.float *pf = &f, f;
D.float f, *pf = f;

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

A.x++
B.p++
C.*(p++)
D.&x++

已知:float b = 34.5; ,则下列表示引用的方法中,正确的是( )。

A.float &z;
B.float &y = 34.5;
C.int &t = &b;
D.float &x = b;

关于指针和引用,下面哪个说法是错误的()。

A.通过访问符*来访问指针所指存储空间中的值。
B.指针和引用对它们所指的或所引用的变量的操作方式不一样。
C.和指针类似,引用被初始化后,还可以引用别的变量。
D.引用较高级地封装了指针的特性,它不直接操作内存地址,而是通过访问变量别名来间接操作变量的。

对于如下说明,语法和语义都正确的赋值是_____。

int c, *s, a[]={1, 3, 5};
A.c=a;
B.c=*s;
C.s[0]=a[0];
D.s=&a[1];

已知:int a(5),&ra=a;下列描述中,错误的是( )。

A.ra是变量a的引用,即为变量的别名
B.ra的值为5
C.ra的地址值为&a
D.改变ra的值为10,变量a值仍为5

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

A.*p++
B.a[9]
C.a++
D.p[5]

在基类型相同的两个指针变量之间,不能进行的运算是( )。

A.+
B.<
C.–
D.=

下列对变量的引用中错误的是____。

A.float a; float &p = a;
B.int a; int &p; p=a;
C.char a; char &p = a;
D.int a; int &p = a;

若已定义: int a[9], *p=a;并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的表达式是( )。

A.a++
B.p+1
C.a+1
D.++p

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

A.3 ,4
B.3 ,11
C.12 ,13
D.3 ,9

( )是给变量取一个别名,引入了变量的同义词。

A.引用
B.结构
C.指针
D.枚举

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

A.数组
B.数组的元素
C.函数
D.指针

下列哪一个说法是不正确的?

A.引用可以引用变量,也可以引用常量和表达式
B.定义引用时一定要将其初始化成引用某个变量
C.初始化后,它就一直引用该变量不会再别引用别的变量了
D.某个变量的引用等价于这个变量,相当于该变量的一个别名


填空题

write the output of the code below.
#include <iostream>
using namespace std;
int& f(int &i )
{
   
    i += 10;
    return i ;
}
int main()
{
   
    int k = 0;
    int& m = f(k);
    cout << k << "#";
    f(m)++;
    cout << k << endl;
    return 0;
}

10#21


编程题

R7-1 实数排序

本题要求编写程序,输入n个实数,使用指针引用的方式将它们按从大到小的顺序排列。

输入格式:

输入第一行给出一个正整数n(2≤n≤10),输入第二行给出n个实数,其间以空格分隔。

输出格式:

输出从大到小排好序的n个数(保留2位小数),每个数之间空一格,行末没有空格。

输入样例:

在这里给出一组输入。例如:

5
3.2 5.4 6.12 2.51 4.23

输出样例:

在这里给出相应的输出。例如:

6.12 5.40 4.23 3.20 2.51

#include <iostream>
#include <string>
#include 
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SimonWhiteWing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值