实验一 有关指针的程序设计参考答案 下载本文

内容发布更新时间 : 2024/6/22 4:35:18星期一 下面是文章的全部内容请认真阅读。

实验1: 有关指针的程序设计 [实验目的]

指针是C语言中最为有用的数据类型之一。本实验是为了巩固有关指针类型的概念,正确使用指针变量、指针数组、字符串指针、函数指针,用指针编写简捷、高效的程序。具体包括:

1. 掌握指针变量的定义与引用。

2. 正确使用指针变量、指针数组、函数指针、字符串指针编写应用程序。 3. 掌握指针的基本运算。 4. 了解二级指针的使用方法。 〔实验要求〕

1. 理解和区分普通变量和指针变量、地址的概念。

2. 复习指针与数组,指针与函数的关系的相关理论课程。 3. 第一次完成1-4题,第二次完成5-7题。

4. 完成各项实验任务,并按要求完成实验报告。

[实验内容]

本部分习题要求全部用指针完成。

1. 运行下列程序观查运行结果,若有错误请改之。 ①main()

{

int a,*p; p=&a;

scanf(“%d”,p);

printf(“a=%d\\n*p=%d\\n”,a,*p); } 答:若输入5,则输出:

a =5 *p=5

② main(){ int a,*p; p=&a;

scanf(\ //若输入5

printf(\ //输出变量a的内存地址及值(5)

printf(\,*p); //输出*p的值5,再输出*p++,输出*p++时,先输出*p,即a的值5,然后指针p自增

printf(\//输出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); } 答:a=-5

b=-12 c=-7

用F8运行程序,用F7跟踪sub函数调用过程。 ④main() {

int *p,a; a=2; p=&a; f(p);

printf(“a=%d”,a); }

f(int *t) {

*t=10; }

答:a=10

实参p指向main中的变量a,形参t与p的目标相同,修改*t即修改变量a。

2. 运行下面的程序,并通过输出结果理解指针与数组的关系,总结指针访问数组元素的方法。 main()

{int a[10],j,*p;

for (j=0; j<10; j++) a[j]=j+1;

printf(“\\nOutput array using a[j]:\\n”); for (j=0; j<10; j++) printf(“%d ”,a[j]); p=a; //p指向数组a

printf(“\\nOutput array using p[j]:\\n”); for (j=0; j<10; j++) printf(“%d ”,p[j]); printf(“\\nOutput array using*( p+j):\\n”); for (j=0; j<10; j++) printf(“%d ”,*(p+j)); printf(“\\nOutput array using*( a+j):\\n”);

for (j=0; j<10; j++) printf(“%d ”,*(a+j)); printf(“\\nOutput array using *p++:\\n”); for (j=0; j<10; j++) printf(“%d ”,*p++)); }

3. 从键盘上输入10个数据到一维数组x中,然后找出数组中的最大值和该值所在的元素

下标。要求用子函数search(int *pa,int n,int *pmax,int *pflag),数组名作为实参,指针作为形参,最大值和下标在形参中以指针的形式返回。 void search(int *pa,int n,int *pmax,int *pflag) { int i; *pmax=*pa; *pflag=0; for(i=1;i*pmax) { *(pmax)=*(pa+i); *pflag=i; } } }

void main() { int number[10],max,i; for(i=0;i<10;i++) scanf(\ search(number,10,&max,&i); printf(\ printf(\ }

4.一个二维数组中按学号顺序存放有10个学生的5门成绩,编写一个函数aver,能够输入一个学生学号,计算该生各门课的平均成绩。 实验步骤与要求: (1)设计函数aver;

(2)在主函数中输入10个学生的5门成绩并输入要查询的学生的学号; (3)调用函数aver求该生的平均成绩; (4)在主函数中输出该平均成绩。

#include \#include \

#define PERSON 10 /*学生人数*/ #define CLASS 5 /*课程数*/