2-指针与引用练习题

合集下载

c语言指针编程练习题

c语言指针编程练习题

c语言指针编程练习题

2. 从命令行输入两个实型数据,请比较大小并输出。参考答案

3. 输入3个数a,b,c,按大小顺序输出。利用指针方法参考答案

4. 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。参考答案

5. 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数参考答案

6. 有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人

退出圈子,问最后留下的是原来第几号的那位。参考答案

7. 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。参考答案

8. 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调

用函数1/1+1/3+…+1/n 参考答案

9. 八进制转换为十进制参考答案

10. 编一个函数fun,函数的功能是分别求出数组中所有奇数之

和以及所有偶数之和。形参n给了数组中数据的个数:

利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。参考答案

11. 复制字符串。参考答案

一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出 #include

void swap

{

int temp;

temp = *pa;

*pa = *pb;

*pb = temp;

}

void main

{

int a,b,c,temp;

scanf;

if

swap;

if

swap;

if

swap;

printf;

指针练习题

指针练习题

编程题

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;

2.下列关于创建一个int型变量的引用,正确的是()。

A.int a(3),&ra=a;B.int a(3),&ra=&a;

C.double d(3.1);int &rd=d;D.int a(3),ra=a;

3.下列关于指针概念的描述中,错误的是()。

c++指针类练习题及答案

c++指针类练习题及答案

1、利用指针,编写用于交换两个整型变量值的函数。程序运行结果如下:输入:5 6

输出:6 5

#include <iostream>

using namespace std;

void swap(int *xp,int *yp)

{

int tmp;

tmp=*xp;

*xp=*yp;

*yp=tmp;

}

int main()

{

int a,b;

cin>>a>>b;

swap(&a,&b);

cout<<a<<" "<<b<<endl;

return 0;

}

2、编写主程序,将输入字符串反序输出。程序运行结果如下:

输入:ABCDEFGHIJK

输出:KJIHGFEDCBA

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

char str[100];

cin>>str;

int len;

len=strlen(str);

char *p=&str[len-1];

while(p>=str)

{

cout<<*p;

p--;

}

cout<<endl;

return 0;

}

3、使用指针编写一个用于对整型序列进行排序的函数,排序方法使用简单选择排序法。

程序的运行结果如下所示:

输入(第一个数是序列的长度):

6

2 7 2 2

3 1

输出:

1 2 2 2 3 7

#include <iostream>

using namespace std;

c++指针类练习题及答案

c++指针类练习题及答案

c++指针类练习题及答案

1、利用指针,编写用于交换两个整型变量值的函数。程序运行结果如下:输入:5 6

输出:6 5

#include

using namespace std;

void swap(int *xp,int *yp)

{

int tmp;

tmp=*xp;

*xp=*yp;

*yp=tmp;

}

int main()

{

int a,b;

cin>>a>>b;

swap(&a,&b);

cout<<a<<" "<<b<<endl;<="" bdsfid="81" p=""></a<<"> return 0;

}

2、编写主程序,将输入字符串反序输出。程序运行结果如下:

输入:ABCDEFGHIJK

输出:KJIHGFEDCBA

#include

#include

using namespace std;

int main()

{

char str[100];

cin>>str;

int len;

len=strlen(str);

char *p=&str[len-1];

while(p>=str)

{

cout<<*p;

p--;

}

cout<<endl;< bdsfid="105" p=""></endl;<>

return 0;

}

3、使用指针编写一个用于对整型序列进行排序的函数,排序方法使用简单选择排序法。

程序的运行结果如下所示:

输入(第一个数是序列的长度):

指针练习题与答案

指针练习题与答案

编程题

1用指向数组的指针变量输出数组的全部元素

#include

void main( )

