文档库 最新最全的文档下载
当前位置:文档库 › C语言-线性表实验报告

C语言-线性表实验报告

C语言-线性表实验报告
C语言-线性表实验报告

一.实验名称

1.线性表基本操作;

2.处理约瑟夫环问题

二.试验目的:

1.熟悉C语言的上机环境,掌握C语言的基本结构。

2.定义单链表的结点类型。

3.熟悉对单链表的一些基本操作和具体的函数定义。

4.通过单链表的定义掌握线性表的链式存储结构的特点。

5.熟悉对单链表的一些其它操作。

三.实验内容

1.编制一个演示单链表初始化、建立、遍历、求长度、查询、插入、删除等操作的程序。

2.编制一个能求解除约瑟夫环问题答案的程序。

实验一线性表表的基本操作

问题描述:

1. 实现单链表的定义和基本操作。该程序包括单链表结构类型以及对

单链表操作的具体的函数定义

程序中的单链表(带头结点)结点为结构类型,结点值为整型。

/* 定义DataType为int类型*/

typedef int DataType;

/* 单链表的结点类型*/

typedef struct LNode

{DataType data;

struct LNode *next;

}LNode,*LinkedList;

LinkedList LinkedListInit() //初始化单链表

void LinkedListClear(LinkedList L) // 清空单链表

int LinkedListEmpty(LinkedList L)//检查单链表是否为空

void LinkedListTraverse(LinkedList L)// 遍历单链表

int LinkedListLength(LinkedList L)//求单链表的长度

/* 从单链表表中查找元素*/

LinkedList LinkedListGet(LinkedList L,int i)

/* 从单链表表中查找与给定元素值相同的元素在链表中的位置*/

int LinkedListLocate(LinkedList L, DataType x)

void LinkedListInsert(LinkedList L,int i,DataType x) //向单链表中插入

元素

/* 从单链表中删除元素*/

void LinkedListDel(LinkedList L,DataType x)

/* 用尾插法建立单链表*/

LinkedList LinkedListCreat( )

2. 约瑟夫环问题:任给正整数N和K,按下述方法可以得到1,2, …,n的一

个置换,将数字1,2,…,n环形排列,按顺时针方向自1开始报数,报到K

时输出该位置上的数字,并使其出列。然后从他在顺时针方向的下一个

数字继续报数,如此下去,直到所有的数字全部出列为止。例如N=10,K=3,则正确的出列顺序应为3,6,9,2,7,1,8,5,10,4。

3. 试单链表实现一个简单的电子通讯本管理软件,要求能查找联系地址,增

加和删除联系人。联系方式假定包括姓名、电话和地址。

基本要求:

1.上机前要做好准备工作,包括程序框图、数据结构以及算法。

2.按时实验

3.服从实验室老师的安排

4.独立实验,有问题可以讨论,但不得翻版。

5.遵守实验室的各项纪律。

四、概要设计

1.单链表的操作

(1)为了实现上述程序功能,需要定义单链表的抽象数据类型:

