C语言习题课(指针)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Βιβλιοθήκη Baidu1、下列程序的输出结果是多少?
#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
b=&y;
fun(a,b);
运行结果: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
-- 精品--
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个指向整型数据的 指针元素组成
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
-- 精品--
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]
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)结果错误
-- 精品--
10、写出下面程序的运行结果。
14、阅读下面程序,输出结果是多少?
#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、阅读下面程序,则程序的输出结果是多少?
} void main()
#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);
}
运-- 精行品-- 结果:nice to you!
ptr =a;
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)[ ];
运行结果:
}
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];
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)); }
-- 精品-- 输出结果是:2,22
#include <stdio.h>
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);
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)a[2]+3
(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;