c语言实验报告_c语言实验报告答案

其他范文 时间:2020-02-27 13:38:26 收藏本文下载本文
【www.daodoc.com - 其他范文】

c语言实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实验报告答案”。

计算机软件技术基础实验报告

实验一:线性表的排序与查找

一.实验内容

a)键盘输入一组无序数据,添加到线性表中; b)排序线性表并输出排序结果; c)键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;

d)键盘输入一个数,并从线性表中删除相应的数据,输出结果。

二,源程序

// Experiment1.cpp : 定义控制台应用程序的入口点。//

#include “stdafx.h” #include “iostream” #include

// 程序实现有各种方法,这里给出一个实例。

// 定义一个线性表

const int nMaxSize = 15;// 最大值 int nLen = 0;

// 表中元素个数 int nLinearList[nMaxSize];

// 定义操作 void LSort();void LOut();void LInsert(int n);void LDelete(int n);

int main(int argc,TCHAR*argv[]){ // 输入数据并放入线性表中

printf(“Please input datan”);// std::cout

scanf(“%d”,&nIn);// std::cin >> nIn;

nLinearList[i] = nIn;

nLen++;

}

LSort();// 排序线性表 LOut();// 输出结果

printf(“Please input a data to insert n”);scanf(“%d”,&nIn);LInsert(nIn);// 输入一个数字,并插入到线性表中 LOut();

printf(“Please input a data to delete n”);scanf(“%d”,&nIn);LDelete(nIn);// 输入一个数字,并从线性表中删除

LOut();

char chTmp;printf(“Please input a char to finish this program.”);chTmp = getch();return 0;}

void LSort()

// 冒泡排序,由大到小 { int j,F,k,M;

F=nLen;while(F>0)

{k=F-1;F=0;for(j=1;j

M=nLinearList[j];nLinearList[j]=nLinearList[j+1];nLinearList[j+1]=M;F=j;

}}}

}

void LOut(){ printf(“n”);for(int i = 1;i

printf(“%d, ”, nLinearList[i]);} printf(“n”);} void LInsert(int n){ int i,j;i=1;while(i=i;j--)nLinearList[j+1]=nLinearList[j];nLinearList[i]=n;break;} i++;} } void LDelete(int n){ int i,j;for(i=1;i

运行结果

实验2:栈与队列的应用

一. 实验内容

a)键盘输入算数表达式,并放入队列当中; b)应用栈的概念设计表达式求值算法;

输出表达式求值结果 二.源程序

// Experiment2.cpp : 定义控制台应用程序的入口点。

#include “stdio.h” #include #include #include

// 程序实现有各种方法,这里给出一个实例。

const int MAX_LEN = 10;// 字符串的长度 const int MAX_SIZE = 30;// 栈或队的最大元素个数

// 定义一个队列的结构 struct QUEUE { int nMaxSize;// 最大值

int nCount;// 个数

int nFront;// 头

int nRear;// 尾

char szQueue[MAX_SIZE][MAX_LEN];};

//定义一个栈的结构 struct STACK { int nMaxSize;// 最大值

int nTop;// 栈顶

char szStack[MAX_SIZE][MAX_LEN];};

// 队列的操作

void InitQueue(QUEUE *q,int nMaxSize){ q->nMaxSize=nMaxSize;q->nCount=0;q->nFront=0;q->nRear=0;q->szQueue[MAX_SIZE][MAX_LEN]=0;} void InQueue(QUEUE *q, char *pItem){ if(q->nCount==q->nMaxSize){

printf(“The Queue is full!n”);

return;} strcpy(q->szQueue[q->nRear],pItem);if(q->nRear++==MAX_SIZE)q->nRear=0;q->nCount++;} void OutQueue(QUEUE *q, char *pItem){ if(q->nCount==0){

printf(“The Queue is empty!n”);

return;} strcpy(pItem,q->szQueue[q->nFront]);if(q->nFront++==MAX_SIZE)q->nFront=0;q->nCount--;}

//栈的操作

void InitStack(STACK *s,int nMaxSize){

s->nMaxSize=nMaxSize;

s->nTop=0;

s->szStack[MAX_SIZE][MAX_LEN]=0;} void PushStack(STACK *s, char *pItem){ char *p;if(s->nTopnMaxSize){

p=s->szStack[s->nTop];

strcpy(p,pItem);

s->nTop++;} else { printf(“The stack overflow!n”);return;} } void PopStack(STACK *s, char *pItem){ char *p;if(s->nTop==0){

printf(“stack is empty!n”);

return;} else {

p=s->szStack[--s->nTop];

strcpy(pItem,p);} } void GetTopStack(STACK *s, char *pItem){ char *p;char a[10]={0};if(s->nTop==0){

a[0]=';';

strcpy(pItem,a);} else {

p=s->szStack[s->nTop-1];

strcpy(pItem,p);} }