ADT LinkedList {

数据对象:D={ai|ai∈struct LNode set,i=0,1,2,…,n,n≥0}

数据关系:R={|ai,ai+1 ∈D}

基本操作:

LinkedListInit()

操作结果:构造了一个带头节点的空链表L;

LinkedListCreat()

初始条件:单链表L已存在;

操作结果:建立了一个带头节点的非空链表;

LinkedListClear(&L)

初始条件:单链表L已存在;

操作结果:将L重置为带头节点的空链表;

LinkedListEmpty(&L)

初始条件:单链表L已存在;

操作结果:如果链表L为空则返回1,链表L非空则返回0;

LinkedListLength(&L)

初始条件:单链表L已存在;

操作结果:返回单链表L中数据元素的个数,若L为空表则返回0;LinkedListTraverse(&L)

初始条件:单链表L已存在;

操作结果:依次返回单链表L中各节点的元素值,若L为空表则显示链表为空;LinkedListGet(&L,i)

初始条件:单链表L已存在;

操作结果:显示链表L中第i个节点个元素值,若链表L中没有第i个节点则显示查询位置不正确;

LinkedListLocate(&L,x)

初始条件:单链表L已存在;

操作结果:显示链表L中元素x的位置,若链表L中没有元素x则显示所查找元素不存在;

LinkedListInsert(&L,i,x)

初始条件:单链表L已存在;

操作结果:在单链表L第i个节点后插入一个元素值为x的节点,L的长度加1,若单链表L中没有第i个节点则显示插入位置不正确;

LinkedListDel(&L,i)

初始条件:单链表L已存在;

操作结果:在单链表L中删除第i个节点,L的长度减1,若单链表L中没有第i个节点则显示删除位置不正确;

(2)本程序包含11个函数:

1. 主函数main()

2. 初始化单链表函数LinkListInit()

3. 清空单链表函数LinkedListClear()

4. 检查单链表是否为空函数LinkedListEmpty()

5. 遍历遍历单链表函数LinkedListTraverse()

6. 求单链表的长度函数LinkedListLength()

7. 从单链表表中查找元素函数LinkedListGet()

8 从单链表表中查找指定元素的位序函数LinkedListLocate()

9. 插入元素函数LinkedListInsert()

10. 删除元素函数LinkedListDel()

11.建立单链表函数LinkedListCreat( )

1结点类型和指针类型

typedef struct LNode

{int data;

struct LNode *next;

} LNode,*LinkedList;

2单链表的基本操作

(1)初始化单链表

LinkedList LinkedListInit()

{LinkedList L;

L=(LinkedList)malloc(sizeof(LNode));

L->next=NULL;

return L;

}

(2)清空单链表

void LinkedListClear(LinkedList L)

{L->next=NULL;

printf("链表已经清空\n");

}

(3)检查单链表是否为空

int LinkedListEmpty(LinkedList L)

{if(L->next==NULL) return TRUE;

else return FALSE;

}

(4)遍历单链表

void LinkedListTraverse(LinkedList L) {LinkedList p;

p=L->next;

if(p==NULL) printf("单链表为空表\n"); else

{printf("链表中的元素为:\n");

while(p!=NULL)

{printf("%d ",p->data); p=p->next;}

}

printf("\n");

}

(5)求单链表长度

int LinkedListLength (LinkedList L) {LinkedList p;

int j;

p=L->next;

j=0;

while(p!=NULL)

{ j++;p=p->next; }

return j;

}

(6)从链表中查找元素

LinkedList LinkedListGet(LinkedList L,int i) {LinkedList p;int j;

p=L->next; j=1;

while (p!=NULL && j

{p=p->next; j++; }

if (j==i) return p;

else return NULL;

}

(7)从链表中查找与给定元素值相同的元素在顺序表中的位置int LinkedListLocate ( LinkedList L, int x)

{LinkedList p;int j;

p=L->next; j=1;

while ( p!=NULL && p->data != x)

{p=p->next;j++;}

if(p) return j;

else return 0;

}

(8)向链表中插入元素

void LinkedListInsert(LinkedList L, int i, int x)

{LinkedList p,s;

int j;

j=1;p=L;

while(p&&j

{p=p->next;j++;}

if(p==NULL||j>i)

printf("插入位置不正确\n");

else {s=(LNode *)malloc(sizeof(LNode));

s->data=x;

s->next=p->next;

p->next=s;

printf("%d已插入到链表中\n",x);

}

}

(9)从链表中删除元素

void LinkedListDel(LinkedList L,int i)

{ LinkedList p,q;

int j;

j=1;p=L;

while(p->next&&j

{p=p->next;j++;}

if(p->next==NULL)

printf("删除位置不正确\n");

else {q=p->next;p->next=q->next;free(q);

printf("第%d个元素已从链表中删除\n",i);

}

}

(10)建立单链表

LinkedList LinkedListCreat( )

{ LinkedList L=LinkedListInit(),p,r;

int x;

r=L;

printf("请依次输入链表中的元素,输入负数时结束\n");

scanf("%d",&x);

while (x>=0)

{p=(LinkedList)malloc(sizeof(LNode));

p->data=x;

r->next=p;

r=p;

scanf("%d",&x);

}

r->next=NULL;

return L;

}

(11)主函数

main()

{

int i,h,d,e,x,j,n,q;

char ch;

LinkedList L,p;

while(q!=0) {

printf("请选择要进行的操作\n");

printf("1.初始化2.清空3.求链表长度4.检查链表是否为空\n");

printf("5.遍历链表6.从链表中查找元素\n");

printf("7.从链表中查找与给定元素值相同的元素在顺序表中的位置\n");

printf("8.向链表中插入元素9. 从链表中删除元素\n");

printf("10.建立单链表\n");

printf("按其它键结束\n");

scanf("%d",&x);

switch(x)

{case 1:L=LinkedListInit();printf("链表已经初始化\n");break;

case 2:LinkedListClear(L);printf("\n");break;

case 3:printf("链表的长度为%d\n",LinkedListLength(L));break;

case 4:i= LinkedListEmpty(L);if(i)printf("链表为空\n");else printf("链表非空\n");break;

case 5:LinkedListTraverse(L); break;

case 6:printf("请输入待查询元素在链表中的位置:");

scanf("%d",&j);

p=LinkedListGet(L,j);

if(p) printf("链表中第%d个元素的值为:%d\n",j,p->data);

else printf("查询位置不正确\n");

break;

case 7:printf("请输入待查询元素的值:");

scanf("%d",&e);

h=LinkedListLocate(L,e);

if(h)

printf("%d在链表中的位置是:%d\n",e,h);

else printf("链表中没有值为%d的元素\n",e);

break;

case 8:printf("请输入插入元素的位置和值(中间以空格或回车分隔):\n");

scanf("%d%d",&d,&e);

LinkedListInsert(L,d,e);

break;

case 9:if(LinkedListLength(L)==0)

printf("链表已经为空,不能删除\n");

else {printf("请输入待删除元素的位置:\n");

scanf("%d",&n);

LinkedListDel(L,n);}

break;

case 10:L=LinkedListCreat();

printf("\n");break;

default:q=0;}

}

}

六.测试结果

1、单链表的操作

(1)建立单链表:

选择1,然后选择10 ,输入1.2.3.4.5.6.7.8.9 最后一个负数

(2)求链表长度:

选择3,得到执行结果:链表的长度为9

(3)检查链表是否为空:

选择4,得到执行结果:单链表非空

(4)遍历链表:

选择5,得到执行结果:链表中的元素为 1,2,3,4,5,6,7,8,9,

(5)从链表中查找元素:

选择6,输入5,显示:链表中第5个元素的值为5

(6)从链表中查找与给定元素值相同的元素在顺序表中的位置

选择7,输入2,显示:2在链表中的位置是:2

选择7,输入25,显示:链表中没有值为25的元素

(7)向链表中插入元素

选择8,输入(6,5),显示 5以插入到链表中

选择5:链表中的元素为 1,2,3,4,5,5,6,7,8,9,

(8)从链表中删除元素

选择9,输入5,显示第5个元素已从表中删除

选择9,输入12,显示删除位置不正确

选择5,显示链表中的元素为链表中的元素为 1,2,3,4,5,6,7,8,9,

实验二约瑟夫环

1.问题描述

设有编号1,2,3。。。n(n>0)的N个人围成一个圈,每个人持有一个密码(正整数)。开始时从第k(1<=k<=n)个人按顺时针方向自1开始顺序报数,报到m(m为第K个人的密码)的人出圈,再以这个人顺时针方向上的下一个人的密码为m,并开始重新从1报数。如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。例如,设总人数n的初值为8,他们所持的密码分别为:3,10,7,1,4,8,4,5,开始报数人的编号k的初值为7,则出列顺序为:2,1,3,4,8,5,7,6

2.数据结构设计

问题中以序号标示某个人,所以结点的数据域设为一个整型类型的变量

当某人出圈后,报数的工作要从下一个人开始继续,剩下的人仍然围成一圈,可以使用循环表。由于出圈的人将不再属于圈内,意味着数据元素的删除。因此,算法中存有频繁的元素删除操作,存储结构宜采用链表。每个结点中既存储密码还存储初始位置,所以结点有两个数据域,一个指针域。另外,每个结点代表一个人所以,可以令尾结点指针指向首元结点来进行循环。

// 结点类

template

struct Node

{

// 数据成员:

ElemType data;

ElemType num; // 数据域

Node *next; // 指针域

// 构造函数:

Node(); // 无参数的构造函数

Node(ElemType item, ElemType item1,Node *link = NULL);

// 已知数数据元素值和指针建立结构

};

// 结点类的实现部分

template

Node::Node()

// 操作结果:构造指针域为空的结点

{

next = NULL;

}

template

Node::Node(ElemType item, ElemType item1,Node *link)

// 操作结果:构造一个数据域为item和item1,指针域为link的结点

{

data = item;

num = item1;

next = link;

}#endif

3.算法设计

编写一个函数实现结点的删除与输入工作,另编写一个主函数main()完成链表的创建与函数调用工作。

(1)插入

template

Status LinkList::Insert(int position, const ElemType &e)

// 操作结果:在线性表的第position个位置前插入元素e

// position的取值范围为1≤position≤Length()+1

// position合法时返回SUCCESS, 否则函数返回RANGE_ERROR

{

if (position < 1 || position > Length() + 1)

{ // position范围错

return RANGE_ERROR; // 位置不合法

}

else

{ // position合法

Node *tmpPtr;

// 取出指向第position-1个结点的指针

tmpPtr = GetElemPtr(position - 1);

Node *newPtr;

if(position>Length())

// 如果插入尾结点,则域指针指向首元结点

newPtr = new Node(e, position,head->next);

else

newPtr= new Node(e, position,tmpPtr->next);// 生成新结点tmpPtr->next = newPtr; // 将tmpPtr插入到链表中

curPosition = position; // 设置当前位置的序号

curPtr = newPtr; // 设置指向当前位置的指针

count++; // 插入成功后元素个数加1

return SUCCESS;

}

}

(2)删除

template

Status LinkList::Delete(int position, ElemType &e)

// 操作结果:删除线性表的第position个位置的元素, 并用e返回其值,

// position的取值范围为1≤position≤Length(),

// position合法时函数返回SUCCESS,否则函数返回RANGE_ERROR

{

// position合法

Node *tmpPtr;

if(position==1)

// 如果删除首元结点,取出指向尾结点的指针

tmpPtr=GetElemPtr(Length());

else

// 取出指向第position-1个结点的指针

tmpPtr = GetElemPtr(position - 1);

Node *nextPtr = tmpPtr->next;

if(position==1)

//头结点与新的首元结点相连

head->next=nextPtr->next; // nextPtr为tmpPtr的后继

tmpPtr->next = nextPtr->next; // 删除结点

e = nextPtr->data; // 用e返回被删结点元素值

if (position == Length())

{ // 删除尾结点,当前结点变为头结点

curPosition = 1; // 设置当前位置的序号

curPtr = head->next; // 设置指向当前位置的指针

}

else

{ // 删除非尾结点,当前结点变为第position个结点

curPosition = position; // 设置当前位置的序号

curPtr = tmpPtr->next; // 设置指向当前位置的指针}

count--; // 删除成功后元素个数减1

delete nextPtr; // 释放被删结点

return SUCCESS;

}

(3)出圈次序的算法描述

template

int LinkList::Pass(int position , int n ,ElemType &e)

{ int i;

curPtr = GetElemPtr(position); //当前指针指向position

curPosition=position; //记录当前位置

for(i=0;i

{curPtr = curPtr->next;

curPosition++;

}

cout<num<<" "; //输出起始位置

e=curPosition;

}

(4)主程序

#include"assistance.h"

#include"lk_list.h"

int POS(int n,int i) //计算当前位置的函数

{ if(n%i==0)

n=i;

else n=n%i;

return n; }

int main(){ int tmp,i,k=0,n=0,key;

int pos;

LinkList lc; //创建空链表

while(n<1||n>20) //限制人数

{ cout<<"请输入人数,人数小于20:";

cin>>n; }

cout<<"请输入每个人的密码,用空格分隔,密码大于0:"<

for(i=1;i<=n;i++)

{ cin>>tmp;

lc.Insert(i,tmp); //插入尾结点}

while(k<1||k>n)

{ cout<<"从几号开始?0

cin>>k; }

cout<<"出列顺序:";

for(i=n;i>0;i--)

{

if(i==n) //一开始,从k开始报数

{

lc.GetElem(k,key);

lc.Pass(k,key,tmp); //出列

pos=POS(tmp,i); //计算出列位置

lc.Delete(pos,tmp); //删除当前结点,当前指针指向当前位置的下游

}

else

{

lc.GetElem(key); //取当前位置的密码

lc.Pass(key,tmp); //从当前位置开始报数,并出列

pos=POS(tmp,i); //计算出列位置

lc.Delete(pos,tmp);

}

}

system("pause");

return 0;

}

九:心得体会

通过做这次实验,发现自己在数据结构这门课程中还有很多不足,有很多知识还没掌握实验的时候出现了很多错误,有很多知识还不能运用,最后在同学的帮助下,终于完成了任务。

因为以前的C语言没学好,这学期的数据结构感到学的时候有些吃力,在实验的时候,我所以的不足都体现出来了,如果没有同学的帮助,我程序中的问题可能需要很长时间才会解决,所以以后还是要努力赶上来。

在这次实验中,我也得到了很多收获,比如链表的应用,以前总是弄不明白,通过这次实验,在链表这一方面我懂了很多,但还不能运用自如,需要更多的练习。

这次实验,对本学期所学习的内容也是一次巩固,让我加深了对学过知识的记忆。

总之,这次实验让我既发现了自身的很多不足,又增长了很多知识。

#include

#include

#define TRUE 1

#define FALSE 0

typedef struct LNode

{int data;

struct LNode *next;

} LNode,*LinkedList;

LinkedList LinkedListInit()

{LinkedList L;

L=(LinkedList)malloc(sizeof(LNode));

L->next=NULL;

return L;

}

void LinkedListClear(LinkedList L)

{L->next=NULL;

printf("链表已经清空\n");

}

int LinkedListEmpty(LinkedList L)

{if(L->next==NULL) return TRUE;

else return FALSE;

}

void LinkedListTraverse(LinkedList L) {LinkedList p;

p=L->next;

if(p==NULL) printf("单链表为空表\n"); else

{printf("链表中的元素为:\n");

while(p!=NULL)

{printf("%d ",p->data); p=p->next;}

}

printf("\n");

}

int LinkedListLength (LinkedList L) {LinkedList p;

int j;

p=L->next;

j=0;

while(p!=NULL)

{ j++;p=p->next; }

return j;

}

LinkedList LinkedListGet(LinkedList L,int i) {LinkedList p;int j;

p=L->next; j=1;

while (p!=NULL && j

{p=p->next; j++; }

if (j==i) return p;

else return NULL;

}

int LinkedListLocate ( LinkedList L, int x) {LinkedList p;int j;

p=L->next; j=1;

while ( p!=NULL && p->data != x)

{p=p->next;j++;}

if(p) return j;

else return 0;

}

void LinkedListInsert(LinkedList L, int i, int x) {LinkedList p,s;

int j;

j=1;p=L;

while(p&&j

{p=p->next;j++;}

if(p==NULL||j>i)

printf("插入位置不正确\n");

else {s=(LNode *)malloc(sizeof(LNode));

s->data=x;

s->next=p->next;

p->next=s;

printf("%d已插入到链表中\n",x);

}

}

void LinkedListDel(LinkedList L,int i)

{ LinkedList p,q;

int j;

j=1;p=L;

while(p->next&&j

{p=p->next;j++;}

if(p->next==NULL)

printf("删除位置不正确\n");

else {q=p->next;p->next=q->next;free(q);

printf("第%d个元素已从链表中删除\n",i);

}

}

LinkedList LinkedListCreat( )

{ LinkedList L=LinkedListInit(),p,r;

int x;

r=L;

printf("请依次输入链表中的元素,输入负数时结束\n"); scanf("%d",&x);

while (x>=0)

{p=(LinkedList)malloc(sizeof(LNode));

p->data=x;

r->next=p;

r=p;

scanf("%d",&x);

}

r->next=NULL;

return L;

}

main()

{

int i,h,d,e,x,j,n,q;

char ch;

LinkedList L,p;

while(q!=0) {

printf("请选择要进行的操作\n");

printf("1.初始化2.清空3.求链表长度4.检查链表是否为空\n");

printf("5.遍历链表6.从链表中查找元素\n");

printf("7.从链表中查找与给定元素值相同的元素在顺序表中的位置\n");

printf("8.向链表中插入元素9. 从链表中删除元素\n");

printf("10.建立单链表\n");

printf("按其它键结束\n");

scanf("%d",&x);

switch(x)

{case 1:L=LinkedListInit();printf("链表已经初始化\n");break;

case 2:LinkedListClear(L);printf("\n");break;

case 3:printf("链表的长度为%d\n",LinkedListLength(L));break;

case 4:i= LinkedListEmpty(L);if(i)printf("链表为空\n");else printf("链表非空\n");break; case 5:LinkedListTraverse(L); break;

case 6:printf("请输入待查询元素在链表中的位置:");

scanf("%d",&j);

p=LinkedListGet(L,j);

if(p) printf("链表中第%d个元素的值为:%d\n",j,p->data);

else printf("查询位置不正确\n");

break;

case 7:printf("请输入待查询元素的值:");

scanf("%d",&e);

h=LinkedListLocate(L,e);

if(h)

printf("%d在链表中的位置是:%d\n",e,h);

else printf("链表中没有值为%d的元素\n",e);

break;

case 8:printf("请输入插入元素的位置和值(中间以空格或回车分隔):\n");

scanf("%d%d",&d,&e);

LinkedListInsert(L,d,e);

break;

case 9:if(LinkedListLength(L)==0)

printf("链表已经为空,不能删除\n");

else {printf("请输入待删除元素的位置:\n"); scanf("%d",&n);

LinkedListDel(L,n);}

break;

case 10:L=LinkedListCreat();

printf("\n");break;

default:q=0;}

}

}

大一上期C语言实验报告1熟悉实验环境

成都工业学院·计算机工程学院 《程序设计基础》实验报告 1.实验目的 (1)熟悉C语言运行环境,了解和使用Visual6.0++集成开发环境(2)熟悉Visual6.0++环境的功能键和常用的功能菜单命令 (3)掌握C语言程序的书写格式和C语言程序的结构 (4)掌握C语言上机步骤,以及编辑、编译和运行一个C语言程序的方法 (5)熟悉Visual6.0++环境下的程序调试方法 2.实验内容 (1)按照实验步骤编辑、编译、运行第一个”Hello World”程序(2)利用实验指导中的第二个程序熟悉调试工具,在已知x,y值的情况下,计算出x和y的和、差、积、商,并显示出来(3)编写一个程序,输入a、b、c三个值,输出它们的和与平均值c 3.源程序 (1)#include void main() {printf(”Hello World”);} (2)#include void main() {int x=5,y=2; int s,d,p,q; s=x+y; d=x-y; p=x*y; q=x/y; printf(“和:%d差:%d积%d商:%d“,s,d,p,q);}

(3)#include void main() {int a,b,c.sum; float ave; Printf(“Please enter the a,b,c:”); scanf(“%d%d%d”,&a,&b,&c); sum=a+b+c; ave=(float)sum/3; printf(“sum=%d,ave=%f\n”,sum,ave);} 4.运行结果 (1) (2) (3)输入18、46、69测试得出答案如下

c语言实验报告 ()

丽水学院计算机实验报告

丽水学院计算机实验报告 一、实验目的 1.熟悉Visual C++和C-Free等集成环境,掌握运行一个C程序的基本步骤,包括编辑、编译、连接和运行。 2.掌握算术表达式和赋值表达式的使用。 3.掌握基本输入、输出函数的使用。 4.能够编程实现简单的数据处理。 二、实验环境 硬件:Pentium以上的计算机。 软件:Windows XP操作系统、Visual C++和C-Free等集成环境。 三、实验内容和结果 1.编程题1 在屏幕上显示一个短句“What is a computer?” 思考: (1)如何在屏幕上显示你自己的学号,姓名和班级? (2)如何在屏幕上显示数字、英文字母和汉字等信息?例如:“你在机房吗?” 编程题1源程序: #include<> void main() { printf("What is a computer?\n");

} 程序运行结果: What is a computer? 思考题(1): #include<> void main() { printf(",小王,班级\n"); } 思考题(2): #include<> void main() { printf("英文字母abcdefgABCDEFG\n"); printf("汉字:哇哈哈啊哈和\n"); } 2.编程题2 在屏幕上显示下列图形。 * * * * * * * * * *

思考:如何在屏幕上显示下列图形? A A A A 编程题2源程序: #include<> void main() { int i,j; for(j=1;j<5;j++) { for(i=5;i>j;i--) printf("*"); printf("\n"); } } 程序运行结果: * * * * * * * * * * 思考题:

C语言实验报告《函数》

C语言实验报告《函数》 C语言实验报告《函数》 学号: __________ 姓名: __________ 班级: __________ 日期: __________ 指导教师: __________ 成绩: __________ 实验四函数 一、实验目的 1、掌握函数定义、调用和声明的方法 2、掌握实参和形参之间的传递方式 3、函数的嵌套调用 二、实验内容 1、写一个函数,将两个字符串连接。(习题 8. 6) 2、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。(习题 8.9)

3、请将实验三中的实验内容三改正后,再改写成函数形式(排序部分)。物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板 三、实验步骤与过程 四、程序调试记录 一、实验目的 1.观察植物细胞有丝分裂的过程,识别有丝分裂的不同时期。 初步掌握制作洋葱根尖有丝分裂装片的技能。 3.初步掌握绘制生物图的方法。 二、实验原理在植物体中,有丝分裂常见于根尖、茎尖等分生区细胞,高等植物细胞有丝分裂的过程,分为分裂间期和分裂期的前期、中期、后期、末期。可以用高倍显微镜观察植物细胞的有丝分裂的过程,根据各个时期细胞内染色体(或染色质)的变化情况,识别该细胞处于有丝分裂的哪个时期,细胞核内的染色体容易被碱性染料着色。 三、材料用具洋葱根尖、显微镜、载玻片、盖玻片、滴管、镊子、培养皿、铅笔、质量分数为15%的盐酸、体积分数为95%的酒精、质量分数为0.01gml的龙胆紫(或紫药水) 四、实验过程(见书P39) 1.洋葱根尖的培养(提前3—4天) 2.解离: 5min 3.漂洗: 10min 4.染色: 5min

C语言实验报告

《C语言程序设计实训1》报告 设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院

专业:计算机科学与技术 班级: 姓名:学号 指导教师: 提交日期: 2014年12月22日 一、实验内容 编写并调试程序,实现学校各专业班级学生信息的管理。10个学生的信息存储在文件中。在头文件中定义学生信息的结构体类型,包括: 学号、姓名、专业、班级、3门成绩;和符号常量N(学生数)。(同一班 级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)

二、实验要求 (1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择, 调用相应的函数。 STU student[N]; 函数 #include "" void main() { int i,n,id,num,m,sub,corse;将从文件中读取10个人的信\n"); printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n") printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n"); printf("\n4.您将求某一课程分数最高的学生序号的下标\n"); printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");

printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n"); printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n"); printf("\n8.您将把学生信息存入文件\n"); scanf("%d",&id); getchar(); switch(id){ case 1: { printf("\n从文件中读取信息\n"); Input(students,sizeof(students)/sizeof(STU));Sort_select 函数 #include "" void Sort_select(STU * p) { int i,j,k; float sum,ave[N],t; STU tem; for(i=0;i

C语言实验报告参考答案 原

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include main() {

int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include main() { int a,b,c,d; float x; a=160; b=46; c=18;

d=170; x=(a+b)/(b-c)*(c-d); printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b 时,将0赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7

c语言实验报告

C语言实验报告 说明 1,所有程序均用VC6.0编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不是按照日期先后排列的。 2,为了使截图清晰,手动将运行窗口由“黑底白字”改为了“白底黑字”。 实验2 数据类型、运算符和表达式 一、实验目的: (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法。 (2)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C语言的输入和输出函数的使用 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 三、程序调试与问题解决: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } ○1运行此程序。 ○2在上面printf语句的下面再增加一个printf语句。

printf("%d %d\n",c1,c2); 再运行,并分析结果。 输出结果如图,编译成功,无错误。 ○3将第3行改为 int c1,c2; 再运行,并分析结果。 ○4再将第4、5行改为 c1=a; c2=b; 再运行,并分析结果。 a,b没有定义,编译报错。 ○5再将第4、5行改为 c1=‘’a‘’; c2=‘’b‘’; 再运行,并分析结果。 ○6再将第4、5行改为 c1=300; c2=400; 再运行,并分析结果。 以字符型输出时,输出的将是300,400对应的字符。 (2)输人并运行教材第3章习题3. 6给出的程序 #include main () { char c1='a',c2='b',c3='c',c4='\101',c5='\116';

C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include <> main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include<> main() { int a,b,c,x,y; a=150; b=20; c=45;

x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句

C语言实验报告3

实验报告 实验名称:最简单的C程序设计——顺序程序设计成绩: 实验日期: 2011 年 10 月 24 日实验报告日期: 2011 年 10 月24 日 实验者:桂婷 一、实验目的 1、掌握C语言中使用最多的一种语句——赋值语句的使用方法。 2、掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 3、进一步掌握编写程序和调试程序的方法。 二、实验内容 1、输入程序并运行结果。 2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。编程序,用scanf输入数据,输出计算结果/。 3、计算存款利息。 有1000元,想存5年,可探子以下5种办法存: (1)一次存5年期; (2)先存2年期,到期后将本息再存3年期; (3)先存3年期,到期后将本息再存2年期; (4)存1年期,到期后将本息存再存1年期,连续存5次; (5)存活期存款。活期利息每一季度结算一次。 三、实验步骤: 1、

总结:1、变量在定义时就赋了初值。 2、两次的printf语句输出都指定了要输出数据的长度和小数点。2、 总结:1、程序在定义时只对部分变量赋了初值,这是允许的。 2、在计算时,乘号是用*表示,不能省略。 3、同样,在输出时指定了输出格式,长度,小数点位数。 3、

总结:1、用scanf语句输入数据,要与指定的格式一样。 2、程序用到了数学公式,调用“include ” 4、实验出现的问题、实验结果分析 1、程序在运行时是自上而下同,自左向右的。运到调用函数则会跳 转,但调用完了仍然回到主函数中。 2、printf语句中的常量是按原样输出的。 3、注意赋值语句的使用。 五、实验小结和思考 1、如果在程序2中不指定输出的长度和小数位数,看运行结果。 2、在程序3中不包含“include ”会怎样? 3、程序3若不给变量赋初值会出现什么情况。

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

C语言实验报告《综合实验》

C语言实验报告《综合实验》C语言的实验报告,可以参考一下哈,学财务的童鞋快过来!小编为你推荐。 学号:__ 姓名:__ 班级:__ 日期:__ 指导教师:__ 成绩:__ 实验** 综合实验 1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。 2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。 编写一个学生信息排序程序。要求: 1、程序运行时可输入n个学生的信息和成绩(n预先定义)。 2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。 3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。 1、使用函数方法定义各个模块。 20**年C语言实验报告《****》 课程名称:会计实务综合实验 院系名称:经济管理管理

专业班级:会计09- 学生姓名: 学号: 20**年C语言实验报告《***》XX年C语言实验报告《***》指导教师:李*** ****工程学院教务处制 实验项目 会计实务综合实验 实验日期 在这一次的操作中,加深对会计理论知识的理解和掌握,通过对会计业务的运用和基本技能的训练,将专业理论和会计实务紧密结合。本实验的操作,也是对学生所学专业知识掌握程度及运用能力的一次综合考查,为他们以后从事的会计工作打下扎实的基础。 1、实验模拟教材 2、计算器 3、钢笔、直尺 根据本学期所学的中级会计实务的内容,解决我们实习中老师布置的问题,本学期所学的重点主要是投资性房地产、非货币性资产交换、借款费用、债务重组、或有事项、所得税的计算、会计政策、会计估计变更和差错更正以及资产负债表日后事项的调整。把每一个业务题都当作一个真实的业

2010C语言实验报告参考答案

2010C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a;

C语言实验报告参考源代码

实验5三种基本结构的综合应用 4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=100;i<=999;i++) {for(j=2;j=i) /*三位数是素数时*/ {k=i%100; /*去掉百位数字*/ if(k>=10) /*十位数字不是0时*/ {for(m=2;m=k) /*两位数是素数时*/ {p=i%10; /*p为个位数字*/ for(q=2;q=p)n++;}}}} printf("%d\n",n);} Key:57 5.求[2,400]中相差为10的相邻素数对的对数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=2;i<=400;i++) {for(j=2;j=i) /*i是素数时*/ {for(k=i+1;k=k)break;} /*k是素数时终止if语句的外层循环*/ if(k>=i+10) /*[i+1,i+9]不是素数时*/ {for(q=2;q

哈工大(威海)c语言实验报告册答案

实验1简单判定性问题求解 一、实验学时 完成本实验需4学时。 二、实验目的 1、阅读程序题 (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法; (2)掌握不同的类型数据之间赋值的规律; (3)掌握数据在内存中的存储方式; (4)学会输入、输出函数的基本格式和使用方法; (5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。 2、编程题 (1)如何运用if-else判定性结构进行程序设计; (2)如何运用switch判定性结构进行程序设计。 3、调试题 (1)熟悉C程序的编辑、编译、连接和运行的过程。 三、实验指导 为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。 1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。 2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。要注意简单判定性问题的结构选择。 3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。

四、实验内容 1、阅读程序题 (1)main( ) { /*定义字符型变量*/ char c1,c2; /*向字符变量赋以整数*/ c1=97; c2=98; printf("%c %c\n",c1,c2); /*以字符形式输出*/ printf("%d %d\n",c1,c2); /*以整数形式输出*/ } 思考:可否改成int c1,c2;输出结果是?相同 (2)main() { int a=7,b=5; printf("%d\n",b=b/a); } 思考:若将printf语句中%d变为%f,可否输出分式的值?可以(3)main() { int a=9; a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/ printf("%d\n",a); } 思考:赋值表达式a+=a-=a+a的求解步骤? 第一步:a=a-(a+a)=-9 第二步a=a+a=18 (4)main() { int k=-1; printf("%d,%u\n",k,k);

:C语言实验报告册-2016.3资料

学生实验报告册 (理工类) 课程名称:C语言程序设计实验专业班级: 16数字媒体技术学生学号: 1613031008 学生姓名:李翔 所属院部:计算机工程学院指导教师:吕艳林 20 16 ——20 17 学年第一学期 金陵科技学院教务处制

实验报告书写要求 实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验项目名称:初级程序设计实验学时: 6 实验地点: A107 实验日期: 2016年10月13,20,27 实验成绩: 批改教师:批改时间:

实验1 初级程序设计 一、实验目的和要求 (1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试; (2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用; (4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用; (6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。 二、实验仪器和设备 奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。 三、实验内容与过程 1、程序调试 (1)#include main() { int s,t,p,sum; scanf(“%d%d%d”,&s,&t,&p); sum=s+t+p; printf(“sum=%d\n”,sum); } (2)#include main() { int k=3; if(k=3) printf(“***”); else printf(“###”); } (3)#include main() {int k=0; do { printf(“k=%d\n”,k); }while(k++>0); } 2、程序改错

C语言实验报告

实验一进制转换 一、实验要求 采用模块化程序设计完成进制转换。由键盘输入一个十进制正整数,然后将该数转换成指定的进制数(二、八、十六) 形式输出。指定的进制由用户输入。 二、实验目的 1、熟悉C 环境的安装、使用。 2、承上启下,复习《C 程序设计》等基础课程的知识。 3、掌握C 语言编程的方法。 三、预备知识 1、VC6.0的安装与使用。 2、C 程序设计基础知识。 四、实验内容 采用模块化程序设计完成进制转换。 五、程序框图 六、程序清单 1. 编写主函数:输入需转换的数与转换的进制 2. 编写子函数 (1)函数转换为除16进制以外的进制转换算数编程,使用while 循环实现计算进制的转换,并输出转换后的数字; (2)函数转换为16进制,用while 函数实现16进制转换的计算并输出16进制转换后的数据; 3. 编写数组,关于16进制的一系列字符 4. 编写主函数加入do while 使函数可以循环。

七、实验步骤 #include char num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; void fun(int n, int m) { int i=-1, a[100]; if(m!=16) { while(n) { a[i++]=n%m; n=n/m; } while(i!=-1) printf("%d",a[--i]); printf("\n"); } else { while(n) { a[++i]=num[n%16]; n/=16; } while(i!=-1) printf("%c",a[i--]); printf("\n"); } } int main() { int a, c; char cIn = 0; do { printf("\n输入正整数,转换的进制:"); scanf("%d %d",&a,&c); fun(a,c); printf("Go on? (Y/N):"); cIn = getchar( ); if(cIn == 'N' || cIn == 'n') return 0; } while(1);fun(a,c);

C语言综合性设计实验报告

C语言综合性设计实验报告 1.实验题目 建立一个简单的会员卡储值积分管理系统。 该系统的主要功能是:会员卡管理功能和会员卡储值积分管理。 会员卡管理功能: (1)根据身份证办理会员卡,一张身份证只能办理一张会员卡。 (2)根据需要可以注销、挂失、冻结会员卡或修改会员卡密码以及积分和消费金额查询。会员基本信息包括:会员身份证号、卡号、密码、积分、消费金额、级别。 会员卡储值积分管理: (1)根据会员卡级别设置折扣率,根据折扣率自动打折计算消费金额。 (2)根据消费金额计算积分,积分累计达到一定标准后换购商品。 2.设计分工 组员 组员 组员: 组员 在本系统开发中,小组各成员的分工如下: 会员的信息存储数据结构和各个子函数的名称及实验报告的书写由全体成员统一制定; 主函数main,主控程序模块call函数,系统退出函数,各函数名称及用到的变量名称的规定由胡丽萍统一负责。 会员管理总函数,会员积分总函数,会员信息查询函数及信息内容输出函数由陈建飞负责。 会员信息冻结函数,挂失函数,注销函数及内部返回到主菜单的返回函数由郭娟如负责。 密码设置函数,查询时检查函数,增加新会员函数,修改密码函数统一由郭霞负责。 输入级别函数,输入消费函数,查询积分函数,查询折扣率函数统一交由胡桂芳负责。 3.问题概述 要实现这个会员积分管理系统,要遇到的问题如下: ①. 首先要有一个主函数来负责对子函数的调用。 ②. 进行新增一个会员时的增加操作 ③. 对身份证号码的判定操作及密码的设置及判定操作 ④. 输出会员信息时对各部分的总体把握 ⑤. 修改密码时覆盖其原有的密码 ⑥. 会员级别及消费来查询折扣率和积分的操作 4.问题分析 首先该问题分为两个大块,一个是会员卡管理功能,另一个是会员积分管 理功能。针对会员卡管理功能,首先应具备7项功能,新会员的录入,查询会员

C语言实验报告(四)

C语言实验报告(四) 一、实验目的 1.掌握C语言中函数和模块 2.掌握怎样定义函数,如何调用或使用函数,如何声明函数 3.掌握函数的参数,了解在函数调用时,参数是如何传递的 4.在使用函数的过程中怎样确定函数的参数 5.如何使用局部变量和全局变量 二、实验内容 1. 偶数判断 描述: 编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。编写一个程序,从键盘输入m个整数,分别调用用户自定义函数来判断这m个整数的奇偶性。 输入: 第一行为一个整数m,表示要判断m个整数的奇偶性;紧接着是m行,每行一个整数。 输出:有m行,分别对应输入的第2到第m+1行的整数的奇偶性样例输入: 2 1 6 样例输出: 奇数 偶数

·程序代码: #include"stdio.h" int isEven(int a) { if(a%2==0) return 1; else return 0; } int main() { int m,i,b; scanf("%d",&m); for(i=1;i<=m;i++) { scanf("%d",&b); if(isEven(b)==1) printf("偶数\n"); else printf("奇数\n"); } return 0; } 2.温度转换 描述: 编写一个用户自定义函数,函数的功能是:将华氏温度转F换为摄氏温度C。转换公式为:C=5*(F-32)/9。编写一个程序,输出指定范围的华氏温度与摄氏温度的对照表,其中华氏温度步长为4。 输入: 两个空格隔开的整数n,m(且0

C语言实验报告范文

实验名称:指针及其应用日期:得分:指导老师: 专业:班次:姓名:学号: 实验目的 (1)掌握变量的指针及其基本用法。 (2)掌握一维数组的指针及其基本用法。 (3)掌握指针变量作为函数的参数时,参数的传递过程及其用法。一.实验内容( 1)运行以下程序,并从中了解变量的指针和指针变量的概念。 (2)运行以下程序,观察 &a[0] 、&a[i] 和 p 的变化,然后回答以下问题: 1.程序的功能是什么? 2.在开始进入循环体之前, p 指向谁? 3.循环每增加一次, p 的值(地址)增加多少?它指向谁? 4.退出循环后, p 指向谁? 5.你是否初步掌握了通过指针变量引用数组元素的方法?( 3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。 ( 4)编写函数,将 n 个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成: ①输入 10 个数; ②调用此函数进行重排; ③输出重排后的结果。 二.分析与讨论 ( 1)指针的定义方法,指针和变量的关系。 定义方法: 数据类型 * 指针变量名 ; 如定义一个指向 int 型变量的指针—— int *p; 则我们可以继续写如下代码—— int a = 4; p = &a; printf("%d", *p); 在这里,我们定义了一个变量a,我们把它理解为内存空间连续的 4个字节(int 型占用 4字节),则这 4个字节的空间保存着一个数 4。&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p (记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保 存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的 4个字节,那么这4个字节保存的数就是变量a的地址。printf("%d",*p)和 printf("%d",a)的结果是一样的。这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时 int *p 的*号作用不同(定义时的 *表示该变量是个指针变量,而非是取它指向的变量)。 ( 2)数组和指针的关系。 指针与数组是 C 语言中很重要的两个概念,它们之间有着密切的关系,利用这种

C语言程序设计实验报告优秀范文

C语言程序设计实验报告优秀范文 实验名称计算出1000以内10个最大素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内最大的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i if(n%i==0)/* 如果不是素数,返回0 */ return 0; return n;/* 如果是素数,返回该数*/ } void main { int i,j=0,n,m=0,a[1000],x; /*clrscr;*/ printf("please input a number form 1 to 1000:"); scanf("%d",&x); if(x==2)/* x=2时的处理*/ printf("%dn",x); else if(x printf("error!n");

C语言实验报告参考答案

《C语言程序设计》 实 验 手 册

《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。

三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include void main() { printf(“*****************\n”); printf(“This is a c program. \n”); printf(“****************\n”); } 运行结果及分析:运行结果为: Printf函数语句表示输出引号内的字符串,最后的\n表示换行, 将程序中的\n去掉后,运行结果及分析:运行结果为: 去掉\n后不换行连续显示 (2)#include void main() { int a=100,b=20,sum,sb; sum=a+b; sb=a/b; printf("sum=%d,sb=%d",sum,sb); } 运行结果及分析: sum=100+20=120;sb=100/20=5. (3)#include void main( )

相关文档 最新文档