{ int a[10], i;

int *p;

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

cin>>a[i];

for (p=a; p

cout<<*p<<‘\t’;

}

#include

void main( )

{ int a[10], i;

int *p=a;

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

cin>>a[i];

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

cout<<*p++<<‘\t’;

}

2 使用函数调用,形参为指针,实参为数组,把一个数组逆序存放在输出

#include

void inv(int *x, int n);

void main( )

{ int i, a[10]={3,7,9,11,0,6,7,5,4,2};

inv(a,10);

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

cout<

}

void inv(int *x, int n)

{ int *p, t, *i, *j, m=(n-1)/2;

i=x; j=x+n-1; p=x+m;

for (; i<=p; i++,j--)

{ t=*i; *i=*j; *j=t;

}

}

void inv(int x[ ], int n)

{ int t, i, j, m=(n-1)/2;

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

{ j=n-1-i;

t=x[i]; x[i]=x[j]; x[j]=t;

}

}

一判断题

× 1.指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。

指针练习题

指针练习题

指针练习题

第10章指针练习题

选择题填空题编程题

一、选择题:

1、若有定义:int x,*pb; 则以下正确的赋值表达式是()

A、pb=&x

B、pb=x

C、*pb=&x

D、*pb=*x

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

A、5,2,3

B、-5,-12,-7

C、-5,-12,-17

D、5,-2,-7

#include "Stdio.h"

#include "Conio.h"

void sub(int x,int y,int *z)

{ *z=y-x; }

int main()

{

int a,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);

printf("%d,%d,%d\n",a,b,c);

getch();

return 0;

}

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

A、4

B、6

D、10

#include "Stdio.h"

#include "Conio.h"

int main()

{

int k=2,m=4,n=6;

int *pk=&k,*pm=&m,*p;

*(p=&n)=*pk*(*pm);

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

getch();

return 0;

}

5、已知指针p的指向如图所示,则执行语句*p++;后,*p的值是()

A、20

B、30

C、21

D、31

6、已知指针p的指向如5题中图所示,则表达式*++p的值是()

A、20

B、30

C、21

D、31

7、已知指针p的指向如5题中图所示,则表达式++*p的值是()

A、20

B、30

D、31

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

A、23

B、24

C、25

D、26

c 指针练习题

c  指针练习题

c 指针练习题

C指针练习题

C语言中的指针是一种强大而又复杂的概念。它允许我们直接访问内存中的数据,并对其进行操作。然而,由于指针的灵活性和复杂性,很多初学者在使用

指针时会遇到困惑和错误。为了帮助大家更好地理解和应用指针,下面将给出

一些C指针的练习题。

1. 交换两个变量的值

这是一个经典的C指针练习题。请编写一个函数,接受两个整数指针作为参数,并交换这两个指针所指向的变量的值。例如,如果输入为a=3,b=5,调用函

数后,a=5,b=3。

2. 求字符串的长度

请编写一个函数,接受一个字符串指针作为参数,并返回该字符串的长度。注意,字符串的长度是指字符串中字符的个数,不包括字符串结尾的空字符'\0'。3. 查找数组中的最大值

请编写一个函数,接受一个整型数组指针和数组的长度作为参数,并返回数组

中的最大值。提示:可以使用指针来遍历数组,并使用一个变量来保存当前的

最大值。

4. 字符串拷贝

请编写一个函数,接受两个字符指针作为参数,并将第一个字符串拷贝到第二

个字符串中。注意,第二个字符串必须具有足够的空间来存储第一个字符串的

内容。

5. 动态分配内存

请编写一个函数,接受一个整数作为参数,并动态分配一个大小为该整数的整型数组。然后,将数组的每个元素初始化为其下标的平方,并返回指向该数组的指针。注意,使用完数组后,必须释放动态分配的内存。

6. 字符串反转

请编写一个函数,接受一个字符串指针作为参数,并将该字符串反转。例如,如果输入为"hello",则函数应该将其改为"olleh"。

7. 指针数组排序

请编写一个函数,接受一个字符串指针数组和数组的长度作为参数,并按照字母顺序对字符串进行排序。提示:可以使用字符串比较函数strcmp来比较两个字符串的大小,并使用指针来交换字符串的位置。

C语言指针练习+答案+讲解.

C语言指针练习+答案+讲解.

第七章指针

7.1 选择题

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

A. p=q; B. *p=*q; C. a=*q; D. q=a;

a是整型数,

int *p,*q定义了指针,

p,q是指向整型的指针。

p取得a的地址,而q取得p的地址

p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值)。

A)把q的地址赋给p,则p和q完全一样了,都指向一个数2

B)把q中数据个p

C)把q中数据给a

D)a中数据是2,不能够给一个地址。除非*q=a

2.若定义:int a=511, *b=&a;,则printf("%d\n", *b);的输出结果为:D A.无确定值 B. a的地址 C. 512 D. 511

int a=511,*b=&a;

a 是整形变量

b 是整形指针变量,指向 a

printf("%d\n",*b);就是输出指针变量 b,

所指变量的值输出结果511

3.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);

47、已知在程序中定义了如下的语句:

int *P1,*P2;

int k;

p1=&k;p2=&k;

