第八章指针习题 11洗择颗 1.变量的指针,其含义是指该变量的() B.地址 C.名 一个标志 2.已有定义intk=2,int*ptl,pt2:且ptrl和pt2均已指向变量k,下面不能正确执行的 是() Ak=*pt+*ntr2 B.ptr2=k. C.ptrI-ptr2. D.k=*ptrl*(tptr2) 3.以下正确的叙述是( A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定 B.C语言允许main函数带形参,且形参名只能是argc和argv C.当main函数带有形参时,传给形参的值只能从命令行中得到 D.若有说明:main(int argc,char*argv),则形参argc的值必须大于1 4.语句int(pt0 的含义是。 A是指向 组的指针变量 B.是指向int型数据的指针变量 C是指向函数的指针,该函数返回一个it型数据 D.是一个函数名,该函数的返回值是指向it型数据的指针 22编程颗 1利用指针的方法,求数组中的最大数和最小数。 2编程序,将字符串第k个字符开始的连续个字符复制到另一个字符串中。 3.己知数组中存放有个数,现任意读入一个书x要求删除数组中与x相同所有数。 4.遍一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出 该串。请用指针完成 5.输入3个整数,按由小到大的顺序输出 3.3阅读程序,写出程序运行结果 程序一main() int a=12.b=3,"pa."pb pa=&a;pb=&b; printf("max=%d In",*pa>*pb?"pa:"pb). 执行结果是。 程序二#include“stdio.h" main() int k.a]={13,5,7,9,*p=a printf(%d.%d.%dn"p.*(p++).*(p+2)): printf(%d,%d,%dn”,*,*pt+,*+p以
第八章 指针习题 1.1 选择题 1. 变量的指针,其含义是指该变量的( ) A.值 B.地址 C.名 D.一个标志 2.已有定义 int k=2; int *ptr1,ptr2; 且 ptr1 和 ptr2 均已指向变量 k ,下面不能正确执行的 是( ) A.k=*ptr1 +*ptr2; B.ptr2=k; C.ptr1=ptr2; D.k=*ptr1*(*ptr2); 3.以下正确的叙述是( ) A.C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定 B.C 语言允许 main 函数带形参,且形参名只能是 argc 和 argv C.当 main 函数带有形参时,传给形参的值只能从命令行中得到 D.若有说明:main( int argc ,char *argv ),则形参 argc 的值必须大于 1 4.语句 int (* ptr)(); 的含义是( ) A.是指向一维数组的指针变量 B.是指向 int 型数据的指针变量 C.是指向函数的指针,该函数返回一个 int 型数据 D.是一个函数名,该函数的返回值是指向 int 型数据的指针 2.2 编程题 1.利用指针的方法,求数组中的最大数和最小数。 2.编程序,将字符串第 k 个字符开始的连续 n 个字符复制到另一个字符串中。 3.已知数组中存放有 n 个数,现任意读入一个书 x 要求删除数组中与 x 相同所有数。 4.遍一程序,将字符串 computer 赋给一个字符数组,然后从第一个字母开始间隔地输出 该串。请用指针完成。 5.输入 3 个整数,按由小到大的顺序输出。 3.3 阅读程序,写出程序运行结果 程序一 main( ) { int a=12,b=3 ,*pa,*pb; pa=&a; pb=&b; printf(“max=%d \n”,*pa >*pb ?*pa :*pb); } 执行结果是 。 程序二 # include “stdio.h” main( ) { int k,a[ ] ={1,3,5,7,9} ,*p=a; printf (“%d,%d,%d\n”,*p,*(p++) ,*(p+2)); printf(“%d,%d,%d\n”,* ,*p++,*++p);
for(k-0:k<5,k+) printf("%d"a[k]): printf("n"): } 执行结果是 程序三main() {inta4=(1,3,5,7: inti,*p: D-a; printf(%d%dp.++p) 执行结果是」 程序四main( imtx0={01,2,3,45.6,7,89y int s,i,*p: 50: p-&x0 for(i=1:i<10.i+=2) s+=*(p+i): printf("sum=%d".s), 执行结果是」 上机实验 1.目的和要求 (仙)掌握指针和变量之间的关系 (②)掌握数组和指针的关系 (3)掌握函数与指针的关系 2.实验内容
for (k=0; k<5, k++) printf(“%d”,a[k]); printf(“\n”); } 执行结果是 。 程序三 main( ) { int a[4] ={1,3,5,7}; int i,*p; p=a; printf(“%d,%d”,*p,++*p); } 执行结果是 。 程序四 main() { int x[]={0,1,2,3,4,5,6,7,8,9}; int s,i,*p; s=0; p=&x[0]; for(i=1;i<10;i+=2) s+=*(p+i); printf("sum=%d",s); } 执行结果是 。 上机实验 1.目的和要求 ⑴掌握指针和变量之间的关系 ⑵掌握数组和指针的关系 ⑶掌握函数与指针的关系 2.实验内容
(①)通过指针变量给所指向的变量赋值。 程序如下: void main() int*pl,"p2.a.b. pl=&a;p2=&b: scanf(%d.%d"p1,p2) printf(%d,%d”,abg } 要求 1.输入3和4调试运行程序。 2.指针和变量的关系。 (②)输入3个整数,按降序(从大到小的顺序)输出。要求使用变量的指针作函数调用 的实参来实现。 #include void exchange(,int*ptr2) int temp; temp=*ptrl,*ptr1="ptr2.*ptr2=temp main() { int numl.num2.num3.*pl.*p2.*p3; pl-&numl; p2=&num2 p3=&num3. scanf("%d.%d.%d".&num1.&num2.&num3). printf("num1-%d,num2-%d.num3-%d\n"num1,num2,num3)/ if(numl<num2)exchange(pl,p2); if(numl<num3)exchange(pl,p3)月
⑴ 通过指针变量给所指向的变量赋值。 程序如下: void main( ) { int *p1,*p2,a,b; p1=&a;p2=&b; scanf(“%d,%d”,p1,p2); printf(“%d,%d”,a,b); } 要求: 1. 输入 3 和 4 调试运行程序。 2. 指针和变量的关系。 ⑵输入 3 个整数,按降序(从大到小的顺序)输出。要求使用变量的指针作函数调用 的实参来实现。 #include void exchange(int *ptr1, int *ptr2) { int temp; temp=*ptr1, *ptr1=*ptr2, *ptr2=temp; } main() { int num1,num2,num3,*p1,*p2,*p3; p1=&num1; p2=&num2; p3=&num3; scanf("%d,%d,%d",&num1,&num2,&num3); printf("num1=%d,num2=%d,num3=%d\n",num1,num2,num3); /*排序*/ if(num1<num2) exchange( p1, p2); if(num1<num3) exchange( p1, p3 );
if num2<num3)exchange((p2,p3方产输出排序结果/ printf"Sorted the three numbers:%%%,num3). } 要求: 1.调试运行程序。 2.其中比较大小语句可改写成多层论嵌套,之后调试并运行程序
if(num2<num3) exchange( p2, p3 ); /*输出排序结果*/ printf("Sorted the three numbers:%d,%d,%d\n",num1,num2,num3); } 要求: 1. 调试运行程序。 2. 其中比较大小语句可改写成多层 if 嵌套,之后调试并运行程序