实验十四指针(2 班级 姓名 指导老师 成绩 第 机房 号机器时间: 实验目的:1.掌握数组与指针的关系并能够利用指针解决数组的相关问题。 2.掌握字符串与指针的关系并能够利用指针处理字符串的问题。 3.掌握指针与函数的关系并能够利用指针处理函数问题。 4.了解指向指针的指针的概念及其使用方法 5.能够使用指针进行程序设计 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果 实验内容 读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 #include <stdio. h> 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 <stdio. h> id inv(i
实验十四 指针(2) 班级______________姓名___________指导老师_____________成绩___________ 第_____________机房___________号机器 时间:________________________ 实验目的:1. 掌握数组与指针的关系并能够利用指针解决数组的相关问题。 2. 掌握字符串与指针的关系并能够利用指针处理字符串的问题。 3. 掌握指针与函数的关系并能够利用指针处理函数问题。 4. 了解指向指针的指针的概念及其使用方法。 5. 能够使用指针进行程序设计。 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果。 实 验 内 容 一、读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1. #include <stdio.h> 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 <stdio.h> 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<10;i++) 3. #incl #include <string. h> char bl [8]="abcdefg", b2 [8],*pb=b1+3 while (--pb>=b1) strcpy(b2, pb) printf("gd\n", strlen(b2)) 分析结果 运行结果 #include <stdio. h> 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<=p) { t=*pa; *pa=*pe; *pe=t; ++pa; --pe; } } main() { int a[ ]={0,1,2,3,4,5,6,7,8,9},i; for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); inv(a,10); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); } 分析结果 运行结果 3. #include <stdio.h> #include <string.h> main() { char b1[8]="abcdefg",b2[8],*pb=b1+3; while (--pb>=b1) strcpy(b2,pb); printf("%d\n",strlen(b2)); } 分析结果 运行结果 4. #include <stdio.h> 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<*pb) swap(pa, pb)i printf("gd, sd\n",a, b)i printf("gd, d\n",pa, *pb)i 分析结果 运行结果 二、完成程序 1.下面程序通过指向整型的指针将数组a[3][4]的内容按3行×4列的格式输出,请给 printf()填入适当的参数,使之通过指针p将数组元素按要求输出。 #include <stdio. h> 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 <stdio. h> #include <string.h> 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 <stdio.h> 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<*pb) swap(pa,pb); printf("%d,%d\n",a,b); printf("%d,%d\n",*pa,*pb); } 分析结果 运行结果 二、完成程序 1. 下面程序通过指向整型的指针将数组 a[3][4]的内容按 3 行×4 列的格式输出,请给 printf()填入适当的参数,使之通过指针 p 将数组元素按要求输出。 #include <stdio.h> 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 <stdio.h> #include <string.h> 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 <stdio. h> int max min max=min=* for if( )max=* else if )min=*g; i int i, num[10]; for(i=0;i<10;i++) scanf("a",&num[i])i find max min(num, 10)i 2 printf("max=d; min=sd\n", max, min); 4.编写一个程序,实现将任意输入的2个字符串,连接成一个字符串,在子函数中实 现连接,形参用字符指针变量,在 填写正确内容。 #include <stdio.h> #include <sting.h> 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 <stdio.h> 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<10;i++) scanf("%d",&num[i]); find_max_min(num,10); printf("max=%d;min=%d\n",max,min); } 4. 编写一个程序,实现将任意输入的 2 个字符串,连接成一个字符串,在子函数中实 现连接,形参用字符指针变量,在____________填写正确内容。 #include <stdio.h> #include <sting.h> 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 <stdio.h> main() { int va[10],vb[10],*pa,*pb,i; pa=va;pb=vb;
第一部分c语言程序设计上机指导 for(i=0;i<3;i++ i printf("d\tsd\n",*pa, *pb) for(i=0;i<3;i++) printf("ba\tsd\n",*pa++, *pb++) 正确 运行结果: 误 #include <stdio. h> 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<5: i++)putchar(a[i]) putchar('\n )i while (a!='\o')putchar(a++) i=0; while(b[i])putchar(b [i++]) putchar('\n') 正确 运行结果 3.以下程序的功能是:输入3个字符串,按由小到大的顺序输出。 #include <stdio. h> char strl [20], str2 [20], str3 [20]i
第一部分 C 语言程序设计上机指导 ·79· ·79· for(i=0;i<3;i++,pa++,pb++) { *pa=i;*pb=2*i; printf("%d\t%d\n",*pa,*pb); } pa=va[0];pb=vb[0]; for(i=0;i<3;i++) { *pa=*pa+i; *pb=*pb+i; printf("%d\t%d\n",*pa++,*pb++); } } 正确 运行结果: 错误 错误所在: 应改为: 2. #include <stdio.h> 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<5;i++)putchar(a[i]); putchar('\n'); while (a!=’\0’) putchar(a++); putchar('\n'); i=0;while(b[i])putchar(b[i++]); putchar('\n'); } 正确 运行结果: 错误 错误所在: 应改为: 3. 以下程序的功能是:输入 3 个字符串,按由小到大的顺序输出。 #include <stdio.h> main() { char str1[20],str2[20],str3[20]; char swap();