int k=0;
char a[80],b[80],c[80]={'\\0'},*p,*q; p=a;q=b; gets(a); gets(b);
while( *p&&*q ) {
if( *p>*q ) c[k]=*p; else c[k]=*q; p++; q++ ; k++; }
if(*p!= '\\0') strcat(c,p); else strcat(c,q); puts(c ); }
5.指出下面程序的问题所在(输出a数组的10个元素),理解指针与数组下标的关系及指针变化情况。
void main( ) {
int a[10]; int *p,k; p=a;
for(k=0;k<10;k++) { *p=k; p++; }
for(k=0;k<10;k++,p++) printf(\}
运行结果为:输出10个随机数,原因是当第一个for循环结束后,指针已经指到最后一个元素的下一个地址,此时再输出,已经输出的不是原来存储的数据了。 6.编程实现从键盘输入10个整数,然后求出其中最小值(采用指针实现)。
参考程序如下: #include
int a[10],min; int *p,k; p=a;
for(k=0;k<10;k++) { scanf(\ p=a; min=a[0];
for(k=0;k<10;k++,p++) if(min>*p)min=*p; printf(\}
实验10 指针与二维数组、函数的关系
任务1 使用指针访问二维数组
1.阅读并运行下列程序,理解访问二维数组元素的多种方法。
#include
int a[3][4]; int i,j;
for(i=0;i<3;i++) for(j=0;j<4;j++)
scanf(\/*数组元素下标表示法*/ for(i=0;i<3;i++) {
for(j=0;j<4;j++)
printf(\ /*数组元素指针表示法*/ printf(\ }
printf(\ for(i=0;i<3;i++) {
for(j=0;j<4;j++)
printf(\ /*数组元素下标+指针表示法*/ printf(\ }
printf(\}
如果从键盘上输入:1 2 3 4 5 6 7 8 9 10 11 12 则运行结果为: 1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9 10 11 12 2.分析下面程序的输出结果,理解指针与二维数组以及数组指针的概念。 #include
static int a[2][3]={{1,2,3},{4,5,6}}; f(a); }
void f(int (*b)[3]) {
printf(\}
运行结果为: 1 2 3
思考:如将int(*b)[3]改为int(*b)[2],结果会如何? 运行结果一样。
任务2 熟练掌握指针与函数的关系
1.下面程序完成截取字符串s中从第m个位置开始的n个字符,返回所截字符串的首地址(即指针型函数),认真阅读分析程序,写出运行结果。
#include
static char s[]=\ char *cut(char *s,int m,int n),*p; p=cut(s,3,4); printf(\}
char *cut(char *s,int m,int n) {
int i;
for(i=0;i 运行结果为: angu 2.调用子程序,实现求解一维数组中的最大元素。请填空,完成程序功能。 #include int sub_max(int b[],int i); int n,a[10],*ptr=a; /*定义变量,并使指针指向数组*/ int max,i=10; for(n=0;n<=i-1;n++) scanf(\ max= sub_max(a,i) ; /*函数调用,其实参是指针*/ printf(\} int sub_max(int b[],int i) /*函数定义,其形参为数组*/ { int temp,j; temp=b[0] ; for(j=1;j if(temp 此题无空可填,已经是一个完整的程序,它的功能是求从键盘输入10数中最大的那个数。故自己选一个地方加了蓝色和下划线,让学生理解这个地方。 3.阅读下面程序,理解利用指向指针的指针变量对二维字符数组的访问方式。 #include int i; static char c[][16]={\ static char *cp[]={c[0],c[1],c[2],c[3]}; static char **cpp; /*指向字符指针的指针变量*/ cpp=cp; /*将指针数组的首地址传递给指向字符指针的指针变量*/ for(i=0;i<4;i++) /*按行输出字符串*/ printf(\ printf(\ for(i=0;i<4;i++) { cpp=&cp[i]; printf(\ } } 运行结果如下: c language fox computer home page ---------- c language fox computer home page 实验11 指针综合实验 任务 使用指针编写综合应用程序 1.某班有M个学生,开设三门课程(高数、英语、计算机)的成绩,编程输入学生的学号及三门课程的成绩,求各人的平均分,并显示。 参考程序如下: #include \#define M 5 struct student { int num; int score[3]; float average; }stu[M]; main( ) { struct student *p; for(p=stu;p scanf(\ p->average=(p->score[0]+p->score[1]+p->score[2])/3.0; } printf(\平均分为:\\n\\n\ for(p=stu;p 2.编写一函数,求一个字符串的长度。在main( )函数中输入字符串,并输出其长度。 参考程序如下: #include int len(char *s) { int k=0; for(;*s!='\\0';s++) k++; return k; } main( ) { char str1[80],*p=str1; scanf(\ printf(\} 3.从键盘输入一行文字,找出其中大写字母、小字字母、数字及其他字符各有多少? 参考程序如下: #include int i,j,k,m; char *p,a[100]; p=a; i=j=k=m=0; scanf(\ for(;*p!='\\0';p++) { if(*p>=97&&*p<=122 ) i++; else if(*p>=65&&*p<=90) j++; else if(*p>=48&&*p<57) k++; else m++; } printf(\} 4.利用指针编写程序,实现对数组进行从小到大的排序(冒泡法)。 参考程序如下: #include int a[10]; int *p,t,k,i,j; p=a; for(i=0;i<10;i++) { scanf(\ p=a; for(i=0;i<9;i++) { k=i; for(j=i+1;j<10;j++) if(p[k]>p[j])k=j; if(k!=i) { t=p[k];p[k]=p[i];p[i]=t;} } for(i=0;i<10;i++) printf(\} 5.100人围成一圈,从第1个人开始,每数到3的人出圈,问最后一个出圈的人是哪个? 参考程序如下: 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库大学c c++语言程序设计实验教程答案-阳小华-电子工业出版社(6)在线全文阅读。
相关推荐: