《C语言》答案(4)

2019-08-17 12:50

sub(a,b,&c);

printf(\ }

输出结果: -5, -12, -7 (6) #include fun(char *s) { char *p=s;

while (*p) p++; return(p-s); }

main()

{ char *str=\ int i;

i=fun(str);

printf(\}

输出结果:4

1.5 定义语句int *f(); 和int (*f)();的含义分别是什么?

答:int *f();表示函数返回一个整型指针;int (*f)();表示f是函数指针,指向整型函数。

1.6 在二维数组中存放有4个学生,5门课程的成绩,用指针编程实现:

(1)求出每门课程的平均成绩。

(2)求每个学生的总成绩和平均成绩。

(3)在屏幕上列出各课成绩在85分以上的学生名单。 (4)在屏幕上列出补考通知单。 提示:(1)(2)(3)略,(4)根据成绩小于60分,由于有5门课程的成绩,所以需要使用else if结构。

1.7 输入一个字符串,内有数字和非数字字符,例如:

a345dsaf412 x?371+89tah74

编程将其中连续的数字作为一个证书,一次存放到一个数组d中,例如:345放在d[0],412放在d[1],......。统计共有多少个证书,并输出这些整数。 提示:从字符串中提取\:t=ch-'0';t=t*10+(ch-'0');t=t*10+(ch-'0');

t='3'-'0'=3;t=3*10+('4'-'0')=34;t=34*10+('5'-'0')=345

1.8 编写把十六进制数字字符串变换成整数的函数: int htoi(char *s)。

提示:同1.7

1.9 编写把十进制整数变换成二进制数字字符串的函数: char *itob(int n)。

提示:同1.7

1.10 用字符指针实现字符串拷贝功能,不能使用库函数。

提示:定义两个字符数组a,b,复制操作b[i]=a[i]; 1.11 用字符指针实现字符串连接功能,不能使用库函数。

提示:定义两个字符数组a,b,先将下标定位到a的末尾'\\0',在将b的元素赋值给a的对应元素,注意:别忘了添加字符串结束标志'\\0'。 1.12 用指向指针的指针的方法对5个字符串排序并输出。

15

提示:一个指针数组和一个指向指针的指针变量。

16

【习题8】

8.1 定义复数结构体,并写出复数的加、减、乘、除、的计算函数。

提示:复数包括两个部分:实部和虚部。 8.2 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天。注意闰年问题。

提示:计算该日是本年中的第几天,是从本年1月1日起。

8.3 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入

5个学生数据,要求在屏幕上显示出3门课程的平均成绩,以及最高分数的学生的数据(包括学号、姓名、3门课程成绩、平均分)。

提示:定义结构体数组。最高分数是指每个学生3门课程的平均分最高。 8.4 编写求链表长度的函数。

提示:从链表指针头往表尾移动计算结点的个数。

8.5 已有两个链表a、b,每个链表的结点包括学号、成绩。要求把两个链表合

并,按学号升序排列。

提示:可以定义一个新的链表,先从链表a,再从链表b中取出结点,依次按学号升序插入到新的链表中。

8.6 利用8.8节中的struct card结构编写一个程序实现5个人员数据输入和在屏

幕上显示的功能:如果job项为't',则在position项为教师的职称(助教、讲师、副教授、教授);如果job项为's',则class项为学生的班级号,如501。

提示:在结构体中嵌入共用体position,根据job成员确定position的具体值。

8.7 口袋中有红、黄、兰3中颜色的球若干个。每次从口袋中取出1个球,根据

颜色的不同,输入相应的颜色英文字符串。要求用枚举变量实现。 提示:参照例8.8。

17

【习题9】

一、简答题

9.1文件分为哪些类型?各有何特点?

答:文件分为二进制文件和文本(ASCII码)文件。二进制文件在内存和外存的形式是一样的,无需进行数据转换,用记事本打开该文件,看到得可能是乱码;文本(ASCII码)文件在内存是按二进制形式存在,在外存是以文本(ASCII码)形式存在,存在数据的转换,用记事本打开该文件,可以读懂其中的内容。 9.2什么是文件类型指针?什么是文件位置指针?各有何用途?

答:文件类型指针就是用FILE结构体定义的指针变量。文件位置指针是文件存取操作的位置。前者指向被打开的文件;后者在文件存取操作后移动到下一个存取位置。

9.3什么是设备文件?常用的设备文件有哪些?

答:在操作系统中,设备也被看作一个文件进行管理,即设备文件。常用的设备文件有:stdin,stdout,PRN等。 二、选择题

9.4 若想对文本文件只进行读操作,打开此文件的方式为( A)。 A.\ B.\C.\ D.\

9.5如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为(D )。

A. c:file\\abc.dat B. c:\\file\\abc.dat C. \ D. \

9.6用(A)函数打开文件,操作完毕后用(C)函数关闭它。 A.fopen B.open C.fclose D.close 三、编程题

9.7 有两个磁盘文件a.dat和b.dat,要求产生一个新的文件c.dat,将b.dat中的

数据追加到a.dat后面,并存入到c.dat中。

提示:设两个磁盘文件为文本文件。以读的方式打开a.dat和b.dat,以写的方式创建c.dat。先将b.dat的数据复制到c.dat,再将a.bat的数据复制到c.dat。

9.8 从键盘输入一些字符,逐个把它们存入磁盘文件test中去,直到输入一个#

为止。

提示:利用fputc函数将字符写入到磁盘文件中。 9.9 读入一个文件,输出其中最长的一行的行号和内容。

提示:以硬回车键'\\n'作为行的结束标志。

9.10 .编写程序将全班同学的姓名、地址和电话号码写到一个文件class.dat中。

提示:学生的信息可以存放到结构体数组,以fwrite函数写数据到文件中。 9.11将9.10题产生的class.dat文件中的数据按姓名从低到高排列输出到显示器

上,并把排了序的数据重新写入到文件class1.dat中。

提示:以fread函数从文件中读入学生的信息,并存放到结构体数组,在数组中进行排序。排序完毕再写入文件中。

9.12 利用9.11题产生的class1.dat文件,编程实现从中直接读取第三个同学的

数据。

提示:参照例9.5

9.13 在9.11题产生的class1.dat文件中插入一个新生的数据,要求插入后的文

18

件数据仍然按姓名顺序排列。

提示:先将数据读入到数组中,插入新的数据后,再写入到文件中。

19

【习题10】 一、编程题:

10.1 绘制y=x2的曲线。其中变量x的变化范围在-2~2之间,变化步长为0.01。

提示:屏幕的左上角是图形系统的绝对坐标原点(0,0),向右表示x坐标,向下表示y坐标。为了正确显示图形,需要另外定义相对坐标原点(0,0),譬如以绝对坐标(300,200)表示相对坐标的原点。

10.2 改进例10.2,在模拟实时时钟合适的位置加上3、6、9、12的时钟数字。

提示:参照例10.2,在第15行处恰当添加数字输出的程序。 10.3 编程实现图形菜单。菜单的功能自定。

提示:菜单用图形方式显示,菜单选择时确定当前位置,在根据键盘按键重画菜单。

10.4 BIOS功能调用INT 10H的09H号功能用于显示彩色字符,要求使用的寄存器如下:

调用前:

AH=09H

BH=当前显示页(图形方式下为0) AL=要显示字符的ASCII码 BL=字符及其背景颜色 CX=字符显示次数

利用系统调用函数编制彩色字符显示函数:void write_char(int asc,int atr)。其中参数asc为要显示字符的ASCII代码,art为字符颜色。该函数每次显示一个字符。

提示:参照例10.5 10.5 有如下C语言程序:

main()

{ int x, y, z, max;

int get_max(intx,int y,int z); printf(“please input x,y,z=”); scanf(“%d%d%d”,&x,&y,&z); max=get_max(x,y,z); printf(“max=%d”,max); getch(); }

程序中get_max函数的作用是求三个整数中最大值。请用汇编语言实现函数get_max,并将C语言程序和汇编子程序连接,生成一个可执行文件。

提示:参照例10.13

20


《C语言》答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:分类修改病句

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: