当前位置:文档之家› 指针练习题

指针练习题

.编程题1用指向数组的指针变量输出数组的全部元素2 使用函数调用,形参为指针,实参为数组,把一个数组逆序存放在输出练习题:一判断题1.指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。

2.指针的类型是它所指向的变量或对象的类型。

3.定义指针时不可以赋初值。

4.指针可以赋值,给指针赋值时一定要类型相同,级别一致。

5.指针可以加上或减去一个int型数,也可以加上一个指针。

6.两个指针在任何情况下相减都是有意义的。

7.数组元素可以用下标表示,也可以用指针表示。

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

9.字符指针是指向字符串的指针,可以用字符串常量给字符指针赋值。

10.引用是一种变量,它也有值和地址值。

11.引用是某个变量的别名,引用是被绑定在被引用的变量上。

12.创建引用时要用一个同类型的变量进行初始化。

13.指针是变量,它可以有引用,而引用不能有引用。

;..二单选题1.下列关于定义一个指向double型变量的指针,正确的是()。

A.int a(5);double *pd=a; B.double d(2.5),*pd=&d;C.double d(2.5),*pd=d; D.double a(2.5),pd=d;。

).下列关于创建一个int型变量的引用,正确的是(2A.int a(3),&ra=a; B int. a(3),&ra=&a;ra=a;D.int a(3), C.double d(3.1);int &rd=d;.下列关于指针概念的描述中,错误的是()。

3 A.指针中存放的是某变量或对象的地址值.指针的类型是它所存放的数值的类型B .指针是变量,它也具有一个内存地址值C .指针的值是可以改变的D 。

.下列关于引用概念的描述中,错误的是()4 A.引用是变量,它具有值和地址值 B.引用不可以作数组元素 C.引用是变量的别名 D.创建引用时必须进行初始化。

++*p相同的是()*p=a5.已知:int a[5],;则与a[0] . B.*++p A++a[0] .C*p++ D.;..6.已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是()。

A.&(a+1) B.&(p+1)C.&p[2] D.*p++7.已知:int a(5),&ra=a;下列描述中,错误的是()。

A.ra是变量a的引用,即为变量的别名 B.ra的值为5C.ra的地址值为&a D.改变ra的值为10,变量a值仍为58若有以下定义,则说法错误的是( )。

int a=100,*p=&a ;A.声明变量p,其中*表示p是一个指针变量B.变量p经初始化,获得变量a的地址C.变量p只可以指向一个整形变量D.变量p的值为1009若有以下定义,则赋值正确的是( )。

int a ,b , *p;float c, *q;A.p=&c B.q=p C.p=NULL D.q=new int10如果x是整型变量,则合法的形式是( )。

A.&(x+5) B.*x C.&*x D.*&x11若要建立如下关系,错误的语句组是( )。

p x 10A. B. C. D.int *p=&x, x; int x, *p=&x; int *p, x=10; int *p,x;*p=10; *p=10; p=&x; p=&x ;x=10;12若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。

A.p[i] B.*(*(a+i)) C.a[p-a]D.*(&a[i])13以下程序的输出结果是( )。

#include <iostream.h>;..void main(){ int a[3]={10,15,20};int *p1=a,*p2=&a[1];*p1=*(p2-1)+5;*(p1+1)=*p1-5;cout<<a[1]<<endl;}A.5 B.10 C.15 D.2014以下程序的输出结果是( )。

#include <iostream.h>void fun(int x,int y,int *cp,int *dp){ cp=x+y;dp=x-y;}void main(){ int a,b,c,d;a=30,b=50;fun(a,b,&c,&d);cout<<c<<,<<d<<endl;}A.50,30 B.30,50 C.80,-20 D.80,2015要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。

能正确执行此功能的函数是( )。

A.funa(int *x,int *y) B.funb(int x,int y){ int *p=new int ; { int t;p=*x; t=x;*x=*y; x=y;*y=*p; } y=t; }C.func(int *x,int *y) D.fund(int x,int y){ *x=*y; { *x=*x+*y;*y=*x; *y=*x-*y;} *x=*x-*y; }16以下程序的输出结果是( )。

#include <iostream.h>void main();..char *s=Q34211;{int v1=0,v2=0,v3=0,v4=0;for (int k=0;s[k];k++)switch(s[k])default:v4++; {case '1':v1++;case '3':v3++;case '2':v2++;}cout<<v1<<,<<v2<<,<<v3<<,<<v4<<endl;}A.4,2,1,1 B.4,9,3,1 C.5,8,6,1 D.8,8,8,8 如果程序做下面修改:switch(s[k]){ default:v4++; break;case '1':v1++; break;case '3':v3++;break;case '2':v2++;break;}运行结果是()二、读下列程序结果1:写出下列程序运行结果:#include<iostream.h>void main(){int *pn, n=10,m=20;float *pf, px=3.14159,py=2.71828;pn=&n;*pn+=m;cout<<”n 现在的值是:”<<*pn<<endl; pf=&px;py+=5*(*pf);cout<<”py现在的值是:”<<py<<endl;}运行结果是:n 现在的值是:pf 现在的值是:;..2:写出下列程序运行结果:void grt(int *x , int *y , int *z){ cout<< ++*x<<‘,'<< ++*y<<‘,'<<*(z++)<<endl;} int a=10, b=40, c=20;void main( ){ prt (&a, &b, &c);prt (&a, &b, &c);}答案:static int a[ ]={1, 3,5, 7, 11, 13};main( ){ int *p;p=a+3;cout<<*p<<'\t'<<(*p++)<<endl;cout<<*(p-2)<<'\t'<<*(a+4)<<endl;}答案三;填空题1.下列函数change的功能是,将字符串中的小写字母转成大写字母,请填空。

#include<iostream.h>#include<string.h>void change( ) //1{int i=0;for(i=0; ;i++) //2if(a[i]>='a'&&a[i]<='z'); //3}void main(){char p[80];cout<< \n;cin.getline(p,80) ; //读一行字符,中间可以有空格change(p);cout<<p<<endl;;..}例题2 :下列函数swap实现数据交换功能功能,请填空。

#include<iostream.h>void swap(int *p,int *q){int temp;temp=*p;; //1; //2}void main(){int a,b;int *p1,*p2;潣瑵?请输入两个正数:;cin>>a>>b;p1=&a;p2=&b;swap(p1,p2);<<a<<,<<b<<endl; 的值:ba潣瑵?结果和};.。

相关主题