C语言学习知识程序设计第四次(2.8)实验报告.doc
《C语言学习知识程序设计第四次(2.8)实验报告.doc》由会员分享,可在线阅读,更多相关《C语言学习知识程序设计第四次(2.8)实验报告.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. C语言程序设计 实验报告专业 班级 日期 11月26日 成绩 实验组别 第 3(2.7) 次实验 指导教师 李开 学生姓名 学号 同组人姓名 实验名称 实验8 指针实验 一、实验目的(1)熟练掌握指针的说明、赋值、使用。(2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。(3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。(4)掌握指针函数与函数指针的用法。(5)掌握带有参数的main函数的用法。二、实验任务8.2 实验内容及要求1源程序改错2源程序完善、修改、替换3跟踪调试4程序设计5选做题8.3 指定main函数的参数三、实验步骤及结果(要求给出源程序和程序运
2、行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)8.2 实验内容及要求1源程序改错下面程序是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个例子程序进行调试修改,使之能够正确执行。#includevoid main(void) float *p; scanf(%f,p); printf(%fn,*p);存在,错误为指针一开始没有初始化,而sacnf传入的是float型指针指向的地址,我们并不知道系统能给我们分配什么地址,所以说我们输入的地址很有可能使程序崩溃。修改后代码:#includeint main(void)float *p;float
3、 a10;/这里可以换成其他数字p=&a0; scanf(%f,p);printf(%fn,*p);return 0;2源程序完善、修改、替换(1)下面的程序通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数,请在下划线处填写合适的表达式、语句、或代码片段来完善该程序。#include#include void main(void) char*(*p)(char a,char b); char a80,b80,c160,*result=c;int choice,i;doprintf(tt1 copy string.n);printf(tt2 connect string.n);prin
4、tf(tt3 exit.n);printf(ttinput a number (1-3) please!n);scanf(%d,&choice);while(choice5);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;gets(a);printf(input the second string please!n);i=0;gets(b); result= p(a,b);printf
5、(the result is %sn,result);down:;(2)请上机运行第(1)题程序,使之能按要求输出下面结果:(输入)表示该数据是键盘输入数据) 1 copy string. 2 connect string. 3 exit. input a number (1-3) 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 m
6、ore you get.3跟踪调试#includechar *strcpy(char *,char *);void main(void) char a20,b60=there is a boat on the lake.; printf(%sn,strcpy(a,b);char *strcpy(char *s,char *t) while(*s+=*t+) ; return (s);(1) 单步执行。进入strcpy时watch窗口中s为何值?返回main时, watch窗口中s为何值?进入strcpy时:返回main时:(2) 排除错误,使程序输出结果为: there is a boat o
7、n the lake.#includevoid *strcpy(char *,char *);int main(void) char a30,b60=there is a boat on the lake.; strcpy(a,b); printf(%sn,a); return 0;void *strcpy(char *s,char *t) while(*t!=0) *s+=*t+; *s=0;/将函数类型设置为void型,然后不再返回直接打印a字符串即可4程序设计(1)一个长整型变量占4个字节,其中每个字节又分成高4位和低4位。试从该长整型变量的高字节开始,依次取出每个字节的高4位和低4位并
8、以数字字符的形式进行显示。#includeint main(void)int n,i;scanf(%x,&n); char *p=(char *)&n; int high_half,low_half; for(i=3; i=0; i-) low_half = pi & 0x0f; if (low_half 4; if (high_half 10) high_half += 0; else high_half += A - 10; printf(%c %cn,high_half,low_half); return 0;(2) 利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字
9、符。编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空行不予输出。#include #define N 10void reducespace(char *p,int n);int main()int i;char *pN,arrN81;printf(Input %d-line strings:n,N);for (i = 0; i N; i+)*(p + i) = arri;printf(the %d line:, i + 1);gets(*(p + i);printf(nnafter compression:n);for (i = 0; i N
10、; i+)reducespace(*(p + i),i);putchar(10);return 0;void reducespace(char *p,int n)/削减空格的函数,将多行空格压缩成一个空格int flag = 1, i, j = 0, sum = 0;char temp81;for (i = 0; *(p + i) != 0; i+)if (*(p + i) != &flag)tempj+ = *(p + i);sum+;if (*(p + i) = &flag) flag = 0;if (*(p + i) != &!flag)tempj+ = ;tempj+ = *(p +
11、i);flag = 1;sum+;tempj = 0;if (sum) printf(The %d line:%sn, n+1,temp);else printf(Of the %d line there are all spacesn, n + 1);(3) 输入n个整数,排序后输出。排序的原则由命令行可选参数-d决定,有参数-d时按递减顺序排序,否则按递增顺序排序。要求将排序算法定义成函数,利用指向函数的指针使该函数实现递增或递减排序。(main函数参数的处理见8.3节)#include #include #include int main(int argc,char *argv) voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 知识 程序设计 第四 实验 试验 报告 讲演 呈文
限制150内