实验八实验报告_卓越14_彭佳伟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计实验报告
专业计算机科学与技术班级卓越工程师班
日期2014年12月17日成绩
第八次实验指针实验指导教师李开
学生姓名彭佳伟学号U201414716
实验组别同组人姓名
实验名称指针实验
一、实验目的
(1)熟练掌握指针的说明、赋值、使用。
(2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。
(3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。
(4)掌握指针函数与函数指针的用法。
(5)掌握带有参数的main函数的用法。
二、实验任务
1.源程序改错
下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个源程序进行调试修改,使之能够正确执行。
源程序1
#include
int main(void)
{
float *p;
scanf("%f", p);
printf("%f\n", *p);
return 0;
}
2.源程序完善、修改、替换
(1)下面的源程序的功能是:通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。
#include
#include
int main(void)
{
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 dowm;
}
getchar();
printf("input the first string please! \n");
i = 0;
printf("input the second string please! \n");
i = 0;
result = (a, b);
printf("the result is %s\n", result);
dowm:
;
return 0;
}
(2)请上机运行第(1)题程序,使之能按下面要求输出结果:
1 copy string.
2 connet string.
3 exit
input a number(1-2) please!
2(输入)
Input the first string please!
the more you learn,(输入)
input the second string please!
the more you get.(输入)
the result is the more you learn, the more you get.
3.跟踪调试源程序
请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。
(1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches 窗口中s为何值?
(2)排除源程序中的错误,使程序输出结果为:there is a bote on the lake.
源程序3
#include
char *strcpy(char *, char*);
int main(void)
{
char a[20], b[60] = "there is a boat on the lake.";
printf("%s\n", strcpy(a, b));
return 0;
}
char *strcpy(char *s, char *t)
{
while(*s++ = *t++)
;
return (s);
}
4.程序设计
编写并上机调试运行能实现以下功能的程序或函数:
(1)已知一个长整型变量占4个字节,其中每个字节又分成高4位和低4位。试编写一个程序,从该长整型变量的高字节开始,依次取出每个字节的高4位和低4位并以数字字符的形式记性显示。
(2)利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。试编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空行不予输出。
(3)编写一个程序,输入n个整数,排序后输出。排序的原则由命令行可选参数-的-d决定,并且有参数-d时按递减顺序排序,否则按递增顺序排序。要求将排序算法定义成函数,利用指向函数的指针使该函数实现递增或递减排序。
(4)设某个班有N个学生,每个学生修了M门课程。输入M门课程的名称,然后依次输入N个学生中每个学生所修M门课程的成绩,并且都存放到相应的数组中。试编写下列函数:
①计算每个学生各门课程平均成绩。
②计算全班没门课程的平均成绩。
③分别统计低于全班各门课程平均成绩的人数。
④分别统计全班各门课程不及格的人数和90分以上的人数。
在调用函数中输出上面各函数的计算结果(要求都用指针操作,不得使用下下标操作)
三、实验步骤及结果
1 源代码:
// 2.8.1
//
// Created by apple on 14/12/17.
// Copyright (c) 2014年 pjw-hust. All rights reserved.
//
#include
int main(void)
{
float *p;
float a;