实验十四指针(2 班级 姓名 指导老师 成绩 第 机房 号机器时间: 实验目的:1.掌握数组与指针的关系并能够利用指针解决数组的相关问题。 2.掌握字符串与指针的关系并能够利用指针处理字符串的问题。 3.掌握指针与函数的关系并能够利用指针处理函数问题。 4.了解指向指针的指针的概念及其使用方法 5.能够使用指针进行程序设计 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果 实验内容 读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 #include main( t int a=l, b=2, C=3,*pa=&a, *pb=&b,*pc=&c ;c+=上 printf("d,暑d,器dln",*pa,*pb,*pc) printf("d,号d,旨d\n”,*pa,*pb,*pc); 分析结果 行结果 #include id inv(i
实验十四 指针(2) 班级______________姓名___________指导老师_____________成绩___________ 第_____________机房___________号机器 时间:________________________ 实验目的:1. 掌握数组与指针的关系并能够利用指针解决数组的相关问题。 2. 掌握字符串与指针的关系并能够利用指针处理字符串的问题。 3. 掌握指针与函数的关系并能够利用指针处理函数问题。 4. 了解指向指针的指针的概念及其使用方法。 5. 能够使用指针进行程序设计。 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果。 实 验 内 容 一、读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1. #include main() { int a=1,b=2,c=3,*pa=&a,*pb=&b,*pc=&c; a++;c+=b; { int b=4,c,*pb=&b,*pc=&c; c=2*b; a+=c; printf("%d,%d,%d\n",*pa,*pb,*pc); } printf("%d,%d,%d\n",*pa,*pb,*pc); } 分析结果 运行结果 2. #include void inv(int *a,int n) { int *p,*pa,*pe; int t,m; m=(n-1)/2;
C语言程序设计上机指导与同步训练 main() inta[j={0,1,2,3,4,5,6 (1=0;i char bl [8]="abcdefg", b2 [8],*pb=b1+3 while (--pb>=b1) strcpy(b2, pb) printf("gd\n", strlen(b2)) 分析结果 运行结果 #include inta[2][3]={{1,2,3},{10,11,12} int i,j,*pa [2]; [0]=a[0 for(=0;j<3;j++) printf("\n");1
·76· C 语言程序设计上机指导与同步训练 ·76· pa=a; pe=a+n-1; p=a+m; while(pa #include main() { char b1[8]="abcdefg",b2[8],*pb=b1+3; while (--pb>=b1) strcpy(b2,pb); printf("%d\n",strlen(b2)); } 分析结果 运行结果 4. #include main() { int a[2][3]={{1,2,3},{10,11,12}}; int i,j,*pa[2]; pa[0]=a[0]; pa[1]=a[1]; for (i=0;i<2;i++) { for(j=0;j<3;j++) printf("%4d",*pa[i]++); printf("\n"); } }
第一部分c语言程序设计上机指导 析结果 运行结果 #include tdi. h> swap(int *pl, int *p2) t=*p1;*p1=*p2;*p2=t; main() t int a=2,b=3,*pa,*pb pa=&ai pb=&b if(*pa inta[3]4]={{1,2,3,4}{5,6,7,8},{9,10,11,12}}; for(p=a [ol I if((p-a[01)84==0) printf("\n 2.下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字 #include #include maln I char str[81],*sptr; for(i=0;i<80;i++) str[i]-getchar() if(str[i]=='\n') breaki [i]='\0'; sptr=str thile(*sptr)
第一部分 C 语言程序设计上机指导 ·77· ·77· 分析结果 运行结果 5. #include swap(int *p1,int *p2) { int t; t=*p1;*p1=*p2;*p2=t; } main() { int a=2,b=3,*pa,*pb; pa=&a;pb=&b; if(*pa main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int *p; for(p=a[0];______________;______________) { if((p-a[0])%4==0) printf("\n"); ____________________; } } 2. 下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字 符串。 #include #include main() { char str[81],*sptr; int i; for (i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\n') break; } str[i]='\0'; sptr=str; while(*sptr)
C语言程序设计上机指导与同步训练 3.下面的程序实现从10个数中找出最大值和最小值。 #include int max min max=min=* for if( )max=* else if )min=*g; i int i, num[10]; for(i=0;i #include void mystrcat(char *pa, char *pb) for(;*pa!='\0';pa++) main() char a[80],b[20]; printf("\nLink string: ss\n", a) 调试程序 1.仔细阅读程序,判断程序对错。 main() pa=vai pb=vb
·78· C 语言程序设计上机指导与同步训练 ·78· putchar(____________); } 3. 下面的程序实现从 10 个数中找出最大值和最小值。 #include int max,min; find_max_min(int *p,int n) { int *q; max=min=*p; for(q=_________;___________;q++) if(___________) max=*q; else if (___________)min=*q; } main() { int i,num[10]; printf("input 10 numbers:\n"); for(i=0;i #include void mystrcat(char *pa,char *pb) { for(;*pa!='\0';pa++) ; for(;*pb!='\0';______________;) ______________; *pa='\0'; } main() {char a[80],b[20]; gets(a); gets(b); ___________________; printf("\nLink string:%s\n",a); } 三、调试程序 1. 仔细阅读程序,判断程序对错。 #include main() { int va[10],vb[10],*pa,*pb,i; pa=va;pb=vb;
第一部分c语言程序设计上机指导 for(i=0;i int i b[o]="s';b[1]="t';b[2]="u';b[3]='d';b[4]="y';b[5]='\0'; printf("b=旨s\n",b); for(=0; 1 char strl [20], str2 [20], str3 [20]i
第一部分 C 语言程序设计上机指导 ·79· ·79· for(i=0;i main() { int i; char *a,b[6]; a="STUDY"; b[0]='s';b[1]='t';b[2]='u';b[3]='d';b[4]='y';b[5]='\0'; printf("a=%s\n",a); printf("b=%s\n",b); for(i=0;i main() { char str1[20],str2[20],str3[20]; char swap();
C语言程序设计上机指导与同步训练 printf ("\nPlease enter three string: \n") gets(strl); gets(str2)gets(str3); if (strcmp(strl, str2)>0) swap(strl, str2); if (strcmp(strl, str3)>0) swap(strl, str3)i if (strcmp(str2, str2)>0) swap(str2, str3)i printf("\n")i printf("gs\nss\nss\n", strl, str2, str3);) ar swap(char *p i char *p; p=p1;p1=p2;p2=p 正确 运行结果: 4.以下程序实现选择法对输入的任意10个整数排序。 #include int *p,i,j, a[10] for(i=0;ix [k]) k=j t=x[i];x[i]=x【k];x【k]=t;} 正确 运行结果 错误所在
·80· C 语言程序设计上机指导与同步训练 ·80· printf("\nPlease enter three string:\n"); gets(str1); gets(str2);gets(str3); if (strcmp(str1,str2)>0) swap(str1,str2); if (strcmp(str1,str3)>0) swap(str1,str3); if (strcmp(str2,str2)>0) swap(str2,str3); printf("\n"); printf("%s\n%s\n%s\n",str1,str2,str3); } char swap(char *p1,char *p2) { char *p; p=p1;p1=p2;p2=p; } 正确 运行结果: 错误 错误所在: 应改为: 4. 以下程序实现选择法对输入的任意 10 个整数排序。 #include main() { int *p,i,j,a[10]; p=a; for(i=0;ix[k]) k=j; if(k!=i) { t=x[i];x[i]=x[k];x[k]=t;} } } 正确 运行结果: 错误 错误所在: 应改为:
第一部分c语言程序设计上机指导 、写程序 1.编写一个名为pd、无返回值的函数,它带有3个参数;一个是int型数组x,数组 ⅹ的长度为n,以及foat型指针p,由它所指变量带回数组x中n个元素的平均值。main 函数调用函数prd,并输出实际数组元素的平均值。 2.编写一个名为bst的函数它以一个int型数组及数组元素个数为参数,功能是找出 数组中最小元素和最大元素,将最小元素与数组首元素交换最大元素与数组尾元素交换 main函数用实际数组验证之 3.编写一个程序,用每周的英文名称初始化一个字符指针数组,当键盘输入整数为1 到7时,显示相应的星期名,键入其他整数及字符时显示错误信息
第一部分 C 语言程序设计上机指导 ·81· ·81· 四、写程序 1. 编写一个名为 prd、无返回值的函数,它带有 3 个参数;一个是 int 型数组 x,数组 x 的长度为 n,以及 float 型指针 p,由它所指变量带回数组 x 中 n 个元素的平均值。main 函数调用函数 prd,并输出实际数组元素的平均值。 2. 编写一个名为 bst 的函数,它以一个 int 型数组及数组元素个数为参数,功能是找出 数组中最小元素和最大元素,将最小元素与数组首元素交换,最大元素与数组尾元素交换。 main 函数用实际数组验证之。 3. 编写一个程序,用每周的英文名称初始化一个字符指针数组,当键盘输入整数为 1 到 7 时,显示相应的星期名,键入其他整数及字符时显示错误信息