//字符判断 int isdigit(char x){ if(x>='0'&&x

int Priority(char *op);// 获得操作符的优先级 void Compute(char *num1, char *num2, char *op, char *chResult);//主函数 void main(){

// 计算表达式的值

char x[MAX_LEN];

// 扫描的表达式

char op[MAX_LEN];

// 栈顶运算符

char num1[MAX_LEN], num2[MAX_LEN];

// 两个操作数

char chResult[MAX_LEN];

// 运算结果 // ***声明一个队列

struct QUEUE q1;

struct QUEUE *q;// ***声明OS栈和NS栈

struct STACK OS;

struct STACK NS;

struct STACK *o;

struct STACK *n;

int i=0;

int j=0;

int k=0;//****初始化

q=&q1;

o=&OS;

n=&NS;

InitStack(o,20);

InitStack(n,20);

InitQueue(q,20);

printf(“please input the expreion end with //录入表达式 do

{

printf(”nextn“);

scanf(”%s“,x);

InQueue(q,x);}

while(x[0]!=';');printf(”expreion n“);while(true){

if(q->nCount!=0)

{

OutQueue(q, x);

printf(”%s“,x);

}

”;n“);

if(isdigit(x[0]))

PushStack(n,x);

else

{

// 是数

// 认为是运算符,没有考虑空格等

GetTopStack(o,op);// 获得OS栈顶运算符 if(x[0] == ';' && op[0] == ';')

// 扫描结束 {

printf(”n result is “);break;} if(Priority(x)> Priority(op)){ PushStack(o,x);continue;}

// 运算符的优先级〉栈顶运算符

while((Priority(x)

{

PopStack(n,num1);

PopStack(n,num2);

PopStack(o,op);

Compute(num2,num1,op,chResult);

PushStack(n,chResult);

GetTopStack(o,op);

}

PushStack(o,x);

}

} PopStack(n,chResult);printf(”%sn“,chResult);}

int Priority(char *op){ int nPriority = 0;

switch(op[0]){ case '^':

nPriority = 3;

break;case '*': case '/':

nPriority = 2;

break;case '+':

// 不大于栈顶运算符

case '-':

nPriority = 1;

break;case ';':

nPriority = 0;} return nPriority;} void Compute(char *num1, char *num2, char *op, char *chResult){ double fNum1,fNum2;double fResult = 0;fNum1 = atof(num1);fNum2 = atof(num2);switch(op[0]){ case '^':

fResult = pow(fNum1,fNum2);

break;case '*':

fResult = fNum1*fNum2;

break;case '/':

fResult = fNum1/fNum2;

break;case '+':

fResult = fNum1+fNum2;

break;case '-':

fResult = fNum1-fNum2;

break;}

} sprintf(chResult,”%.4f“,fResult);//把计算的结果转化为字符串 return;三.运行结果

实验三:关系数据语言的应用

一、实验内容

查询学生出生日期(Sno, Sname, BirthDay);按学号顺序查询一个班级的所有学生(Cla, Sname);列出学生选择各门课程的成绩(Sname, Cname, Grade);列出有过不及格成绩的学生名单(Sno, Sname, Cla);求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ);查找各科成绩都 >= 85 分的学生(Sname, Cla);将课程号为“01”的课程名称修改为“软件技术”;修改一名学生的姓名、性别、年龄;将成绩为55~59分的男生的成绩修改为60分;删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩);删除一个班级的所有学生;删除所有数据表和数据库。

