第十章指针
问题与思考
一、选择题
1.变量的指针,其含义是指该变量的________.
a)值 b)地址 c)名 d)一个标志
2.若有说明;int *p,m=5,n;以下正确的程序段的是________.
a)p=&n; b)p=&n;
scanf("%d",&p); scanf("%d",*p);
c)scanf("%d",&n); d)p=&n;
*p=n; *p=m;
3.若有以下定义,则对a数组元素的正确引用是_________.
int a[5],*p=a;
a) *&a[5] b) a+2 c) *(p+5) d) *(a+2)
4.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.
a) *(a[i]+j) b) (a+i) c) *(a+j) d) a[i]+j
5. 下面程序段的运行结果是_________.
char *s="abcde";
s+=2;printf("%d",s);
a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果
6.以下正确的程序段是_________.
a)char str[20]; b)char *p;
scanf("%s",&str); scanf("%s",p);
c)char str[20]; d)char str[20],*p=str;
scanf("%s",&str[2]); scanf("%s",p[2]);
7.若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是________.
a)a+1表示的是字符t的地址
b)p指向另外的字符串时,字符串的长度不受限制
c)p变量中存放的地址值可以改变
d)a中只能存放10个字符
8.下面程序的运行结果是_______.
#include
#include
main()
{ char *s1="AbDeG";
char *s2="AbdEg";
s1+=2;s2+=2;
printf("%d\n",strcmp(s1,s2));
}
a)正数 b)负数 c)零 d)不确定的值
9.下面程序的运行结果是_______.
#include
#include
fun(char *w,int n)
{char t,*s1,*s2;
s1=w;s2=w+n-1;
while(s1 } main() {char *p; p=""; fun(p,strlen(p)); puts(p); } a) b) c) d) 10. 已知说明语句int (*p)[ ];,则下列叙述正确的是:______。 A) p是一个指针变量,它指向一个整型一维数组 B) 是一个指针变量,它指向一个整型数据 C) p是一个指针变量,它指向一个返回值是整数的函数 D) 以上都不对 11.若数组名作实参而指针变量作形参,函数调用实参传给形参的是:。 A)数组的长度 B)数组第一个元素的值 C)数组所有元素的值D)数组第一个元素的地址 12. 已知有声明语句char s1[10]="abcde",s3[10];以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是:______。 A)s3=s1,s1=s2,s2=s3; B)s3[0]=s1[0],s1[0]=s2[0],s2[0]=3[0]; C)strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]); D)strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,s3); 13.设int b[ ]={1,2,3,4},y,*p=b; 则执行语句y=*p++;之后,变量y的值为( ) A)1 B)2 C)3 D)4 二、填空题: 1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 #include "stdlib.h" main() {int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z; printf("输入3个整数:"); scanf("%d%d%d",a,b,c); printf("%d,%d,%d\n",*a,*b,*c); num=*a; if(*a>*b)【1】 ; if(num>*c)【2】 ; printf("输出最小整数:%d\n",num); } 2.下面程序段的运行结果是________. char s[80],*sp="HELLO!"; sp=strcpy(s,sp); s[0]='h'; puts(sp); 3.下面程序段的运行结果是________. char str[]="abc\0def\0ghi",*p=str; printf("%s",p+5); 若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______. *(a+5)的值是_________. 4.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. *(*(a+1)+0))的值是________. 5.以下程序将数组a中的数据按逆序存放,请填空。 #define M 8 main() {int a[M],i,j,t; for(i=0;i i=0;j=M-1; while(i { t=*(a+i); 【1】 ;*( 【2】 )=t; i++;j--; } for(i=0;i } 6.若有定义:int a[3][5],i,j;且0<=i<3,0<=j<5,则a数组中任一元素可用五种形式引用。它们是: (1)a[i][j] (2)*(a[i]+j) (3)*(*______); (4)(*(a+i))[j](5)*(____+5*i+j) 7.下面程序的运行结果是_________. main() {char *a[]={"Pascal","C lan guage","dBase","Coble"}; char (**p)[]; int j; p=a+3; for(j=3;j>=0;j--)printf("%s\n",*(p--)); } 8. char (*pa)[10];则pa的类型是:___ ___。 9. 设int a[10],b[3][3];数组元素a[5]和b[1][2]分别用指针表示的形式是_____________和_____________。 10. 下列程序的功能是在数组中同时查找最大元素下标和最小元素下标,分别存放在main 函数的变量max 和min 中,请填空 #include "stdio.h" void find(int *a ,int n ,int *max ,int *min) { int i; *max=*min=0; for(i=1;i if(a[i]>a[*max]) 【1】 ; else if(a[i] 【2】 ; } void main( ) { int a[]={5,8,7,6,2,7,3},max,min; find( 【3】 ); printf("\n%d, %d\n",max,min); } 11. 下面程序的功能是统计字串sub在母串s中出现的次数。请选择填空。 #include "stdio.h" #include "string.h" main() { char s[80], sub[80]; int n; gets(s); gets(sub); printf("%d\n", count(s,sub)); } int count( char *p, char *q) { int m, n, k, num=0; for (m=0; p[m]; m++) for (【1】, k=0; q[k]==p[n]; k++, n++) if(q[【2】]=='\0') { num++; break;} return (num); } 12.下面程序的运行结果是________。 void swap(int *a, int *b) { int *t; t=a; a=b; b=t; } main() { int x=3, y=5, *p=&x, *q=&y; swap(p,q); printf("%d %d\n", *p, *q); } 13.下面程序的功能是将字符串中的数字字符删除后输出。请填空。 #include "stdio.h" #include "malloc.h" void delnum( char *t) { int m, n; for (m=0,n=0; t[m]!='\0';m++) if (t[m]<'0' 【1】t[m]>'9') { t[n]=t[m]; n++;} 【2】; } main() { char s[100]; printf("\n input the original string:"); gets(s); delnum(s); puts(【3】); } 第十章答案 选择题 1.B 2.D 3.D 4.A 5.C 6.C 7.D(数组a的长度是11) 8.B 9.C 10.A 11.D 12.D 13.A 填空题 1.num=*b num=*c 2. hELLO(第一个字母小写,其它字母不变) 3. ef 4 12 4. 8 8 5. *(a+i)=*(a+j);*(a+j)=t; 6. (3) *(*(a+i)+j) (5) *(a+5*i+j) 7. Coble 8. 指向一维数组的指针,该数组有10个char型元素 9. *(a+5) *(*(b+1)+2) 10. *max=i; *min=i; find(a,7,&max,&min) 11. n=m q[k+1]=='\0' 12. 3 5 13. ||(或者) t[n]='\0'; s 第十章指针 一、选择题 1.变量的指针,其含义是指该变量的_______________。 A) 值B) 地址C) 名D)一个标志 2.已有定义int k=2; int *ptr1, *ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值是________________。 A)k=*ptr1+*ptr2 B) ptr2=k C) ptr1=ptr2D)k=*ptr1*(*ptr2) 3.若有定义int *p, m=5,n;以下程序段正确的是________________。 A) p=&n; B) p=&n; scanf("%d",&p); scanf("%d",*p); C) scanf("%d",&n); D) p=&n; *p=n; *p=m; 4.若有定义:int *p1, *p2, m=5, n;以下____________是正确的赋值语句。 A) p1=&m; p2=&p1; B)*p1=*p2; C) p1=&m; p2=p1; D) p1=&m; *p2=*p1; 5.若有int *p, a=4;和p=&a;下面____________均代表地址。 A) a, p, *&a B)&*a, &a, *p C) *&p, *p, &a D)&a, &*p, p 6.若变量已正确定义并且指针p已经指向变量x,则*&x相当于____________。 A) x B) p C) &x D) &*p 7.若定义了int m, n=0, *p1=&m;则下列____________表达式与m=n等价。 A) m=*p1 B)*p1=&*n C) *&p1=&*n D) *p1=*&n; 8. 假如指针p已经指向整型变量x,则(*p)++相当于____________。 A) x++ B) p++ C) *(p++) D) &x++ 9. 对于基类型相同的两个指针变量之间,不能进行的运算是____________。 A) < B) = C) + D) - 10. 若程序中已包含头文件stdio.h,以下选项中正确运用指针变量的程序段是__________。 A) int *i=NULL; B) float *f=NULL scanf("%d",i); *f=10.5; C) char t='m',*c=&t; D) long *L; *c=&t; L='\0'; 11. 有如下函数和变量定义int a=25; 执行语句print_value(&a);后的输出结果是___________。 void print_value(int *x) { printf("%d",++*x); } A) 23 B) 24 C) 25 D) 26 12. 若有定义:char s[10]; 则在下面表达式中不表示s[1]的地址的是___________。 A) s+1 B) s++ C) &s[0]+1 D) &s[1] 13.若有定义:int a[5], *p=a; 则对a数组元素的正确引用是_____________。 A)*&a[5]B)a+2 C)*(p+5) D)*(a+2) 14. 若有定义:int a[5], *p=a; 则对a数组元素地址的正确引用是_____________。 A)p+5B)*a+1 C)&a+1 D)&a[0] 15. 若有定义:int a[5]; 则a数组中首元素的地址可以表示为_____________。 A)&a B)a+1 C)a D)&a[1] 16. 若要对a进行合法的自减运算,则之前应有下面___________的说明。 A) int p[3]; B) int k; C) char *a[3]; D) int b[10]; (2014~2015学年-第1学期) 1. 理解指针、地址和数组间的关系。 2. 掌握通过指针操作数组元素的方法; 3. 掌握数组名作为函数参数的编程方式。 4. 掌握通过指针操作字符串的方法。 5. 了解掌握使用断点调试程序的方法。 二、实验环境: 操作系统:Window 8 编译环境:CodeBlock 13.02 三、实验要求及内容(根据实验要求,将整个实验过程需要的数据和截屏记录于此,并整理成实验步骤。): 1.设计一个程序计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2,float *psum,float *pdiff),其中op1和op2是输入的两个数,*psum和*pdiff是计算得出的和与差。 解: (1)流程图如图1所示: 图1 程序7-1的流程图 图2 实验7-1实验源代码 (3)运行结果(测试用例) 实验7-1运行结果如图3所示 图3 实验7-1运行结果 2. 输入n 个正整数,使用选择法将它们从小到大排序后输出。要求:利用所学指针的内容实现。 提示:在指针这一章所学的冒泡排序算法基础上改写。 解: (1)流程图如图1所示: 图1 程序7-2的流程图 图2 实验7-2实验源代码(3)运行结果(测试用例)实验7-2运行结果如图3所示 图3 实验7-2运行结果 3. 输入10个整数存入数组a ,再输入一个整数x ,在数组a 中查找x ,若找到则输出相应的下标,否则显示“Not found ”。要求定义和调用函数seach(int list[],int n ,int x),在数组list 中查找元素x ,若找到则返回相应的下标,否则返回-1,参数n 代表数组list 中元素的数量。试编写相应程序。 解:(1)流程图如图1 7-3的流程图 (2)源代码 源代码如图2所示 实验10 指针作为函数的参数 一、实验目的 1、学会使用指针变量作为函数的参数。 2、学会使用数组作为函数的参数。 3、正确理解和掌握指针与数组的关系。 二、实验知识点 1、指针变量的定义。注意:指针变量和一般简单变量的区别。 2、简单变量作为函数的参数是一种值传递方式。 3、指针作为函数参数是一种地址传递方式。 4、数组作为函数的参数也是一种地址传递方式。 三、实验内容和步骤 1、分析下面程序的运行结果,并调试程序。 //指针作为函数的参数 #include # include 《C++指针》习题 学号姓名 一、选择题 1、有定义如下:int a[5], *p; 则下列描述错误的是B A.表达式p=p+1是合法的B.表达式a=a+1是合法的 C.表达式p-a是合法的D.表达式a+2是合法的 2、函数定义为Fun(int &i),变量定义n=100,则下面调用该函数正确的 是C A.Fun(20) B.Fun(20+n) C.Fun(n) D.Fun(&n) 3、若有说明int I,j=2,*p=&i;则能完成i=j赋值功能的语句是B A.i=*p; B.*p=*&j; C.i=&j; D.i=**p; 4、设已有定义char *st = "how are you";下列程序中正确的是A A.char a[11],*p;strcpy(p=a+1,&st[4]); B.char a[11];strcpy(++a,st); C. char a[11];strcpy(a,st); D. char a[],*p;strcpy(p=a[1],st+2); 5、设有数组int array[3][4],下列引用数组元素的方法中错误的是D A.array[i][j] B.*(*(array+i)+j) C. *(array[i]+j) D. *(array+i*4+j) 6、有定义int s[4][5],(*ps)[5];ps=s;则对数组s中元素引用的正确 的是C A.ps+1 B.*(ps+3) C. ps[0][2] D. *(ps+1)+3 7、设有说明int b[4][4],以下不能等价表示元素b[3][3]的是:B A.*&b[3][3] B.(*(*(b+3))+3) C.*(b[3]+3) D.*(*(b+3)+3) 8、若有说明"char *s[]={"234","5678","9012","3456","7890"};",则表达 式*s[1]> *s[3]比较的是B A."1234"和"9012" B.'5'和'3' C.'l'和'9' D."5678"和"3456" 9、设语句"char *s[]={"Student","Teacher","Father","Mother"},*ps=s[2];",执行语句"cout<<*s[1]<<','< 第十章指针 10.1 输入3个整数,按照从小到大的顺序输出 #include if(strcmp(str1,str3)) swap(str1,str3); if(strcmp(str2,str3)) swap(str2,str3); printf("the order: %s,%s,%s\n",str1,str2,str3); } void swap(char *p1, char *p2) { char temp[20]; strcpy(temp,p1); strcpy(p1,p2); strcpy(p2,temp); } NOTE:gets()用于获取字符串输入。strcmp() 和strcpy()的应用 10.3 输入10个整数,将其中最小的数和第一个数对换,把最大的数和最后一个数对换,写三个函数:①输入十个数;②进行处理;③输出十个数 #include 《C语言程序设计》实验报告实验序号:7 实验项目:指针 一、实验目的及要求 1、通过实验掌握指针的定义和使用指针变量; 2、掌握使用指针对数组和字符串进行操作; 3、掌握函数中指针类型参数的使用; 4、要求采用指针方法完成。 二、实验设备(环境)及要求 使用Turbo C 或Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤 1.输入运行下面这个程序,观察并分析结果: #include "stdio.h" void main() { int a[]={2,3,4,5,6}; int *p1; char *p2="computer\n"; p1=a; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); p1=a+2; printf("%d\n",p1+2); printf("%d\n",*(p1+2)); printf(p2+2); printf("%s",p2+2); } 运行结果截图: 2.以下程序调用invert 函数按逆序重新放置a 数组中的值,a 数组中的值在main 函数中读入,请填空。 #include "stdio.h" void invert(int *s,int i,int j) { int t; if(i 实验10指针做函数参数编程训练 实验目的: 1.掌握指针的定义及使用; 2.体会使用指针的作用; 3.掌握指针做函数参数的作用; 4.掌握指针做函数参数的基本步骤; 实验题目: 1.输入某年某月某日,计算并输出它是这一年的第几天。 /*函数功能:对给定的某年某月某日,计算它是这一年第几天 函数参数:整型变量year,month,day,分别代表年,月,日 函数返回值:这一年的第几天*/ int DayofYear(int year,int month,int day); 2.输入某一年的第几天,计算并输出它是这一年的第几月第几日。 /*函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日函数入口参数:整型变量year,存储年 整型变量yearDay,存储这一年的第几天 函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量 整型指针pDay,指向存储第几日的整型变量 函数返回值:无*/ void MonthDay(int year,int yearDay,int *pMonth,int *pDay); 3.输出如下菜单,用switch语句实现根据用户输入的选择执行相应的操作。 1.year/month/day->yearDay 2.yearDay->year/month/day 3.Exit Please enter your choice: 参考程序及注释: #include 习题解答 一、单项选择题 1.若定义了int n=2, *p=&n, *q=p;则下面【】的赋值是非法的。 A.p=q B. *p=*q C. n=*q D. p=n 【答案】D 2.若定义了double *p, a;则能通过scanf函数给输入项读入数据的程序段是【】。 A.p=&a; scanf(“%1e”,p); B. *p=&a; scanf(“%1f”,p); C. p=&a; scanf(“%f”,p); D. p=&a; scanf(“%1f”,a); 【答案】C 3.若定义了int a[10], i=3, *p; p=&a[5];下面不能表示为a数组元素的是【】。 A.p[-5] B. a[i+5] C. *p++ D. a[i-5] 【答案】D 4.若有如下定义: int n[5]={1,2,3,4,5},*p=n; 则值为5的表达式是【】。 A.*+5 B. *(p+5) C. *p+=4 D. p+4 【答案】C 5.设变量b的地址已赋给指针变量ps,下面为“真”的表达式是【】。 A.b==&ps B. b==ps C. b==*ps D. &b==&ps 【答案】C 6.设有以下定义和语句: int a[3][2]={1,2,3,4,5,6},*p[3]; p[0]=a[1]; 则*(p[0]+1)所代表的数组元素是【】。 A.a[0][1] B. a[1][0] C. a[1][1] D. a[1][2] 【答案】C 7.若定义了char *str=”Hello!”;下面程序段中正确的是【】。 A.char c[ ], *p=c; strcpy(p,str); B.char c[5], *p; strcpy(p=&c[1],&str[3]); C.char c[5]; strcpy(c,str); D.char c[5]; strcpy(p=c+2,str+3); 【答案】B 8.若有下面的程序段,则不正确的fxy函数的首部是【】。 main() { int a[20], n; … fxy(n, &a[10]); … } A.void fxy(int i, int j) B. void fxy(int x, int *y) C. void fxy(int m, int n[]) D. void fxy(int p, int q[10]) 【答案】A 9.不合法的带参数main函数的首部形式是【】。 上机实验十指针与数组 学号: 姓名: 一、目的要求: 1.了解或掌握指针与数组的关系,指针与数组有关的算术运算、比较运算。 2.了解或掌握运用指针处理数组。 二、实验内容: 第1题、分别用下标法和指针变量p访问数组a[5]={1,3,5,7,9},至少用三种方法输出数组各元素的值,每种方法输出的五个元素在一行上。 第2题、书上P211例10-4。并仔细体会P212“使用指针实现数组元素逆序存放”的指针移动思想。 第3题、编写程序,使用指针实现逆序打印一维整型数组所有元素的操作。 数组a: 1 3 7 2 9 6 5 8 2 0 4 8 2 0 4 第4题、书上P213冒泡排序。 第5题、编写一个函数s(a,n),其中a是一个指向整型的指针接受一维整型数组首地址,n 是数组长度,功能是通过指针求数组中元素的平均值,并编写主函数测试函数。 第6题、编写一个函数void sort(int *a, int n), 用选择法对数组a中的元素按降序排序。在main()函数中输入10个数,调用sort函数排序后,然后输出。 第7题、使用指针把从键盘输入的2个数按从大到小的顺序输出(不改变变量的值),请补充完整并上机调试。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 第8题、输入10个整数存入一维数组,然后逆置数组,最后输出。下面给出部分程序的内容,请将程序补充完整,然后上机调试。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 第9题、上机调试下面程序,看哪些程序实现了交换主函数中两个变量值的操作,哪些没有实现,并分析原因。 第10题、调试修改下面程序,函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。例如: 若输入 2 8 5 7 8 4 5 3 2 8 则应输出:The max: 8 The positions: 1 4 9 请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 C++上机实验报告 实验名称:指针 专业班级: 姓名: 学号: 实验日期: 目录 1.实验目的 2.实验内容 3.程序代码 4.调试结果 5.实验心得 1.实验目的 (1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量; (3)能正确使用字符串的指针和指向字符串的指针变量; (4)能正确使用引用型变量。 2.实验内容 编程序并上机调试运行程序(要求用指针或引用处理)。 (1)输入3个整数,按由小到大的顺序输出。编译一个程序,用指针变量作为参数。 (2)在上题的基础上将程序改为:输入3个字符串,按由小到大的顺序输出。 (3)用引用指针变量作为形参,实现3个整数由小到大输出。(4)有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡是到3的人退出圈子,问最后留下的人原来排在第几号。(5)在主函数中输入10个字符串。用另一个函数最它们排序。然后在主函数输出这10个已排好的字符串。 要求用以下方法编程: Ⅰ.指向一维数组的指针座函数参数; Ⅱ.用string数组方法。 3.程序代码 (1) #include 指针综合练习题 一、选择题 1.若有以下定义,则对a数组元素的正确引用是____d_____. int a[5],*p=a; a)*&a[5] b)a+2 c)*(p+5) d)*(a+2) 2.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为__d____. a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j 3.若有以下定义,则p+5表示___a____. int a[10],*p=a; a)元素a[5]的地址b)元素a[5]的值 c)元素a[6]的地址d)元素a[6]的值 4.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确 执行的赋值语句是____b____. a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2); 5.若有说明语句 char a[]="It is mine"; char *p="It is mine"; 则以下不正确的叙述是___d_____. a)a+1表示的是字符t的地址 b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符 二、填空题 1 指针变量保存了另一变量的(1)值,不可以任意给指针变量赋一个地址值,只能赋给 它(2)和(3)的地址。使用变量名来访问变量,是按(4)来直接存取变量称为(5)方式;而借助指针变量取得另一变量的地址,访问该变量称为(6)方式。 答案:(1)地址 (2)NULL (3)已经分配了内存的变量的地址 (4)按变量的地址 (5)直接访问 (6)间接访问 2 以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。 请填空。 void main() {int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z; cou<<"输入3个整数:"; cin>>a>>b>>c; cout<<*a<<*b<<*c; num=*a; 实验十一指针应用(二) 一?实验目的 1.了解指针与函数的关系并能够初步利用指针处理函数问题。 2.了解指向数组的指针的概念及其使用方法。 3.了解指向指针的指针的概念及其使用方法。 二?实验学时数 1学时 三?实验步骤 (一)阅读程序 #include 3. #include 《C语言程序设计》 实验报告 实验时间: 6月7号 实验班级:计算机双学位1501 实验报告总份(片)数: 1 份(片) 实验教师:饶东宁 计算机学院工一实验室 广东工业大学 《C语言程序设计》 实验报告 实验题目: 实验10 实验时间: 6月7号 实验班级:双学位1501 实验人学号: 3213010359 实验人姓名:梁雪卿 实验教师:饶东宁 计算机学院工一实验室 广东工业大学 实验10 指针2 1 实验目得 (1)进一步掌握指针得应用 (2)能正确使用数组得指针与指向数组得指针变量 (3)能正确使用字符串得指针与指向字符串得指针变量 (4)了解指向指针得指针得用法 2 实验内容 根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要得讨论分析。 (1)有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3得人退出圈子,问最后留下得就是原来得第几号得人。 算法说明: #include { *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } while(*p==0) p++; printf("The last one is NO、%d\n",*p); return 0; } 运行结果: 分析与思考: 以1到n为序给每个人编号,i为每次循环时计数变量,k为按 编程题 1用指向数组的指针变量输出数组的全部元素 #include第十章 指针
【实验指导书】实验7:指针 (1)
实验10 指针作为函数的参数
《C++指针》习题参考答案
C程序设计第三版第十章题解
实验7-指针
实验10指针做函数参数编程训练
教材课后题答案-第6章_指针习题答案
上机实验十 指针与数组
C++上机实验报告(指针)
指针综合练习题(带答案)
实验十一指针应用二daan
实验10 指针2 (修复的)
指针练习题与答案