您现在的位置是: 首页 > 经典美文 经典美文

c语言实验报告怎么写?_c语言实验报告范文

tamoadmin 2024-08-25 人已围观

简介1.C语言实验报告你只需要按那个模版就行,那些内容就改成你的作业 班级: 学号: 姓名:实验9 指针 一、实验目的(1)掌握指针概念,并定义与使用它。(2)使用数组的指针和指向数组的指针变量。(3)使用字符串的指针和指向字符串的指针变量。二、实验内容1. 将一个3*3的矩阵转置,用函数实现。2. 有n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出,问第几号的人能留下。三

1.C语言实验报告

c语言实验报告怎么写?_c语言实验报告范文

你只需要按那个模版就行,那些内容就改成你的作业

班级: 学号: 姓名:

实验9 指针

一、实验目的

(1)掌握指针概念,并定义与使用它。

(2)使用数组的指针和指向数组的指针变量。

(3)使用字符串的指针和指向字符串的指针变量。

二、实验内容

1. 将一个3*3的矩阵转置,用函数实现。

2. 有n个人围成一圈,顺序排号。从第一个人开始报数(1~3),凡报到3的人退出,问第几号的人能留下。

三、实验环境

硬件:(1)学生用微机

(2)多媒体实验教室

软件:(1)Windows XP 中文操作系统

(2)VC++ 6.0

四、实验结果

程序1:

#include<stdio.h>

void main()

{

void move(int *pointer);

int a[3][3],*p,i;

printf("input marix:\n");

for(i=0;i<3;i++)

scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

move(p);

printf("matrix:\n");

for(i=0;i<3;i++)

printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);

}

void move(int *pointer)

