C语言习题课指针 ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(函数指针)
一、有关指针的数据类型
定义 int i; int *p; int a[N]; int *p[N];
int f( ); int *p();
int (*p)( );
int **p;
含义
i是整型变量 p是指向整型数据的指针变量 a是整型数组,它有N个整型元素 p是指针数组,它由N个指向整型数据的 指针元素组成
运行结果:9,7
13、已有变量定义和函数调用语 句:int a=25;print_value(&a); 下面函数的正确输出结果是( )。
void print_value(int *x)
{ printf("%d\n",++(*x)); }
A)23 C)25
B)24 D)26
14、阅读下面程序,输出结果是多少?
void main()
{int i;char **p;
char *name[ ]={"Ann","Hare","Jack","Mary"};
printf("\n Students's names are:\n");
for(i=2;i<4;i++)
{
p=name+i; printf("%s\n",*p);
#include "stdio.h"
void main()
{int c[6]={1,2,3,4,5,6};
int *p;
p=c;
printf("%d,",*++p);
p=p+3;
printf("%d\n“,*p--);
}
运行结果:2,5
15、阅读下面程序,则程序的输出结果是多少?
#include <stdio.h>
for ( ;ptr<a+7;ptr+=2)putchar(*ptr);
1) Program
2) Porm
3) 有语法错误;
4) Por
7、下面说明不正确的是:
1) int *a[4];
3) float (*p)();
2) int **p;
4) char *(*a)[ ];
8 、以下程序段的输出结果为: #include <stdio.h> void main() {int s[ ]={1,2,3,4,5,6,7,8,9},*p; p=s; *(p+5)=22; p++; printf ("%d,%d\n",*p,*(p+4)); }
3、已设p1和p2为指针变量,且已指向同一个整
型数组中的元素,a是一个整型变量,问下面
哪一个语句不能正确执行?
(1) a=*p1
(2) a=*p1+*p2
(3) a=*p1-*p2
(4) p1=a-p2
4、有一个二维数组a[3][4],2行3列元素的正确表 示方法为()。
(1) &a[2][3]
(2)a[2]+3
b=&y;
fun(a,b);
printf("%d,%d\n",*a,*b);
printf("%d,%d\n",x,y); }
12、以下程序段的输出结果是() #include <stdio.h> void main() {int a[10]={9,8,7,6}; int *p; p=a; printf("%d,%d\n",*p,*(p+2)); }
输出结果是:2,22
9、下列程序的输出结果是:
#include <stdio.h>
void main()
{int a[5]={2,4,6,8,10},*p,**k;
p=a;k=&p;
printf("%d ",*(p));
printf("%d\n",**k);
}
A)4 4
B)2 2
C)2 4
D)结果错误
运行结果:Fra Baidu bibliotek
}
Jack
}
Mary
16、写出程序的运行结果。
#include <stdio.h>
#include <string.h>
void fun(char *s)
{int i;char a[10]="opqrst";
for(i=0;a[i]!='\0';i++)
*(s+i)=a[i];
} void main()
(3) *(a+2)+3
(4)*(a[2]+3)
5、若有语句:int a=4,*p=&a;下面均代表地址的 一组选项是:
1) a,p,&*a
2) *&a,&a,*p
3) &a,p,&*p
4) *&p,*p,&a
6、以下程序段的输出结果为:
char a[ ]=“Program”,*ptr;
ptr =a;
f是返回值是整型的函数 p是返回一个指针的函数,该指针指向 整型数据
p是指向函数的指针变量,该函数返回 整型数据
p是指针的指针变量,它指向一个指向 整型数据的指针变量
1、指针变量a所指的字符串长度为(),这个长 度是可以用strlen(a)测出来的。
char *a=“\nMy Name is\”wang fei\”.\n”; (1)26 (2) 27 (3) 28 (4) 24 (5)23
}
运行结果:nice to you!
11、下列程序的输出结果是多少?
#include <stdio.h>
void fun(int *a,int *b)
{ int k;
k=5;
*a=k;
*b=*a+k;} void main() { int *a,*b,x=10,y=15; a=&x;
运行结果: 5,10 5,10
10、写出下面程序的运行结果。
#include "stdio.h"
#include "string.h"
void main()
{char a[30]="nice to meet you!";
int b;
b=strlen(a)-9;
strcpy(a+b,"you");
printf("%s\n",a);
运行结果:
{char *p,a[ ]="abcdef"; opqrst
p=a;
fun(p);
printf("%s",p);
}
17、写出程序的运行结果。
#include <stdio.h>
2、下面程序的作用是,将两个变量中的值互换, 请检查程序是否正确,如不正确的,请改正。
#include <stdio.h> void main ( ) {int a=3,b=4; int *p1 , *p2 , *p; 这里改为:int *p1,*p2,p; p1=&a,p2=&b; p=p1;p1=p2;p2=p; 这里改为:p=*p1;*p1=*p2;*p2=p; printf(“a= %d,b= %d\n”,a,b); }
一、有关指针的数据类型
定义 int i; int *p; int a[N]; int *p[N];
int f( ); int *p();
int (*p)( );
int **p;
含义
i是整型变量 p是指向整型数据的指针变量 a是整型数组,它有N个整型元素 p是指针数组,它由N个指向整型数据的 指针元素组成
运行结果:9,7
13、已有变量定义和函数调用语 句:int a=25;print_value(&a); 下面函数的正确输出结果是( )。
void print_value(int *x)
{ printf("%d\n",++(*x)); }
A)23 C)25
B)24 D)26
14、阅读下面程序,输出结果是多少?
void main()
{int i;char **p;
char *name[ ]={"Ann","Hare","Jack","Mary"};
printf("\n Students's names are:\n");
for(i=2;i<4;i++)
{
p=name+i; printf("%s\n",*p);
#include "stdio.h"
void main()
{int c[6]={1,2,3,4,5,6};
int *p;
p=c;
printf("%d,",*++p);
p=p+3;
printf("%d\n“,*p--);
}
运行结果:2,5
15、阅读下面程序,则程序的输出结果是多少?
#include <stdio.h>
for ( ;ptr<a+7;ptr+=2)putchar(*ptr);
1) Program
2) Porm
3) 有语法错误;
4) Por
7、下面说明不正确的是:
1) int *a[4];
3) float (*p)();
2) int **p;
4) char *(*a)[ ];
8 、以下程序段的输出结果为: #include <stdio.h> void main() {int s[ ]={1,2,3,4,5,6,7,8,9},*p; p=s; *(p+5)=22; p++; printf ("%d,%d\n",*p,*(p+4)); }
3、已设p1和p2为指针变量,且已指向同一个整
型数组中的元素,a是一个整型变量,问下面
哪一个语句不能正确执行?
(1) a=*p1
(2) a=*p1+*p2
(3) a=*p1-*p2
(4) p1=a-p2
4、有一个二维数组a[3][4],2行3列元素的正确表 示方法为()。
(1) &a[2][3]
(2)a[2]+3
b=&y;
fun(a,b);
printf("%d,%d\n",*a,*b);
printf("%d,%d\n",x,y); }
12、以下程序段的输出结果是() #include <stdio.h> void main() {int a[10]={9,8,7,6}; int *p; p=a; printf("%d,%d\n",*p,*(p+2)); }
输出结果是:2,22
9、下列程序的输出结果是:
#include <stdio.h>
void main()
{int a[5]={2,4,6,8,10},*p,**k;
p=a;k=&p;
printf("%d ",*(p));
printf("%d\n",**k);
}
A)4 4
B)2 2
C)2 4
D)结果错误
运行结果:Fra Baidu bibliotek
}
Jack
}
Mary
16、写出程序的运行结果。
#include <stdio.h>
#include <string.h>
void fun(char *s)
{int i;char a[10]="opqrst";
for(i=0;a[i]!='\0';i++)
*(s+i)=a[i];
} void main()
(3) *(a+2)+3
(4)*(a[2]+3)
5、若有语句:int a=4,*p=&a;下面均代表地址的 一组选项是:
1) a,p,&*a
2) *&a,&a,*p
3) &a,p,&*p
4) *&p,*p,&a
6、以下程序段的输出结果为:
char a[ ]=“Program”,*ptr;
ptr =a;
f是返回值是整型的函数 p是返回一个指针的函数,该指针指向 整型数据
p是指向函数的指针变量,该函数返回 整型数据
p是指针的指针变量,它指向一个指向 整型数据的指针变量
1、指针变量a所指的字符串长度为(),这个长 度是可以用strlen(a)测出来的。
char *a=“\nMy Name is\”wang fei\”.\n”; (1)26 (2) 27 (3) 28 (4) 24 (5)23
}
运行结果:nice to you!
11、下列程序的输出结果是多少?
#include <stdio.h>
void fun(int *a,int *b)
{ int k;
k=5;
*a=k;
*b=*a+k;} void main() { int *a,*b,x=10,y=15; a=&x;
运行结果: 5,10 5,10
10、写出下面程序的运行结果。
#include "stdio.h"
#include "string.h"
void main()
{char a[30]="nice to meet you!";
int b;
b=strlen(a)-9;
strcpy(a+b,"you");
printf("%s\n",a);
运行结果:
{char *p,a[ ]="abcdef"; opqrst
p=a;
fun(p);
printf("%s",p);
}
17、写出程序的运行结果。
#include <stdio.h>
2、下面程序的作用是,将两个变量中的值互换, 请检查程序是否正确,如不正确的,请改正。
#include <stdio.h> void main ( ) {int a=3,b=4; int *p1 , *p2 , *p; 这里改为:int *p1,*p2,p; p1=&a,p2=&b; p=p1;p1=p2;p2=p; 这里改为:p=*p1;*p1=*p2;*p2=p; printf(“a= %d,b= %d\n”,a,b); }