则下列语句中不能正确执行是( B )

A、k=*P1+*P2;

B、p2=k;

C、P1=P2;

D、K=*P1 * (*P2);

P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?

A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)

指针练习题及答案

指针练习题及答案

六、指针习题及答案

一、单项选择题

1. *p最终值是( D)

int *p,b=10;static int a[]={2,3,4,1,5,6};

p=a;p+=3;a[3]=b;

A. 1

B. 3

C. 4

D. 10

2. *p最终值是( A )

char b[10]= "abcdefghi",*p;

p=b+5;

A. ’f’

B. ’g’

C. ’h’

D. ’e’

3. 有一个二维数组a[3][4],其2行3列元素a[2][3]的正确表示方法为( D )。

A. &a[2][3]

B. a[2]+3

C. *(a+2)+3

D. *(a[2]+3)

4. 指向一个包含4个整型元素的一维数组的行指针变量的定义形式为( D )。

A. int (*p)[]

B. int *p[4]

C. int *(p[])

D. int (*p)[4]

5. 4个指向int型元素的指针构成一个一维指针数组的定义形式为( B )。

A. int (*p)[]

B. int *p[4]

C. int *(p[])

D. int (*p)[4]

6. 若char *str1="china",char *str2="student";

则语句strcpy(str2,str1)执行后,str2的值为( A )。

A. china

B. student

C. studentchina

D. chinastudent

7.若有以下定义和语句:

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

则值为3的表达式是( B )。

A. p+=2,*(++p)

B.p+=2,*p++

函数指针练习题

函数指针练习题

函数指针练习题

函数指针是一种特殊的指针类型,它指向可以被调用的函数。函数

指针可以用于实现代码的动态调用、跳转以及回调函数等功能。本文

将通过几个练习题,帮助读者更好地理解函数指针的用法和实际应用。

练习一:使用函数指针实现两个整数的加法

```c

#include <stdio.h>

int add(int a, int b) {

return a + b;

}

int main() {

int (*func)(int, int);

int a = 10, b = 20;

func = add;

int result = func(a, b);

printf("%d + %d = %d\n", a, b, result);

return 0;

}

```

在这个例子中,我们定义了一个函数指针`func`,它指向了一个名为`add`的函数。通过将函数指针赋值为`add`,我们可以使用函数指针调用`add`函数进行加法运算。

练习二:使用函数指针作为回调函数