{

int i,j,t;

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{

t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

程序2:

#include<stdio.h>

void main()

{

int i,k,m,n,num[50],*p;

printf("input num of person:");

scanf("%d",&n);

p=num;

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

*(p+i)=i+1;

i=0;

k=0;

m=0;

while(m<n-1)

{

if(*(p+i)!=0)k++;

if(k==3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

}

while(*p==0)p++;

printf("the last num is %d\n",*p);

}

结果1:(就是程序运行之后出现的框,截图后粘贴这里)

结果2:

五、总结:

通过这个实验的学习, 基本掌握了指针的基本用法。

C语言实验报告

实验题目:

编程实现:二叉树用二叉链表存储,要求建立一棵二叉树,并输出要求的树状形式与结点编号。

结点结构为:

lchied Data num rchied

其中二叉树的num编号域为整数类型,data数据域为字符类型,

要求生成二叉树中编号,从1开始进行连续编号,每个结点的编号大于其左右子树中孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,

请给出对二叉树中结点的实现如上要求编号并按如下树状形式打印出相应点编号的程序。

测试数据:输入 AB∪D∪∪CE∪F∪∪∪ (其中符号“∪”表示空格(space)字符)

实验分析:

本题的考察点:二叉树遍历应用。本题主要涉及到对二叉树的创建,二叉树的打印,以及在遍历的时候顺便给每个节点编号,这样打印的时候顺便就把节点的序号也打印出来了。下面分别给出三个算法。

二叉树的创建算法:

二叉树的打印算法:

给结点的编号算法:

另外在这里也阐明一下二叉树的结构:

结合上面的四个算法,这个问题自然也就迎刃而解了,这样也就能得到这个问题的完整程序。

完整程序如下:

#include<stdio.h>

#include<stdlib.h>

typedef struct BiTNode

{

int num;

char data;

struct BiTNode *LChild,*RChild;

}BiTNode,*BiTree;

void CreateBiTree(BiTree *BT)

{

char ch;

ch=getchar();

if (ch==' ') (*BT)=NULL; /* #代表空指针*/

else

{

(*BT)=(BiTree) malloc(sizeof(BiTNode));/*申请结点 */

(*BT)->data=ch; /*生成根结点 */

CreateBiTree(&((*BT)->LChild)); /*构造左子树 */

CreateBiTree(&((*BT)->RChild)); /*构造右子树 */

}

}

void print(BiTree root,int nlayer)

{

int i;

if(root==NULL)return;

print(root->RChild,nlayer+4);

for(i=0;i<nlayer;i++)

printf(" ");

printf("%c%d\n",root->data,root->num);

print(root->LChild,nlayer+4);

}

void num(BiTree )

{

static int i=1; //定义静态全局变量

if(!=NULL)

{

num(->LChild);

num(->RChild);

->num=i;

i++;

}

}

int main()

{

BiTree ;

printf("请输入相关字符以创建一个二叉树:\n");

CreateBiTree(&);

num();

print(,1);

return 0;

}

程序的测试结果:

实验总结:

在解决具体的实验问题时,我们要分析问题,将一个大的问题细分为一个个小的问题,再去分析解决一个个小的问题,这样就能很好的解决问题了。在平时的实验过程中,要注重培养自己的分析问题及解决问题的能力。

大致一个流程和格式是这样的,具体的可以自己添加。。。。

// 要求,在输入姓名的时候请不要有空格,比如ZhangSan 不能为Zhang San

//你的题目要求不是很详细,这个大概能满足你的需求

#include <iomanip>

#include <iostream>

#include <string>

using namespace std;

#define MAX_NUM 30

struct STUDENT

{

string stuName; //姓名

string stuSex; //性别 m f

int stuNum; //学号

double stuScore[3]; //成绩

double stuAver; //平均成绩

double stuAll; //总分

};

void inputData(STUDENT stu[],int &ID)

{

cout<<"请分别输入该学生的姓名,性别,学号,3科成绩"<<endl;

cin>>stu[ID].stuName>>stu[ID].stuSex>>stu[ID].stuNum>>stu[ID].stuScore[0];

cin>>stu[ID].stuScore[1]>>stu[ID].stuScore[2];

cin>>stu[ID].stuScore[4];

// 总分,平均分

stu[ID].stuAll=(stu[ID].stuScore[0]+stu[ID].stuScore[1]+stu[ID].stuScore[2]);

stu[ID].stuAver=stu[ID].stuAll/3.0;

cout<<"录入成功!"<<endl;

ID++;

}

void showTable()

{

cout<<" 姓名 性别 学号 课程1 课程2 课程3 总分 平均分"<<endl;

}

void showData(STUDENT stu[],int ID)

{

cout<<setw(8)<<stu[ID].stuName<<setw(7)<<stu[ID].stuSex<<setw(7)<<stu[ID].stuNum<<setw(7)<<stu[ID].stuScore[0];

cout<<setw(7)<<stu[ID].stuScore[1]<<setw(7)<<stu[ID].stuScore[2];

cout<<setw(7)<<stu[ID].stuAll<<setw(7)<<stu[ID].stuAver<<endl;

}

void queryData(STUDENT stu[],int ID)

{

string stuName;

cout<<"请输入要查询的姓名:";

cin>>stuName;

cout<<endl;

for(int i=0;i<ID;i++)

{

if(stu[i].stuName==stuName)

{

cout<<"信息找到"<<endl;

showTable();

showData(stu,i);

system("pause");

return ;

}

}

cout<<"未找到信息"<<endl;

}

//总分排序

void sortByAll(STUDENT stu[],int ID)

{

int i,j;

STUDENT temp;

for(i=0;i<ID-1;i++)

{

for(j=i+1;j<ID;j++)

{

if (stu[i].stuAll > stu[j].stuAll)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

}

}

cout<<"排序成功!"<<endl;

}

void funTable()

{

cout<<"================================="<<endl;

cout<<" 1---输入学生信息"<<endl;

cout<<" 2---查询学生信息"<<endl;

cout<<" 3---总分排序"<<endl;

cout<<" 4---显示当前学生信息"<<endl;

cout<<" 5---退出"<<endl;

cout<<"=================================="<<endl;

cout<<"请给出你的选择:"<<endl;

}

int main()

{

STUDENT stu[MAX_NUM]; //开辟30个空间来存放学生信息;

int ID=0; //用来计数,记当前学生信息的总数

char ch;

bool flag=true;

int i;

while(flag)

{

funTable();

cin>>ch;

switch (ch)

{

case '1':

inputData(stu,ID);

break;

case '2':

queryData(stu,ID);

break;

case '3':

sortByAll(stu,ID);

break;

case '4':

showTable();

for(i=0;i<ID;i++)

{

showData(stu,i);

}

break;

default:

cout<<"用户选择退出……"<<endl;

system("pause"); //暂停

flag=false;

break;

}

system("pause"); //暂停

system("cls"); //清屏

}

return 0;

}