用C语言编写5的倍数尾数为6,c语言程序设计第5次上机yoki.doc

本资源来源于互联网,版权为原作者所有。若侵犯到您的版权,请提出指正,我们将立即删除。

PAGE

PAGE 5

C语言程序设计 实验报告

班级 CS1109 日期 2012,5,31

学生姓名 雷霞 学号 U201114439

第 5 次上机

实验 结构与联合

(一) 实验目的

(1)熟悉和掌握结构的说明和引用、结构的指针、结构数组、以及函数中使用结构的方法。

(2)掌握动态储存分配函数的用法,掌握自引用结构,单向链表的创建、遍历、结点的增删、查找等操作。

(3)了解字段结构和联合的用法。

(二) 实验内容及要求

1.表达式求值的程序验证

设有说明:

char u[]="UVWXYZ";

char v[]="xyz";

struct T{

int x;

char c;

char *t;

}a[]={{11,ˊAˊ,u},{100, ˊBˊ,v}},*p=a;

请先自己计算表2.1中表达式的值,然后编写程序并运行来加以验证。(各表达式相互无关)

表2.1 表达式值的计算

序号

表达式

计算值

验证值

1

(++p)->x

100

100

2

p++,p->c

B

B

3

*p++->t,*p->t

x

x

4

*(++p)->t

x

X

5

*++p->t

V

V

6

++*p->t

V

V

源程序:

#include

#include

char u[]="UVWXYZ";

char v[]="xyz";

struct T{

int x;

char c;

char *t;

}a[]={{11,'A',u},{100,'B',v}},*p=a;

void main(void)

{

printf("%d\t",(++p)->x);

p=a; /*开始时错误地写作*p=a*/

printf("%c\t",(p++,p->c));

p=a;

printf("%c\t",(*p++->t,*p->t));

p=a;

printf("%c\t",*(++p)->t);

p=a;

printf("%c\t",++*p->t);

p=a;

printf("%c\t",*++p->t); /*该表达式会改变t的指向,所以将其写在后面*/

system("pause");

}

运行结果:

2.源程序修改、替换

下面所给源程序的功能是:给定一批整数,以0作为结束标志且不作为结点,将其建成一个先进先出的链表。先进先出链表的头指针始终指向最先创建的结点(链头),先建结点指向后建结点,后建结点始终是尾结点。请完成以下工作:

(1) 源程序中存在什么样的错误(先观察执行结果)?对程序进行修改、调试,使之能够正确完成指定任务。

(2) 修改替换create_list函数,将其建成一个后进先出的链表,后进先出链表的头指针始终指向最后创建的结点(链头),后建结点指向先建结点,先建结点始终是尾结点。

源程序:

#include "stdio.h"

#include "stdlib.h"

struct s_list{

int data; /* 数据域 */

struct s_list *next; /* 指针域 */

} ;

void create_list (struct s_list *headp,int *p);

void main(void)

{

struct s_list *head=NULL,*p;

int s[]={1,2,3,4,5,6,7,8,0}; /* 0为结束标记 */

create_list(head,s); /* 创建新链表 */

p=head; /* 遍历指针p指向链头 */

while(p){

printf("%d\t",p->data); /* 输出数据域的值 */

p=p->next; /* 遍历指针p指向下一结点 */

}

printf("\n");

}

void create_list(struct s_list *headp,int *p)

{

struct s_list * loc_head=NULL,*tail;

if(p[0]=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值