C 语言程序设计 实验报告
专业 班级 日期 11 月 26 日 成绩
实验组别 第 3(2.7) 次实验 指导教师 李开
学生姓名 学号 同组人姓名
实验名称 实验 8 指针实验
一、实验目的
(1)熟练掌握指针的说明、赋值、使用。
(2 )掌握用指针引用数组的元素,熟悉指向数组的指针的使用。
(3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。
(4 )掌握指针函数与函数指针的用法。
(5)掌握带有参数的 main 函数的用法。
二、实验任务
8.2 实验内容及要求
1.源程序改错
2.源程序完善、修改、替换
3.跟踪调试
4.程序设计
5.选做题
8.3 指定 main 函数的 参数
三、实验步骤及结果
(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程
序的操作过程和实验现象)
8.2 实验内容及要求
1.源程序改错
下面程序是否存在错误?如果存在, 原因是什么?如果存在错误, 要求在计算机上对这
个例子程序进行调试修改,使之能够正确执行。
#include
void main(void)
{
float *p;
scanf("%f",p);
printf("%f\n",*p);
}
存在,错误为指针一开始没有初始化,而 sacnf 传入的是 float 型指针指向的地址,我们
并不知道系统能给我们分配什么地址,所以说我们输入的地址很有可能使程序崩溃。
修改后代码:
#include
int main(void)
{
float *p;
float a[10];// 这里可以换成其他数字
p=&a[0];
scanf("%f",p);
printf("%f\n",*p);
return 0;
}
2.源程序完善、修改、替换
(1)下面的程序通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数,请在
下划线处填写合适的表达式、语句、或代码片段来完善该程序。
#include
#include
void main(void)
{
char*(*p)(char a[],char b[]);
char a[80],b[80],c[160],*result=c;
int choice,i;
do{
printf("\t\t1 copy string.\n");
printf("\t\t2 connect string.\n");
printf("\t\t3 exit.\n");
printf("\t\tinput a number (1-3) please!\n");
scanf("%d",&choice);
}while(choice<1 || choice>5);
switch(choice){
case 1:
p=strcpy;
break;
case 2:
p=strcat;
break;
case 3:
goto down;
}
getchar();
printf("input the first string please!\n");
i=0;