```c

#include <stdio.h>

typedef int (*CallbackFunc)(int);

int square(int x) {

return x * x;

}

void applyCallback(CallbackFunc callback, int x) {

int result = callback(x);

printf("Result: %d\n", result);

}

int main() {

CallbackFunc func = square;

指针经典练习题(含答案版)二

指针经典练习题(含答案版)二

C)-5,-12,-17
D)5,-2,-7
6.以下程序的结果是(C )
#include<stdio.h>
maቤተ መጻሕፍቲ ባይዱn()
{int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf(“%d”,n);}
A)4 B)6 C)8 D)10
7.若指针 p 已正确定义,其指向如图所示,则执行语
17.若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读
入 3 个整数分别赋给变量 a,b,c 的语句是( A )
A)scanf(“%d%d%d”,&a,&b,d);
B)scanf(“%d%d%d”,&a,&b,&d);
C)scanf(“%d%d%d”,a,b,c);
D)scanf(“%d%d%d”,a,b,*d);
int b=2;
int func( int *a)
{ b+=*a;return(b);}
main( )
{ int a=2,res=2;
res+=func(&a);
printf( “%d”,res);}.
A)4 B)6 C)8 D)10

指针练习题与答案

指针练习题与答案

编程题

1用指向数组的指针变量输出数组的全部元素

#include

void main( )

{ int a[10], i;

int *p;

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

cin>>a[i];

for (p=a; p

cout<<*p<<‘\t’;

}

#include

void main( )

{ int a[10], i;

int *p=a;

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

cin>>a[i];

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

cout<<*p++<<‘\t’;

}

2 使用函数调用,形参为指针,实参为数组,把一个数组逆序存放在输出

#include

void inv(int *x, int n);

void main( )

{ int i, a[10]={3,7,9,11,0,6,7,5,4,2};

inv(a,10);

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

cout<

}

void inv(int *x, int n)

{ int *p, t, *i, *j, m=(n-1)/2;

i=x; j=x+n-1; p=x+m;

for (; i<=p; i++,j--)

{ t=*i; *i=*j; *j=t;

}

}

void inv(int x[ ], int n)

{ int t, i, j, m=(n-1)/2;

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

{ j=n-1-i;

t=x[i]; x[i]=x[j]; x[j]=t;

}

}

一判断题

×1.指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。

指针经典练习题及答案

指针经典练习题及答案

二、程序题

1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现,

参数为指向字符串和要查找的子串的指针,返回次数。

2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。

算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),

Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。

例如,China转换成密文为G l m r e。

要求:在函数change中完成字母转换,在函数insert中完成增加空格,

用指针传递参数。

3、字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),

并返回替换字符的个数。

4、编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。

5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,

再分别取出每个字符串的第三个字母合并成一个新的字符串输出

(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。

6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,

然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。7、实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,

输它们相同的数字个数(使用动态内存分配)。

/*1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。*/

#include<stdio.h>

int subString(char *a, char *b)

C语言指针习题及答案 (2)

C语言指针习题及答案 (2)
39.若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ;则能够正确表示数组元素x[1][2]的表达式是D。
A)*((*p+1)[2]) B)(*p+1)+2
C)*(*(p+5)) D)*(*(p+1)+2)
40.若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则language[2]的值是B。
35.下面程序段的输出是C。
int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;
for (k=01;k<4; k++) q[k]=&a[k*3];
printf(“%d\n”,q[3][0]);
A)8 B)16 C)20 D)输出不合法
36.若要对a进行自增运算,则a应具有下面说明D。
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
19.若已定义char s[10];则在下面表达式中不表示s[1]的地址是B。
A)s+1 B)s++ C)&s[0]+1 D)&s[1]
20.若有定义:int a[5],*p=a;则对a数组元素的正确引用是D。

C语言程序设计练习题之 指针与引用

C语言程序设计练习题之 指针与引用
{
int t;
t=x; x=y; y=t;
}
void fun2(int *x, int *y)
{
int *t;
t=x; x=y; y=t;
}
3.#include <iostream>
using namespace std;
int palindrome(char s[]);
int main()
{
char c[]="LEVEL";
if( !(*(s+i)>='0'&&*(s+i)<='9'))
s[n++]=s[i];
s[n]='\0';
}
6.#include <iostream>
using namespace std;
void f (char *str, char del );
int main()
{
char str[]="33123333435";
A.p=&a;B.*p=a;C.*(a+1)=a;D.p=a+1
14.以下语句或语句组中,能正确进行字符串赋值的是
A.char *sp;*sp="right!";B.char s[10];s="right!";

指针练习题及答案

指针练习题及答案

指针练习题及答案

1. 请编写一个程序,交换两个变量的值,并通过指针来实现。

```c

#include<stdio.h>

void swap(int *a, int *b){

int temp = *a;

*a = *b;

*b = temp;

}

int main(){

int num1 = 10, num2 = 20;

printf("交换前的值:num1=%d, num2=%d\n", num1, num2);

swap(&num1, &num2);

printf("交换后的值:num1=%d, num2=%d\n", num1, num2);

return 0;

}

```

2. 编写一个函数,统计字符串中某个字符出现的次数,并通过指针返回结果。

```c

#include<stdio.h>

int countChar(const char *str, char target){

int count = 0;

while(*str != '\0'){

if(*str == target)

count++;

str++;

}

return count;

}

int main(){

char str[] = "hello world";

char target = 'l';

int count = countChar(str, target);

printf("字符 %c 出现的次数为:%d\n", target, count); return 0;

}

```

3. 编写一个函数,找到整型数组中的最大值,并通过指针返回结果。```c

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运行结果为: 12 6
C++程序设计课件
设计制作:徐龙琴
15
7 阅读程序,给出运行结果。 #include<iostream.h> void main() { int i,a[10]; int *p1,*p2; p1=a; p1=&a[0]; p2=p1+5; for (i=0;i<=9;i++) {a[i]=i*i; p1= 0x0065FDCC,p2= 0x0065FDED p1= 0x0065FDCC,p2= 0x0065FDED cout<<"a["<<i<<"]="<<a[i]<<endl;} p2-p1=5 p2-p1=5 *p1-*p2=25 25 a[5]-a[0]= cout<<"*a="<<*a <<endl; cout<<"a="<<a<<endl; cout<<"p1="<<p1<<",p2="<<p2<<endl; cout<<"p2-p1="<<p2-p1<<endl; cout<<"*p2-*p1="<<*p2-*p1<<endl; cout<<"a[5]-a[0]="<< a[5]-a[0] <<endl; }
B)相加 D)赋值
运算是没有意义的。
13、已知指针p的指向下图所示,则表达式*--p的值是: 20
a[0]在低地址,a[1]在高地址
C++程序设计课件
设计制作:徐龙琴
5
二 下列程序有无错误: 1、 #include <iostream.h> int fun1(int); int fun2(int); void main() { int i=12; int (*fp)(); int (*fp)(int); fp = fun1; cout<<"Fun1:"<<(*fp)(i)<<endl; fp = fun2; cout<<"Fun2:"<<(*fp)(i)<<endl;} int fun1(int k) { k = k*2+1; return k;} int fun2(int m) { m = m/2+1; return m;}
C++程序设计课件 设计制作:徐龙琴 16
改后的运行结果为: 运行结果为: a[0]=0 a[0]=0 a[1]=1 a[1]=1 a[2]=4 a[2]=4 a[3]=9 a[3]=9 a[4]=16 a[4]=16 a[5]=25 a[5]=25 a[6]=36 a[6]=36 a[7]=49 a[7]=49 a[8]=64 a[8]=64 a[9]=81 a[9]=81 *a=0 a=0x0065FDCC
b.p+=5;*p++ ;
d.p+=4;++*p;
C++程序设计课件
设计制作:徐龙琴
2
6、若0<=k<6,则正确表示数组元素地址的语句是: C
int x[]={1,9,10,7,32,4},*ptr=x,k=1; a.x++ c.&ptr[k] a.i=*p; c.i=&j b.*p=*&j; d.i=**p; b.&ptr d.&(x+1)
四 编程题:
1、写一个函数,求一个字符串的长度,在main函数中输入字符 串,并输出其长度。 2、编程实现:从键盘输入一任意字符串,然后,输入所要查找 字符。存在则返回它第一次在字符串中出现的位置;否则,输 出“在字符串中查找不到!” 。并实现对同一字符串,能连续 输入所要查找的字符 3、编程实现:从字符串中删除子字符串。从键盘输入一字符串, 然后,输入要删除的子字符串。最后输出删除子串后的新字 符串。 4、用指针数组实现:输入月份的阿拉伯数字1~12,输出对应 的月份英文名称。 5、.编程实现:输入5个字符,从中找出最大的字符并输出。要 求用字符数组存放这5个字符,用指针数组元素分别指向这5 个字符,再用一个二级指针变量指向这个指针数组。 17 C++程序设计课件 设计制作:徐龙琴
C++程序设计课件
运行结果为: 123 321 321
设计制作:徐龙琴
12
4
#include<iostream.h> void ast(int x,int y,int *cp,int *dp) { *cp=x*y; *dp=x%y; } void main() { int a,b,c,d; a=2; b=3; ast(a,b,&c,&d); cout<<c<<d<<endl; }
C++程序设计课件 设计制作:徐龙琴
9
三 读程题:
1. #include<stdio.h>
vຫໍສະໝຸດ Baiduid main()
{ int *v,b;
v=&b; b=100; *v+=b; printf("%d\n",b); } 运行结果为: 200
C++程序设计课件
设计制作:徐龙琴
10
⒉ #include <stdio.h> void main( ) { int a[ ]={1,2,3,4,5}; int x, y, *p;
9、设有以下函数定义,则该函数返回的值是 a int * fun(int a) {int *t,n; n=a;t=&n; return t;} a.一个不可用的存储单元地址值 b.一个可用的存储单元地址值 c.n中的值 d.形参a中的值 10、下面函数的功能是: a int fun(char *x) {char *y=x; while(*y++){}; return y-x-1;} a. 求字符串的长度 b. 求字符串存放位置 c. 比较两个字符串的大小 d. 将字符串x连接到字符串y后面
C++程序设计课件
运行结果为: 62
设计制作:徐龙琴
13
5
#include <stdio.h> void main( ) { int a=10,b=0,*pa, *pb; pa=&a; pb=&b; printf("%d,%d\n",a,b); printf("%d,%d\n",*pa,*pb); a=20; b=30; *pa=a++; *pb=b++; printf("%d,%d\n",a,b); printf("%d,%d\n",*pa,*pb); (*pa)++; (*pb)++; printf("%d,%d\n",a,b); printf("%d,%d\n",*pa,*pb); }
C++程序设计课件
运行结果为: 10,0 10,0 21,31 21,31 22,32 22,32
14
设计制作:徐龙琴
6
#include <iostream.h> void main() { int a[2][3]={1,2,3,4,5,6}; int i,j,(*p)[3]; p=a; cout<<"input i,j:"; cin>>i>>j; cout<<"a["<<i<<","<<j<<"]= " <<*(*(p+i)+j)<<endl; }
//p 为指针数组
int (*p)[n]; //p 为指向数组的指针变量 int *p( );
//p 为返回指针型的函数
int (*p) ( ); //p 为函数指针
int **p;
//p 为指向指针的指针变量
C++程序设计课件
设计制作:徐龙琴
8
4 指出下列程序的错误。 #include <iostream.h> void exchange(int,int); void exchange(int*,int*); exchange(int&,int&); void main() void main() {cout<<"Input two data seprated by space:"; {cout<<"Input two data seprated by space:"; int a,b; int a,b; int a,b,*p1=&a,*p2=&b; cin>>a>>b; cout<<"Before Exchange:a="<<a cin>>a>>b; cin>>a>>b; <<",b="<<b<<endl; cout<<"Before Exchange:a="<<a<<",b="<<b<<endl; cout<<"Before Exchange:a="<<a<<",b="<<b<<endl; exchange(a,b); exchange(a,b); exchange(p1,p2); cout<<"After Exchange:a= "<<a cout<<"After Exchange:a="<<a<<",b="<<b<<endl; cout<<"After Exchange:a="<<a<<",b="<<b<<endl; <<",b="<<b<<endl; }} void exchange(int x,int y)&y) &x,int *x,int *y) { int t; {int t;t; { int t=x;x=y;y=t; t=x;x=y;y=t; t=*x;*x=*y;*y=t; } } }
a
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d", *(p+2)); } a. 3 b. 4 c. 1 d. 2
设计制作:徐龙琴 1
C++程序设计课件
3、若0<i<10,则对数组元素地址的正确表示是: d int a[]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a; a.&(a+1) c.*p b.a++ d.&p[i]
一、选择题:
int a[]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a; a.*(a+i) c.p+i b.a[p-a] d.*(&a[i])
1 若有以下说明和语句,且0<i<10,则 c 是数组元素的错误引用。
2 下面程序的输出是:
#include <stdio.h> void main( )
设计制作:徐龙琴
C++程序设计课件
4
11、用new为int数组分配10个存储空间,下面哪个语句正确 B A) int *p=new; C) int *p=new int[]; A)相减 C)比较 B) int *p=new int[10]; D) int *p=new int;
12、指向同一个数组的两个指针,作 B
7、若有说明:int i,j=7,*p;p=&i;则与i=j等价的语句是 B
8、设p1和p2是指向同一个int型一维数组的指针变量,k为int型变
量,则不能正确执行的语句是 B
a.k=*p1+*p2; c.p1=p2; b.p2=k; d.k=*p1*(*p2);
C++程序设计课件
设计制作:徐龙琴
3
p=&a[0];
x=*(p+2); y=*(p+4); printf("*p=%d,x=%d,y=%d\n",*p,x,y); return; } 运行结果为: *p=1,x=3,y=5
C++程序设计课件
设计制作:徐龙琴
11
3
#include<iostream.h> void callbyval(int a,int b,int c) {a=3;b=2;c=1;} void callbypointer(int* a,int* b,int* c) {*a=3;*b=2;*c=1;} void callbyreference(int& a,int& b,int& c) { a=1;b=2;c=3;} void main() { int a=1,b=2,c=3; int& a1=a; int& b1=a; int& c1=a; callbyval(a,b,c); cout<<a<<b<<c<<endl; callbypointer(&a,&b,&c); cout<<a<<b<<c<<endl; callbyreference(a1,b1,c1); cout<<a<<b<<c<<endl;}
4、已知:int a,x=1;则下面正确的赋值语句是: c
a. a=(a[1]+a[2])/2;
c. a=x+2;
b. a=(a[1]+a[2])/2;
d. a="good";
5、若:int a[]={1,2,3,4,5,6},*p=a;执行下面语句p指向5的是:a
a.p+=3;*(p++);
c.p+=4;*++p;
C++程序设计课件 设计制作:徐龙琴 6
2、 #include <iostream.h> void main() { int i, *p;
i = 10;
p*p &i; = = i; cout<<*p; }
C++程序设计课件
设计制作:徐龙琴
7
3、分别指出下面的p各是什么。
int *p; int *p[n]; //p 为指针变量
相关文档
最新文档