程序清单及结果: CREATE TABLE Stu(Sno CHAR(4)PRIMARY KEY, Sname CHAR(10), Sex CHAR(2), Age NUMERIC, BirthDay DATETIME, Cla CHAR(10),);CREATE TABLE Course(Cno CHAR(2)PRIMARY KEY, Cname CHAR(10), Chour NUMERIC,);CREATE TABLE Score(Sno CHAR(4), Cno CHAR(2), PRIMARY KEY(Sno,Cno), Grade NUMERIC,)Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla)values('3626','张小唯','女','18','1995-09-24','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla)values('3628','王红','女','19','1994-06-27','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla)values('3634','李雷','男','20','1992-11-30','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla)values('3635','张明','男','18','1994-06-03','电科1202');Insert into Stu(Sno,Sname,Sex,Age,BirthDay,Cla)values('3641','赵小东','男','20','1993-03-15','电科1202');

Insert into Course(Cno,Cname,Chour)values('01','asdf','12');Insert into Course(Cno,Cname,Chour)values('02','qwer','23');Insert into Course(Cno,Cname,Chour)values('03','zxcv','34'

Insert into Score(Sno,Cno,Grade)values('3570','01','97');Insert into Score(Sno,Cno,Grade)values('3580','01','54');Insert into Score(Sno,Cno,Grade)values('3584','01','56');Insert into Score(Sno,Cno,Grade)values('3583','01','88');Insert into Score(Sno,Cno,Grade)values('3574','02','87');Insert into Score(Sno,Cno,Grade)values('3575','03','79');Insert into Score(Sno,Cno,Grade)values('3576','02','68');Insert into Score(Sno,Cno,Grade)values('3577','03','58');Insert into Score(Sno,Cno,Grade)Values('3578','03','98');Insert into Score(Sno,Cno,Grade)values('3626','01','97');Insert into Score(Sno,Cno,Grade)values('3628','01','54');Insert into Score(Sno,Cno,Grade)values('3637','01','56');Insert into Score(Sno,Cno,Grade)values('3640','01','88');Insert into Score(Sno,Cno,Grade)values('3657','02','87');Insert into Score(Sno,Cno,Grade)values('3675','03','79');Insert into Score(Sno,Cno,Grade)values('3676','02','68');Insert into Score(Sno,Cno,Grade)values('3677','03','58');Insert into Score(Sno,Cno,Grade)Values('3678','03','98');

1.查询学生出生日期(Sno, Sname, BirthDay); Select Sno,Sname,BirthDay from Stu;

2.按学号顺序查询一个班级的所有学生(Cla, Sname);

Select Cla,Sname from Stu order by Sno;

3.列出学生选择各门课程的成绩(Sname, Cname, Grade); Select Sname,Cname,Grade from Stu,Course,Score

where Stu.Sno=Score.Sno and

Course.Cno=Score.Cno;

4.列出有过不及格成绩的学生名单(Sno, Sname, Cla);Select distinct Stu.Sno,Sname,Cla from Stu,Score where Stu.Sno=Score.Sno and

Grade

5.求学生的平均成绩和总成绩(Sname, PJCJ, ZCJ);

Select Sname,avg(Grade)PJCJ,sum(Grade)ZCJ from Stu,Score where Score.Sno=Stu.Sno group by Stu.Sname;

6.查找各科成绩都 >= 85 分的学生(Sname, Cla);

Select Sname,Cla from Stu where exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='01' and Score.Grade>=85)and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='02' and Score.Grade>=85)and exists(Select * from Score where Stu.Sno=Score.Sno and Score.Cno='03' and Score.Grade>=85);

7.将课程号为“01”的课程名称修改为“软件技术” Update Course set Cname='软件技术' where Cno='01';

8.修改一名学生的姓名、性别、年龄;

Update Stu set Sname='aha',Sex='wm',age='10'where Sno='3626';

9.将成绩为55~59分的男生的成绩修改为60分

Update Score set Grade=60 where Sno in(Select Sno from Stu where Sex='女')and Grade between 55 and 59;

10.删除90年以后、80年以前出生的学生的所有信息(包括选课和成绩)Delete Stu where Sno in(select Sno from Stu where BirthDay '1990-12-31')

11.删除一个班级的所有学生

Delete from Stu where Cla='电科1202';

12.删除所有数据表和数据库 Drop database MyDB;

C语言实验报告

实验报告Ⅰ指导教师曾宪华实验时间: 2010 年10月日 学院通信与信息工程专业通信类班级0101105学号2011210150姓名陈环宇 实验室s313实验目的及要求:(1)掌握选择结构程序设计,学会......

c语言实验报告

实验报告一(注意:红字不用抄写,其它必须抄写。实验纸不够用写反面。)一、实验内容if语句、ifelse语句、ifelse if语句的练习二、重点难点分析题目,正确应用相应的选择语句三、实......

C语言实验报告

《C语言程序设计》实验报告实验名称 ____ C程序的运行环境和运行C程序的方法_学期日期同组人李江涛指导老师_杨雪松___________成绩___________ -------------------------......

c语言实验报告

南昌大学实验报告学生姓名: 学 号: 专业班级:√ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验类型:□ 验证 □一.实验名称实验3 控制语句二.实验目的1.熟练掌握if 、if…else、i......

C语言实验报告

郑州轻工业学院 实 践 报 告实现内容:OJ1123最佳校友(数组)、OJ1158又是升序(指针)、OJ1180成绩统计(结构)、OJ1203做幻方(文件)学号:541507020140 学生姓名:王红旭专业班级:电子信息科......

下载c语言实验报告word格式文档
下载c语言实验报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文