文档详情

实验一指针的程序设计实验.doc

发布:2018-03-06约3.32千字共5页下载文档
文本预览下载声明
实验1: 指针的程序设计实验 [实验目的] 指针是C语言中最为有用的数据类型之一。本实验是为了巩固有关指针类型的概念,正确使用指针变量、指针数组、字符串指针、函数指针,用指针编写简捷、高效的程序。具体包括: 1. 掌握指针变量的定义与引用。 2. 正确使用指针变量、指针数组、函数指针、字符串指针编写应用程序。 3. 掌握指针的基本运算。 4. 了解二级指针的使用方法。 〔实验要求〕 理解和区分普通变量和指针变量、地址的概念。 复习指针与数组,指针与函数的关系的相关理论课程。 第一次完成1-4题,第二次完成5-7题。 完成各项实验任务,并按要求完成实验报告。 [实验内容] 本部分习题要求全部用指针完成。 1. 运行下列程序观查运行结果,若有错误请改之。 ①main() { int a,*p; p=a; scanf(“%d”,p); printf(“a=%d\n*p=%d\n”,a,*p); } ② main(){ int a,*p; p=a; scanf(%d,a); printf(p=%p *p=%d\n,p,*p); printf(%4d%4d\n,*p++,*p); printf(p=%x\n,p); } ③用单步运行的方式运行下面的程序,观察各个变量的值。 sub(int x,int y,int *z) { *z=y-x;} main() { int a,b,c; sub(10,5,a); sub(7,a,b); sub(a,b,c); printf(“a=%d\nb=%d\nc=%d\n”,a,b,c); } ④main() { int *p,a; a=2; p=a; f(p); printf(“a=%d”,a); } f(int *t) { *t=10; } 2. 运行下面的程序,并通过输出结果理解指针与数组的关系,总结指针访问数组元素的方法。 main() {int a[10],j,*p; for (j=0; j10; j++) a[j]=j+1; printf(“\nOutput array using a[j]:\n”); for (j=0; j10; j++) printf(“%d ”,a[j]); p=a; //p指向数组a printf(“\nOutput array using p[j]:\n”); for (j=0; j10; j++) printf(“%d ”,p[j]); printf(“\nOutput array using*( p+j):\n”); for (j=0; j10; j++) printf(“%d ”,*(p+j)); printf(“\nOutput array using*( a+j):\n”); for (j=0; j10; j++) printf(“%d ”,*(a+j)); printf(“\nOutput array using *(p++):\n”); for (j=0; j10; j++) printf(“%d ”,*(p++)); } 从键盘上输入10个数据到一维数组x中,然后找出数组中的最大值和该值所在的元素下标。要求用子函数search(int *pa,int n,int *pmax,int *pflag),数组名作为实参,指针作为形参,最大值和下标在形参中以指针的形式返回。 4.一个二维数组中按学号顺序存放有10个学生的5门成绩,编写一个函数aver,能够输入一个学生学号,计算该生各门课的平均成绩。 实验步骤与要求: (1)设计函数aver; (2)在主函数中输入10个学生的5门成绩并输入要查询的学生的学号; (3)调用函数aver求该生的平均成绩; (4)在主函数中输出该平均成绩。 5.运行下列程序观察运行结果,若有错误请改之。 ①main() { char *str1,*str2,*str3; printf(“str1=“); gets(str1); printf(“str2=“); gets(str2); strcat(str1,str2); printf(“str1=%s\n”,str1); strcpy(str3,str1); printf(“str3=%s\n”,str3); } ②#include stdio.h char *p = “abcdefghijklmnopq” ; main( ) { int i=0; while( *p++!=’ e’); printf(“%c\n”, *p); } ③#include stdio.h main( ) { int a=1,*p,**pp; pp=p; p=a; a++; printf (“%d,%d,%d\
显示全部
相似文档