通信工程C语言课程设计报告

时间:2019-05-12 17:58:54下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《通信工程C语言课程设计报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《通信工程C语言课程设计报告》。

第一篇:通信工程C语言课程设计报告

通信工程C语言强化训练实验报告

学 号:

4090710 姓 名: 张亮 提交日期: 成 绩: 评 语:

教师签字:

东北大学秦皇岛分校计算机工程系

6.26

通信工程C语言强化训练实验报告

学生信息管理程序

1、强化训练目的

a)C语言基本知识的巩固和综合运用。基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体。

b)C语言高级编程。链表基本操作、文件的基本操作、图形和声音制作。c)程序的结构化设计。

d)编辑、设置、编译、调试、执行。e)C语言结合实际问题的综合设计。

2、设计题目功能

对学生信息进行管理,能够完成学生信息的增、删、改、查找等功能。

数据文件名40607.dat。

学生信息至少包括学号、姓名、性别、出生日期、宿舍号等基本信息。

3、设计题目要求

1有主界面和主菜单

2以班级为单位用链表存放学生信息

3可以实现按学号、姓名、宿舍号查询和统计并在屏幕上输出查询结果 4友好的界面和操作提示

[A]信息录入 [D]信息删除 [F]信息查询 [Q]退出

4、程序流程图

—— 2 ——

通信工程C语言强化训练实验报告

5.主要代码

#include #include

#include /*其它说明*/ #include /*字符串函数*/

#include /*内存操作函数*/ #include /*字符操作函数*/ #include “conio.h”

#define LEN sizeof(STUDENT)

typedef struct stu /*定义结构体数组用于缓存数据*/ {char num[6];char name[5];int score[3];int sum;

float average;int order;

struct stu *next;}STUDENT;

/*函数原型*/

STUDENT *init();/*初始化函数*/ int menu_select();/*菜单函数*/ STUDENT *create();/*创建链表*/

void print(STUDENT *head);/* 显示全部记录*/ void search(STUDENT *head);/*查找记录*/

STUDENT *mydelete(STUDENT *head);/*删除记录*/ STUDENT *sort(STUDENT *head);/*排序*/

STUDENT *insert(STUDENT *head,STUDENT *mynew);/*插入记录*/ void save(STUDENT *head);/*保存文件*/ STUDENT *load();/*读文件*/

/*主函数界面*/ void main()

{STUDENT *head,mynew;

head=init();/*链表初始化,使head的值为NULL*/ for(;;)/*循环无限次*/ {switch(menu_select()){

case 1:head=create();break;case 2:print(head);break;case 3:search(head);break;

case 4:head=mydelete(head);break;case 5:head=sort(head);break;

case 6:head=insert(head,&mynew);break;/*&mynew表示返回地址*/ case 7:save(head);break;

—— 3 ——

通信工程C语言强化训练实验报告

case 8:head=load();break;

case 9:exit(0);/*如菜单返回值为9则程序结束*/ } } }

/*初始化函数*/ STUDENT *init(){

return NULL;/*返回空指针*/ }

/*菜单选择函数*/ menu_select(){int n;

printf(“n按任一键进入主菜单......npress any key to enter the menu......”);/*按任一键进入主菜单*/ getch();/*从键盘读取一个字符,但不显示于屏幕*/ system(“cls”);

printf(“********************************************************************************n”);

printf(“tt 欢迎 Welcome ton”);

printf(“nttt 使用学生管理系统1.0nntttttn”);

printf(“*************************************MENU***************************************n”);

printf(“ttt1.输入学生成绩记录 Enter the recordn”);/*输入学生成绩记录*/ printf(“ttt2.显示 Print the recordn”);/*显示*/

printf(“ttt3.寻找 Search record on namen”);/*寻找*/ printf(“ttt4.删除 mydelete a recordn”);/*删除*/

printf(“ttt5.排序 Sort to make mynew a filen”);/*排序*/ printf(“ttt6.插入 Insert record to listn”);/*插入*/ printf(“ttt7.保存 Save the filen”);/*保存*/ printf(“ttt8.读取 Load the filen”);/*读取*/ printf(“ttt9.退出 Quitn”);/*退出*/

printf(“********************************************************************************n”);do{

printf(“nttt输入你的选择Enter your choice(1~9):”);scanf(“%d”,&n);

}while(n<1||n>9);/*如果选择项不在1~9之间则重输*/

return(n);/*返回选择项,主函数根据该数调用相应的函数*/ }

/*输入函数*/

STUDENT *create(){int i,s;

STUDENT *head=NULL,*p;/* 定义函数.此函数带回一个指向链表头的指针*/ system(“cls”);for(;;)

—— 4 ——

通信工程C语言强化训练实验报告

{p=(STUDENT *)malloc(LEN);/*开辟一个新的单元*/ if(!p)/*如果指针p为空*/

{printf(“n输出内存溢出.Out of memory.”);/*输出内存溢出*/ return(head);/*返回头指针,下同*/ }

printf(“输入学号Enter the num(0:list end):”);scanf(“%s”,p->num);

if(p->num[0]=='0')break;/*如果学号首字符为0则结束输入*/ printf(“输入名字Enter the name:”);scanf(“%s”,p->name);

printf(“请输入3门成绩Please enter the %d scoresn”,3);/*提示开始输入成绩*/ s=0;/*计算每个学生的总分,初值为0*/ for(i=0;i<3;i++)/*3门课程循环3次*/ { do{

printf(“成绩score%d:”,i+1);scanf(“%d”,&p->score[i]);

if(p->score[i]<0 || p->score[i]>100)/*确保成绩在0~100之间*/ printf(“数据错误,请重新输入 Data error,please enter again.n”);}while(p->score[i]<0 || p->score[i]>100);s=s+p->score[i];/*累加各门成绩*/ }

p->sum=s;/*将总分保存*/

p->average=(float)s/3;/*先用强制类型转换将s转换成float型,再求平均值*/ p->order=0;/*未排序前此值为0*/

p->next=head;/*将头结点做为新输入结点的后继结点*/ head=p;/*新输入结点为新的头结点*/ }

return(head);}

/* 显示全部记录函数*/ void print(STUDENT *head){int i=0;/* 统计记录条数*/ STUDENT *p;/*移动指针*/ system(“cls”);

p=head;/*初值为头指针*/

printf(“n************************************STUDENT************************************n”);

printf(“-----------------n”);printf(“| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |n”);

printf(“-----------------n”);while(p!=NULL){ i++;

printf(“| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|n”,i, p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);p=p->next;

—— 5 ——

通信工程C语言强化训练实验报告

}

printf(“-----------------n”);

printf(“**************************************END**************************************n”);}

/*查找记录函数*/

void search(STUDENT *head){STUDENT *p;/* 移动指针*/

char s[5];/*存放姓名用的字符数组*/ system(“cls”);

printf(“请输入个姓名来查找.Please enter name for searching.n”);scanf(“%s”,s);

p=head;/*将头指针赋给p*/

while(strcmp(p->name,s)&& p!= NULL)/*当记录的姓名不是要找的,或指针不为空时*/ p=p->next;/*移动指针,指向下一结点*/ if(p!=NULL)/*如果指针不为空*/

{printf(“n*************************************FOUND************************************n”);

printf(“-----------------n”);printf(“| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |n”);

printf(“-----------------n”);printf(“| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|n”,p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf(“-----------------n”);

printf(“***************************************END**************************************n”);} else

printf(“n没有该学生 There is no num %s student on the list.n”,s);/*显示没有该学生*/ }

/*删除记录函数*/

STUDENT *mydelete(STUDENT *head){int n;

STUDENT *p1,*p2;/*p1为查找到要删除的结点指针,p2为其前驱指针*/ char c,s[6];/*s[6]用来存放学号,c用来输入字母*/ system(“cls”);

printf(“请输入要删除的学号 Please enter the mydeleted num: ”);scanf(“%s”,s);

p1=p2=head;/*给p1和p2赋初值头指针*/

while(strcmp(p1->num,s)&& p1!= NULL)/*当记录的学号不是要找的,或指针不为空时*/ {p2=p1;/*将p1指针值赋给p2作为p1的前驱指针*/ p1=p1->next;/*将p1指针指向下一条记录*/ }

if(strcmp(p1->num,s)==0)/*学号找到了*/

{printf(“**************************************FOUND************************************n”);

printf(“-----------------n”);

—— 6 ——

通信工程C语言强化训练实验报告

printf(“| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |n”);

printf(“-----------------n”);printf(“| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|n”,p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order);printf(“-----------------n”);

printf(“***************************************END**************************************n”);

printf(“n是否要删除,输入Y删除,N则退出nAre you sure to mydelete the student Y/N ?”);/*提示是否要删除,输入Y删除,N则退出*/ for(;;)

{scanf(“%c”,&c);

if(c=='n'||c=='N')break;/*如果不删除,则跳出本循环*/ if(c=='y'||c=='Y'){

if(p1==head)/*若p1==head,说明被删结点是首结点*/ head=p1->next;/*把第二个结点地址赋予head*/ else

p2->next=p1->next;/*否则将一下结点地址赋给前一结点地址*/ n=n-1;

printf(“n学号为(Num): %s 学生以被删除(student have been mydeleted.)n”,s);printf(“别忘了保存.Don't forget to save.n”);break;/*删除后就跳出循环*/ } } } else

printf(“n没有这个学生在表上nThere is no num %s student on the list.n”,s);/*找不到该结点*/ return(head);}

/*排序函数*/

STUDENT *sort(STUDENT *head){int i=0;/*保存名次*/

STUDENT *p1,*p2,*t,*temp;/*定义临时指针*/

temp=head->next;/*将原表的头指针所指的下一个结点作头指针*/ head->next=NULL;/*第一个结点为新表的头结点*/ while(temp!=NULL)/*当原表不为空时,进行排序*/ {

t=temp;/*取原表的头结点*/

temp=temp->next;/*原表头结点指针后移*/ p1=head;/*设定移动指针p1,从头指针开始*/

p2=head;/*设定移动指针p2做为p1的前驱,初值为头指针*/

while(t->average

average&&p1!=NULL)/*作成绩平均分比较*/ {

p2=p1;/*待排序点值小,则新表指针后移*/ p1=p1->next;}

if(p1==p2)/*p1==p2,说明待排序点值大,应排在首位*/ {

—— 7 ——

通信工程C语言强化训练实验报告

t->next=p1;/*待排序点的后继为p*/ head=t;/*新头结点为待排序点*/ }

else /*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/ {

t->next=p1;/*t的后继是p1*/ p2->next=t;/*p2的后继是t*/ } }

p1=head;/*已排好序的头指针赋给p1,准备填写名次*/ while(p1!=NULL)/*当p1不为空时,进行下列操作*/ {

i++;/*结点序号*/

p1->order=i;/*将结点序号赋值给名次*/ p1=p1->next;/*指针后移*/ }

printf(“排序成功 Sorting is sucessful.n”);/*排序成功*/ return(head);}

/*插入记录函数*/

STUDENT *insert(STUDENT *head,STUDENT *mynew){STUDENT *p0,*p1,*p2;int n,sum1,i;

p1=head;/*使p1指向第一个结点*/ p0=mynew;/*p0指向要插入的结点*/

printf(“nPlease enter a mynew record.n”);/*提示输入记录信息*/ printf(“输入学号Enter the num:”);scanf(“%s”,mynew->num);

printf(“输入名字Enter the name:”);scanf(“%s”,mynew->name);

printf(“Please enter the %d scores.n”,3);sum1=0;/*保存新记录的总分,初值为0*/ for(i=0;i<3;i++){ do{

printf(“成绩score%d:”,i+1);scanf(“%d”,&mynew->score[i]);

if(mynew->score[i]>100||mynew->score[i]<0)

printf(“数据错误Data error,please enter again.n”);}while(mynew->score[i]>100||mynew->score[i]<0);sum1=sum1+mynew->score[i];/*累加各门成绩*/ }

mynew->sum=sum1;/*将总分存入新记录中*/ mynew->average=(float)sum1/3;mynew->order=0;

if(head==NULL)/*原来的链表是空表*/

{head=p0;p0->next=NULL;} /*使p0指向的结点作为头结点*/

—— 8 ——

通信工程C语言强化训练实验报告

else

{while((p0->average

average)&&(p1->next!=NULL)){p2=p1;/*使p2指向刚才p1指向的结点*/ p1=p1->next;/*p1后移一个结点*/ }

if(p0->average>=p1->average)

{if(head==p1)head=p0;/*插到原来第一个结点之前*/ else p2->next=p0;/*插到p2指向的结点之后*/ p0->next=p1;} else

{p1->next=p0;p0->next=NULL;} /*插到最后的结点之后*/ }

n=n+1;/*结点数加1*/

head=sort(head);/*调用排序的函数,将学生成绩重新排序*/

printf(“n学生Student %s 已被更新have been inserted.n”,mynew->name);printf(“不要忘了保存Don't forget to save the mynew file.n”);return(head);}

/*保存数据到文件函数*/ void save(STUDENT *head)

{FILE *fp;/*定义指向文件的指针*/ STUDENT *p;/* 定义移动指针*/ char outfile[10];

printf(“输出文件例如:c:score Enter outfile name,for example c:scoren”);scanf(“%s”,outfile);

if((fp=fopen(outfile,“w”))==NULL)/*为输出打开一个二进制文件,为只写方式*/ {

printf(“打不开文件Cannot open the filen”);return;/*若打不开则返回菜单*/ }

printf(“n保存中...Saving the file......n”);p=head;/*移动指针从头指针开始*/ while(p!=NULL)/*如p不为空*/ {

fwrite(p,LEN,1,fp);/*写入一条记录*/ p=p->next;/*指针后移*/ }

fclose(fp);/*关闭文件*/

printf(“保存成功....Save the file successfully!n”);}

/* 从文件读数据函数*/ STUDENT *load()

{STUDENT *p1,*p2,*head=NULL;/*定义记录指针变量*/ FILE *fp;/* 定义指向文件的指针*/ char infile[10];

printf(“倒入文件例如:c:score Enter infile name,for example c:scoren”);

—— 9 ——

通信工程C语言强化训练实验报告

scanf(“%s”,infile);

if((fp=fopen(infile,“r”))==NULL)/*打开一个二进制文件,为只读方式*/ {

printf(“打不开文件Can not open the file.n”);return(head);}

printf(“n寻找文件...Loading the file!n”);

p1=(STUDENT *)malloc(LEN);/*开辟一个新单元*/ if(!p1){

printf(“内存溢出!Out of memory!n”);return(head);}

head=p1;/*申请到空间,将其作为头指针*/ while(!feof(fp))/*循环读数据直到文件尾结束*/ {

if(fread(p1,LEN,1,fp)!=1)break;/*如果没读到数据,跳出循环*/ p1->next=(STUDENT *)malloc(LEN);/*为下一个结点开辟空间*/ if(!p1->next){

printf(“Out of memory!n”);return(head);}

p2=p1;/*使p2指向刚才p1指向的结点*/

p1=p1->next;/*指针后移,新读入数据链到当前表尾*/ }

p2->next=NULL;/*最后一个结点的后继指针为空*/ fclose(fp);

printf(“n你成功的从文件中读取了数据!nYou have success to read data from the file!n”);return(head);}

—— 10 ——

通信工程C语言强化训练实验报告

—— 11 ——

通信工程C语言强化训练实验报告

—— 12 ——

通信工程C语言强化训练实验报告

6、强化训练心得体会

首先要感慨一下,这是我编的最长的一个程序,从开始拿到这个程序时候的迷茫、一无所知,到最后能够运行处这个程序,可谓经历了很多,但也感受到了那份成功后的欣然。在进行编程之前,首先复习一下c语言课本,回想起那些基本知识,然后根据题意的具体要求,看需要哪些基本原理,并将整体思路想一遍。

在编写程序的过程中,也犯了许多错误,没有该犯与不该犯,反正都犯了!这也是在提醒我,做事一定要仔细认真,并且一定要有耐心,我们小组成员在一次又一次的修改,一次又一次的运行之后,终于把这个程序运行成功。在这期间,也让我体会到,实践和自己在书上编程序,存在一定的差距,这也就是实践的意义所在,增强我们的动手能力,增强我们在临场的思考能力,和应变能力!

在此期间我们也产生了团队默契,增强了团队合作能力,这一点让我终生受益!同时也让我温故一下c语言知识,让我对他不会感觉陌生,例如:数组与指针的应用。与此同时也让我学会了许多新的知识,可谓受益匪浅。

—— 13 ——

通信工程C语言强化训练实验报告

—— 14 ——

第二篇:C语言课程设计报告

C语言课程设计报告

级:

10电子本1

号:

10303033122

名:

指导老师:

方文森

完成日期:

温州大学城市学院课程设计

目 录

1、课程设计目的和要求.....................................................................................................2

2、课程设计任务内容.........................................................................................................2

3、详细设计说明.................................................................................................................3

3.1分析.........................................................................................................................3 3.2软件设计.................................................................................................................3 3.3软件调试(对编程中的错误进行记录,并给出你的解决办法).....................3

4、软件使用说明.................................................................................................................4

5、课程设计心得与体会.....................................................................................................4 附录1:参考文献................................................................................................................5 附录2:部分程序清单(带有较详细的注释)................................................................5

温州大学城市学院课程设计

C语言课程设计报告

1、课程设计目的和要求

目的:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握(2)掌握C语言编程和程序调试的基本技能(3)利用C语言进行基本的软件设计(4)掌握书写程序设计说明文档的能力(5)提高运用C语言解决实际问题的能力 要求:(1)分析课程设计题目的要求(2)写出详细设计说明

(3)编写程序代码,调试程序使其能正确运行(4)设计完成的软件要便于操作和使用(5)设计完成后提交课程设计报告

2、课程设计任务内容

1)一个班级有4个学生,共学习5门课程(大学英语、高等数学、C语言程序设计、VB程序设计、大学语文)。要求编写程序完成相应功能。2)

输入并保存]5门课程名称;

3)

输入并保存]4个学生的学号及其[个人相关信息]; 4)

输入并保存]每个学生对应的每门课程成绩; 5)求出每门功课的平均分;

6)找出有两门以上功课不及格的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;

7)找出平均成绩在90分以上或者全部课程成绩在85分以上的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;

8)计算每位学生的总分,并按总分进行排名,按由高到低输出他们的学号及总成绩; 9)对前面问题进行优化,即在一维数驵的基础上,考虑采用二维数组、函数及其参数传递的方式来解决相关问题;

10)对前面问题进行优化,在学号的基础上,增加学生的其它个人信息,包括:学号、姓名、年龄、性别,并采用结构体形式加以表示; 11)利用文件实现对输入及分析输出数据的存取操作。

12)参照教材P27页,3-11题引入选择功能,输入功能编号可以实现以上功能(考虑清屏函数,自查)。

温州大学城市学院课程设计

3、详细设计说明

3.1分析

3.2软件设计

开始菜单(功能选择)Key=?Key=1Key=2Key=3Key=4Key=5Key=0Key=99Key=6Key=7Key=8Key=9Key=10写入课程名读取课程名输入学生信息读取学生信息建立了学生信息及课程名称?退出程序读取课程、学生、成绩读取课程成绩输出功课的平均分两门以上功课不及格的学生输出高分的学生总分由高到低排序No保存保存Yes输入课程成绩(提示)必须输入课程名称、学生信息才能建立成绩保存清屏

3.3软件调试(对编程中的错误进行记录,并给出你的解决办法)

取地址。

温州大学城市学院课程设计

4、软件使用说明

1.2.3.4.5.6.7.8.9.10.11.12.[99]读取课程、学生、成绩 [1]输入课程名称.[2]读取课程名称.[3]输入学生信息.[4]读取学生信息.[5]输入课程成绩.[6]读取课程成绩.[7]功课的平均分.[8]两门以上功课不及格的学生 [9]-高分的学生-.[10]学生总分排序.[0]退出应用程序.5、课程设计心得与体会

在大家的共同努力下,忙碌了两个星期,我们顺利完成了对此程序的编译及试运行。在设计程序的过程中,我们了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。

另外平时学习c语言的基础也很关键,因为如果平时学得就不怎么样,那么你面对这么一个比较有难度的程序,可能会望而却步,看懂他人的程序都是个难点,更别说让自己去设计。为了解决此类问题,最好就是多向同学,老师请教,查找资料。

设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。

感谢这次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心。当然团队合作也是非常重要的一个环节,这会使你在学习过程中倍感轻松

总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便、目标程序效率高等等。C语言是在国内外广泛使用的一种计算机语言,相信除了以上优点,还有许多我们还未发现,希望能在以后的学习中有更深入的认

温州大学城市学院课程设计

识。

附录1:参考文献

《C语言程序设计与实践教程》

附录2:部分程序清单(带有较详细的注释)

#include #include

#define N 4 #define M 5 #define Debug 1

typedef struct { char SNo[5];char SName[10];}Student;

void ScoreRead(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

温州大学城市学院课程设计

void ScoreWrite(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

void CoureseRead(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;char ch;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} i=0;j=0;while(1){ ch = fgetc(fp);if(ch==EOF)break;if(ch=='n'){ Cname[i][j]='';i++;j=0;6

温州大学城市学院课程设计

} else { Cname[i][j]=ch;j++;} } #if(Debug==1)for(i=0;i

void CoureseWrite(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} for(i=0;i

void StuInfoWrite(Student S[],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL)7

温州大学城市学院课程设计

{ printf(“Errorn”);exit(0);} else { for(i=0;i

void StuInfoRead(Student S[],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

温州大学城市学院课程设计

Student Stu[N];char Cname[M][20];

while(1){ system(“cls”);printf(“ttt=======学生成绩管理应用程序=======n”);printf(“tttt[99]读取课程、学生、成绩.nn”);printf(“tttt[1]输入课程名称.nn”);printf(“tttt[2]读取课程名称.nn”);printf(“tttt[3]输入学生信息.nn”);printf(“tttt[4]读取学生信息.nn”);printf(“tttt[5]输入课程成绩.nn”);printf(“tttt[6]读取课程成绩.nn”);printf(“tttt[7]功课的平均分.nn”);printf(“tttt[8]两门以上功课不及格的学生.nn”);printf(“tttt[9]-高分的学生-.nn”);printf(“tttt[10]学生总分排序.nn”);printf(“tttt[0]t退出应用程序.nn”);printf(“请选择功能:”);scanf(“%d”,&Key);getchar();printf(“n”);if(Key==99){ CoureseRead(Cname,“D:cname.txt”,“r”);StuInfoRead(Stu,“D:stuinfo.db”,“rb”);ScoreRead(CJ,“d:score.db”,“rb”);} else if(Key==1){ for(i=0;i

//输入学生信息 //读取课程名称

//输入课程名称

温州大学城市学院课程设计

{ scanf(“%stt%s”,Stu[i].SNo,Stu[i].SName);} getchar();StuInfoWrite(Stu,“D:stuinfo.db”,“wb”);} else if(Key==4){ StuInfoRead(Stu,“D:stuinfo.db”,“rb”);} else if(Key==5){

char Qu;scanf(“%c”,&Qu);getchar();if(Qu=='Y' || Qu=='y')printf(“您已经建立了学生信息及课程名称了吗?(Y/N)n”);

//输入课程成绩 //读取学生信息

{ CoureseRead(Cname,“D:cname.txt”,“r”);StuInfoRead(Stu,“D:stuinfo.db”,“rb”);for(i=0;i

else { printf(“请输入Y/N!n”);

//读取课程成绩 } }//else if(Key==5)else if(Key==6){ ScoreRead(CJ,“d:score.db”,“rb”);10

温州大学城市学院课程设计

} else if(Key==7){ ScoreRead(CJ,“d:score.db”,“rb”);CoureseRead(Cname,“D:cname.txt”,“r”);for(j=0;j

for(i=0;i2){ s=s/M;printf(“%st %sn平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k

}

}

} } 11

温州大学城市学院课程设计

} else if(Key==9){ int x,k;float c,s;printf(“平均成绩在90分以上或全部课程成绩在85分以上n”);for(i=0;i=90)){ s=s/M;printf(“%st%st平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k=85){ x++;if(x==M){ s=s/M;printf(“%st%st平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k

}

} } else if(Key==10){ float x[i];12

温州大学城市学院课程设计

char XH[N][3];char temp[3];int num;int imax,k;float t;for(i=0;i=1;i--){ for(k=0;k

else if(Key==0){ break;} getchar();} } 13

第三篇:C语言课程设计报告

C语言课程设计报告

Experiment Designing reporter

课程名称 : C语言课程设计

英文名称 : C Program Experiment Designing

专 业 :

学 号 :

姓 名 :

指导教师 :

日 期: 2011年7月18日 至2011年7月22日

《C语言课程设计》报告

C Program Experiment Designing

课程编号:01200308005

学时: 40学时 适用专业:软件工程专业 授课单位:软件学院

一、C语言课程设计目的及要求

目的:

根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

要求:

1. 熟悉Turbo C 的编程环境、主要菜单功能。

2. 通过上机验证运算符、表达式、运算规则、函数使用。3. 熟练使用C语言的典型语句编写简单程序。4. 调试典型例题或习题。5. 提高上机编程能力

二、实验类型

设计类型

三、实验学时

40学时

四、实验设备

微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套

五、C语言课程参考教材:

1.李瑞 C语言程序基础(第二版)清华大学出版社 2.梁旭 C语言课程设计.电子工业出版社

课程设计(报告)任务书

任务及要求:

1.设计(研究)内容和要求

研究内容:C语言课程设计题目相关内容 任务和要求:

(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2).对指导教师下达的题目进行系统分析。(3).根据分析结果完成系统设计。

(4).编程:在计算机上实现题目的代码实现。(5).完成对该系统的测试和调试。(6).提交课程设计报告。(7).指标: 要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据

了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献

[1] 黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006 [2] 马靖善等.C语言程序设计.清华大学出版社,2005 [3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002

目录

C语言课程设计报告................................................................................错误!未定义书签。

1. 输出杨辉三角.............................................................................................................1 1.1 系统分析..............................................................................................................1 1.2 设计说明..............................................................................................................1 1.3 程序运行截图......................................................................................................2 1.4 源程序代码..........................................................................................................2 2 汉诺塔求解方法.............................................................................................................3 2.1 系统分析..............................................................................................................3 2.2 设计说明..............................................................................................................3 2.3 程序运行截图......................................................................................................4 2.4 源程序代码..........................................................................................................4 3 输出200以内的素数.....................................................................................................5 3.1功能说明...............................................................................................................5 3.2 设计说明..............................................................................................................5 3.3 程序运行截图......................................................................................................5 3.4 源程序代码..........................................................................................................6 4 进制转换计算器.............................................................................................................6 4.1功能说明...............................................................................................................6 4.2 设计说明..............................................................................................................6 4.3程序运行截图.......................................................................................................7 4.4 源程序代码..........................................................................................................7 5 一元稀疏多项式.............................................................................................................8 5.1 功能说明..............................................................................................................8 5.2 设计说明..............................................................................................................8 5.3 程序运行截图....................................................................................................10 5.4 源程序代码........................................................................................................11

1. 输出杨辉三角

1.1 系统分析

以等腰直角三角形输出杨辉三角

1.2 设计说明

1、包含头文件

#include

#include

其中,头文件为使用clrscr()。

2、子函数

函数名:int num(i,j)

函数功能:以递归的方式进行计算,用函数代替二维数组

函数参数:int i;int j;

含义:相当于二维数组的a[i][j] 函数流程

Step1:输出最外行,即三角形两直角边的结果都为 1 ;

Step2:讨论其余情况,相当于数组中的

a[i][j] = a[i-1][j-1] + a[i-1][j]。

3、main()函数

1为保证结果完整输出,先进行清屏; ○2输入要打印的行数,由于一行只能显示80个字符,建议不要超过13行; ○3用循环调用函数int num(int i , int j)○

其中循环为三重循环:i 循环控制行打印

j 循环控制列打印

k 循环控制空格打印

每执行一次i 循环输出一个换行符,直角三角形定点放在第36个字符的位置上。

每个数字占6个字符的格。

1.3 程序运行截图

1.4 源程序代码

#include #include

int num(i,j){

int i,j;

if(I == j ||j == 0)return(1);

else return(num(i-1 , j-1)+num(i-1 , j));}

int main(void){

int n,k,i,j;

clrscr();

puts(“input row n:”);

scanf(“%d”,&n);

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

{

{

for(k = 0;k < 36-3*i;k++)

putchar(' ');

}

{

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

printf(“%6d”,num(i , j));

}

puts(“");

}

getch();

return 0; } 汉诺塔求解方法

2.1 系统分析

汉诺塔求解方法

2.2 设计说明

1、包含头文件:

#include #include

其中,#include 为了应用函数toupper

2、子函数

函数名:void move(int n , char a , char b)

函数功能:打印移动的主子编号

函数参数:int n , char a , char b;

含义:n为移动的序数,a为源柱号,b目的柱号 函数流程

Step1:输出盘子移动情况;

Step2:打印换行。

函数名:void hanoi(int n,char a,char b,char c)

函数功能:以游戏规则求解移动盘子的方法

函数参数:int n,char a,char b,char c;

含义:n移动的序数,a为源柱号,b为目的柱号,c为中间柱号

函数流程

Step1:递归调用函数 hanoi(n-1,a,c,b);

Step2:调用函数move(n-1,a,b);

Step3:继续递归调用函数hanoi(n-1,c,b,a);

3、主函数main()1为了使程序可以重复运行,定义了变量ch,当ch == N 时,退出游戏; ○2使用while()循环使游戏重复运行; ○3输入盘子的数目以调整游戏的难度; ○3调用函数hanoi()○

2.3 程序运行截图

2.4 源程序代码

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

//应用函数toupper void move(int n,char a,char b)

//n为移动的序数,a为源柱号,b目的柱号*/ {

printf(”Disc%d move from %c to %c;“,(n+1),a,b);

printf(”n“);}

void hanoi(int n,char a,char b,char c){

//n移动的序数,a为源柱号,b为目的柱号,c为中间柱号

if(n>0)

{

hanoi(n-1,a,c,b);

//递归调用

move(n-1,a,b);

hanoi(n-1,c,b,a);

} } main(){

int n;

char ch ='Y';

printf(”Now let us play the game of hanoitowern“);

while(ch == 'Y')

//通用性设计

{

printf(”n Input the number of disc[2-15]:“);

scanf(”%d“,&n);getchar();

printf(”n The orders of moving %d discs from A to B are:n“,n);

hanoi(n,'A','B','C');

//调用函数

printf(”n Continue(Y/N):“);

ch=getchar();

getchar();

ch=toupper(ch);}

return 0;} 3 输出200以内的素数

3.1功能说明

输出200以内的素数

3.2 设计说明

1、宏定义

#define M 200

//范围,表示输出200以内的素数 #define N((M+1)/2)

//奇数的个数

处理流程:

Step1:第一步筛选掉所有的偶数,将剩余的奇数存放在a[N]中; Step2:第二部筛选掉多有可以被整除的数 Step3:将得到的素数10个一行打印。

3.3 程序运行截图

3.4 源程序代码

#include ”stdio.h“ #define M 200

//范围

#define N((M+1)/2)

//奇数的个数 main(){

int i,j,a[N];

a[0]=2;

for(i=1;i

//初始数组实现第一步筛选

a[i]=2*i+1;

for(i=1;i<(N-1);i++)

//第二步筛选

if(a[i]!=0)

for(j=i+1;j

if((a[j]%a[i]==0))

//倍数时置零筛去

a[j]=0;

printf(”n The primer are[2-%d]:n“,M);

for(i=0,j=0;i

//显示得到素数

{

if(a[i]!=0)

{

printf(”%5d“,a[i]);

if((++j)%10==0)

//十个数换行

printf(”n“);

} }

return 0;} 进制转换计算器

4.1功能说明

进行进制转换。

4.2 设计说明

1、处理流程:

Step1:输入原始数值xa,原始权a,已经希望转换的进制b;Step2:逐位取值,将原始数值转换成10进制 Step3:逐位取值,将原始数值转换成b 进制

4.3程序运行截图

4.4 源程序代码

void main()#include ”stdio.h“ main()

{

int a=0,/*原始进制*/ b=8,/*转换进制,默认为八*/

k=1;

/*位权*/

long xa=0,/*原始数值*/

xb=0,/*转换数值*/

x1=0,x2=0;

/*十进制数值*/

printf(”n Input the number and weight a->b:“);

scanf(”%ld%d%d“,&xa,&a,&b);

x1=xa;

while(x1!=0)

/*转换为十进制数*/

{ x2+=(x1%10)*k;

/*逐位取值*/ x1/=10;k*=a;

}

k=1;

x1=x2;

while(x1!=0)

/*转换为b进制数*/

{ xb+=(x1%b)*k;x1/=b;k*=10;

}

printf(”n %ld(%d)=%ld(%d)=%ld(%d)“,xa,a,x2,10,xb,b);

return;} 一元稀疏多项式

5.1 功能说明

求一元稀疏多项式的运算:

1、求两多项式加法;

2、求两多项式减法;

3、求两多项式乘法;

4、求两多项式导数;

5、求两多项式在x=m处的值。

5.2 设计说明

1、链表结点的定义:

typedef struct polyn {

float coef;

//多项式系数

int expn;

//多项式指数

struct polyn * prior,* next;} polyn, *linkpolyn;

2、子函数,多项式的基本运算。函数名:linkpolyn CREATEPOLYN()函数功能:创建多项式链表,在输入的时候进行升序排列 返回值:return head,即建立的多项式头结点 参数:linkpolyn head,含义:链表头结点 处理流程:

Step1:输入第一个结点,且第一个结点自然有序;

Step2:循环输入其余结点,当输入0 0是表示输入结束;

Step3:输入过程中进行升幂排序,用二分法,找到新结点插入点;

Step4:插入新结点;继续循环,直到输入0 0,循环结束,链表建立成功。Step5:返回建立链表头结点,函数结束。

函数名:linkpolyn DERIVATIONPOLYN(linkpolyn L)函数功能:多项式求导

返回值:return(head),即求导多项式的链表头结点

参数:linkpolyn L,含义:把建立好的链表A和B传递给L 处理流程:

Step1:分别用指针指向L的头结点和求导多项式的头结点head;

Step2:用循环逐个对L链表中的结点求导,一次存放在求导多项式中的新结点中; Step3:循环中考虑,当L链表中的结点仅存放一个常数,则跳过该结点,继续遍历下一结点;

Step4:当循环结束,即L中的各项以被求导,返回求导多项式头结点head。

函数名:linkpolyn INITPOLYN()函数功能:链表初始化

返回值:return(head),即求导多项式生成的链表头结点 参数:无参数 处理流程:

Step1:生成一个新的空间作为新结点;

Step2:将新节点的coef域赋0,expn域赋-1,以区分其他节点; Step3:将头结点的前去指针和后即指针置空,并返回头结点。

函数名:void PRINTLIST(linkpolyn head)函数功能:以类数学表达式的形式打印 返回值:无返回值

参数:linkpolyn head,含义:处理过的链表头结点 处理流程:

Step1:讨论是否链表为空,若为空,则输出0;

Step2:若链表不为空,则输出第一个值,第一个值不用输出符号; Step3:用循环依次输出其余各项,附加符号输出;

函数名:linkpolyn ADDPOLYN(linkpolyn A , linkpolyn B)函数功能:加法运算

返回值:return ptr,即和多项式的头结点

参数:linkpolyn A , linkpolyn B,含义:创建的链表A和B 处理流程:

Step1:分别以两个指针pa和pb遍历链表A和B;

Step2:当A和B两链表都为遍历完毕时,进行加法运算,分配新的空间存放和多项式,并用二分法进行升幂排序; Step3:当A遍历完毕而B未遍历完毕,将B其余各项拷贝到

和多项式链表中;

Step4:当B遍历完毕而A未遍历完毕,将A其余各项拷贝到

和多项式链表中;

函数名:linkpolyn SUBTRACTPOLYN(linkpolyn A , linkpolyn B)函数功能:计算A-B的值

返回值:return ptr,即差多项式的头结点

参数:linkpolyn A , linkpolyn B,含义:创建的链表A和B 处理流程:

Step1:分别以两个指针pa和pb遍历链表A和B;

Step2:当A和B两链表都为遍历完毕时,进行减法运算,分配新的空间存放和多项式,并用二分法进行升幂排序;

Step3:当A遍历完毕而B未遍历完毕,将B其余各项拷贝到

和多项式链表中;

Step4:当B遍历完毕而A未遍历完毕,将A其余各项拷贝到

差多项式链表中; Step5:返回多项式头结点

函数名:float WORK(float x,int e)函数功能:求x的幂

返回值:return t,即计算幂结果

参数:float x,int e,含义:x为输入的x的值,e为x的指数 处理流程:

Step1:分别讨论正指数与负指数的的情况; Step2:若e>0,则累乘e次x; Step3:若e<0,则累除e次x;; Step4:将所求结果返回;

3、主函数main()Step1:依次调用函数进行运算操作; Step2:调用函数创建链表; Step3:调用函数进行运算;

5.3 程序运行截图

5.4 源程序代码

#include ”stdio.h“ #include #include ”math.h“ #define FZ 1e-6

typedef struct polyn { float coef;//多项式系数 int expn;//多项式指数 struct polyn * prior,* next;} polyn, *linkpolyn;

void DESTROYPOLYN(linkpolyn head){ //销毁链表 linkpolyn s,p;p=head;

while(p->next!= NULL){ s = p;

p = p->next;

free(s);} } //DESTROYPOLYN

linkpolyn INITPOLYN(){ //链表初始化

struct polyn * head;head=(linkpolyn)malloc(sizeof(polyn));head->coef=0.0;//假设头结点系数为0 head->expn=-1;//假设头结点指数为-1 head->next=NULL;head->prior=NULL;return head;} //INITPOLYN

void INSERTPOLYN(linkpolyn p,linkpolyn s){ //将结点s插入到p之后

if(NULL!= p->next){

s->next = p->next;

s->next->prior = s;} s->prior = p;p->next = s;

} //INSERPOLYN

linkpolyn CREATEPOLYN(){ //创建多项式链表,在输入的时候进行升序排列 linkpolyn head,s,p,m,r;

int num = 1;//计数器

head = INITPOLYN();//初始化链表 head r = head;//设置为指针

s=(linkpolyn)malloc(sizeof(polyn));

/******************************************/ printf(”请输入第%d项系数和指数:“,num);/**输入第一个结点,并且第一个结点自然有序**/ scanf(”%f%d“,&s->coef,&s->expn);/******************************************/ r->next = s;s->prior = r;r = r->next;//r指向尾结点

r->next = NULL;p = r;//p为s的插入点前一个结点

m = r;//m为拍完结点中间的节点,二分法排序

while(++num)//while # 当将 s->coef 与 s->expn 都赋值为0的时候,认为输入结束

{ s =(linkpolyn)malloc(sizeof(polyn));printf(”请输入第%d项系数和指数:“,num);scanf(”%f%d“,&s->coef,&s->expn);

if((fabs(s->coef)<= FZ)&&(s->expn == 0))//if @

{ free(s);

break;

} //else @ else //else @

{ if(s->expn <= p->expn)//if #

{ while(p->prior!= NULL && p->expn > s->expn)

p = p->prior;//p向前遍历链表,找到插入点

if(s->expn == p->expn)

{

p->coef += s->coef;

free(s);

r=r;

}

else

{

INSERTPOLYN(p,s);//在p后面插入结点s

m = m->prior;

p = m;

}

} // if #

else //else #

{

while(p->next!= NULL && p->next->expn < s->expn)

p = p->next;//p向后遍历链表,找到插入点

if(s->expn == p->expn)

{

p->coef += s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);

if(s->expn > r->expn)

{ r = r->next;

r->next = NULL;

}

}

} //else #

} //else @ } //while # return head;} //CREATEPOLYN

void PRINTPOLYN(linkpolyn head){ //以类数学表达式的形式打印 linkpolyn p;

p = head->next;if(p == NULL)//链表为空

puts(”0“);else //else @ { //链表不为空,输出第一个结点的值

if(p->expn == 0)printf(”%f“,p->coef);//指数为0时不输出x else

{ if(p->coef==1)printf(”x^%d“,p->expn);/**************************/ else if(p->coef ==-1)printf(”-x^%d“,p->expn);/**第一项前不需要输出符号**/ else printf(”%gx^%d“,p->coef,p->expn);/**************************/

} p = p->next;while(p!= NULL)

{ //依次输出以后各节点 if(p->coef>0)

{ //当系数为正时,讨论输出符号问题

if(p->expn == 0)printf(”+%g“,p->coef);else if(p->coef == 1)printf(”+x^%d“,p->expn);else printf(”+%gx^%d“,p->coef,p->expn);

} else

{ //当系数为负时,讨论输出符号问题

if(p->expn == 0)printf(”%g“,p->coef);else if(p->coef ==-1)printf(”-x^%d“,p->expn);else printf(”%gx^%d“,p->coef,p->expn);

} p = p->next;

} } //else @ } //PRINTPOLYN

linkpolyn ADDPOLYN(linkpolyn A , linkpolyn B){ //加法

linkpolyn qa,qb,q,ptr;float x;qa = A->next;qb = B->next;q = INITPOLYN();//和多项式头结点初始化

ptr = q;//ptr指向和多项式头结点

while((qa!= NULL)&&(qb!= NULL)){ //升幂求和

if(qa->expn == qb->expn)//指数相同的项

{ x = qa->coef + qb->coef;//系数相加

if(x!= 0)//求得系数非0

{ q->next =(linkpolyn)malloc(sizeof(polyn));//

q = q->next;

q->coef = x;

q->expn = qa->expn;

}

生成和多项式的节结点

qa = qa->next;

qb = qb->next;

}

else //指数不同

{

q->next =(linkpolyn)malloc(sizeof(polyn));

q = q->next;

if(qa->expn > qb->expn)//A多项式当前指数大于B

{ q->coef = qb->coef;//B多项式当前的值复制到和多项式中

q->expn = qb->expn;

qb = qb->next;

}

else //B多项式当前指数大于A

{ q->coef = qa->coef;//A多项式当前的值复制到和多项式中

q->expn = qa->expn;

qa = qa->next;

}

} } //A或B中有一个多项式已经处理完毕

while(qa!= NULL)//A未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qa->coef;

q->expn = qa->expn;

qa = qa->next;} while(qb!= NULL)//B未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qb->coef;

q->expn = qb->expn;

qb = qb->next;} q->next = NULL;//令和多项式最末的节点指向头结点

return ptr;//返回多项式头指针 } //LINKPOLYN

linkpolyn SUBTRACTPOLYN(linkpolyn A , linkpolyn B){ //减法

linkpolyn qa,qb,q,ptr;float x;qa = A->next;qb = B->next;q = INITPOLYN();//和多项式头结点初始化

ptr = q;//ptr指向和多项式头结点

while((qa!= NULL)&&(qb!= NULL)){ //升幂求差

if(qa->expn == qb->expn)//指数相同的项

{ x = qa->coef-qb->coef;//多项式A的系数减去B的系数

if(x!= 0)//求得系数非0

{ q->next =(linkpolyn)malloc(sizeof(polyn));//生成和多项式的节结点

q = q->next;

q->coef = x;

q->expn = qa->expn;

}

qa = qa->next;

qb = qb->next;

}

else //指数不同

{

q->next =(linkpolyn)malloc(sizeof(polyn));

q=q->next;

if(qa->expn > qb->expn)//A多项式当前指数大于B

{ q->coef =-(qb->coef);//B多项式当前的值复制到和多项式中

q->expn = qb->expn;

qb = qb->next;

}

else //B多项式当前指数大于A

{ q->coef = qa->coef;//A多项式当前的值复制到和多项式中

q->expn = qa->expn;

qa = qa->next;

}

} } //A或B中有一个多项式已经处理完毕

while(qa!= NULL)//A未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qa->coef;

q->expn = qa->expn;

qa = qa->next;} while(qb!= NULL)//B未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef =-(qb->coef);

q->expn = qb->expn;

qb = qb->next;} q->next = NULL;//令和多项式最末的节点指向头结点

return ptr;//返回多项式头指针 } //SUBTRACTPOLYN

linkpolyn MULTIPLYPOLYN(linkpolyn A,linkpolyn B){ //乘法

linkpolyn pa,pb,s,head,m,r,p;pa = A->next;pb = B->next;head = INITPOLYN();r = head;

s=(linkpolyn)malloc(sizeof(polyn));s->coef = pa->coef * pb->coef;//计算第一个结点,并且第一个结点自然有序

s->expn = pa->expn + pb->expn;r->next = s;s->prior = r;r =r->next;r->next = NULL;p=r;//p为插入点前一结点

m=r;//m指向排完结点中间节点

pb=pb->next;// 第一个乘积处理完毕

for(pa= A->next;pa!= NULL;pa=pa->next)//for pa 处理其余乘积

{ //用A的第一个结点分别与B的其余结点相乘

if(pa == A->next)

pb = B->next->next;

else

pb = B->next;

for(;pb!= NULL;pb = pb->next)//for pb

{

s =(linkpolyn)malloc(sizeof(polyn));s->coef = pa->coef * pb->coef;

s->expn = pa->expn + pb->expn;if(s->expn <= p->expn)//if #

{ while(p->prior!=NULL && p->expn > s->expn)p=p->prior;//p向前遍历链表,找到插入点

if(s->expn==p->expn)

{

p->coef+=s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);//在p后面插入结点s

m=m->prior;

p=m;

}

} // if #

else //else #

{ while(p->next!=NULL && p->next->expn < s->expn)

p=p->next;//p向前遍历链表,找到插入点

if(s->expn==p->expn)

{

p->coef+=s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);

if(s->expn > r->expn)

{ r=r->next;

r->next=NULL;

}

}

} //else #

} //for pb } //for pa return head;} //MULTIPLYPOLYN

linkpolyn DERIVATIONPOLYN(linkpolyn L){ //多项式求导

linkpolyn head,p,s,r;head = INITPOLYN();//head为求导多项式头结点 r = head;p = L->next;while(p!= NULL){ if(p->expn == 0)

{ p = p->next;continue;} s =(linkpolyn)malloc(sizeof(polyn));s->coef = p->coef * p->expn;s->expn = p->expn-1;s->prior = r;

r->next = s;

r = r->next;

r->next = NULL;

p = p->next;} return(head);} //DERIVATIONPOLYN

float WORK(float x,int e){ //求x的幂 float t = 1;if(e>0){ while(e)

{ t *= x;e--;} } if(e<0){ while(e)

{ t *= 1/x;e++;} }

return(t);} //WORK

float CALCULATEPOLYN(linkpolyn head,float x){ //计算多项式在x处的值 float t = 0;linkpolyn p;p = head->next;while(p){ t = t +((p->coef)*(WORK(x,p->expn)));p = p->next;} return(t);} //CALCULATEPOLYN

int main(void){ linkpolyn A, B,addp,decp,mulp,derp1,derp2;int i;float x;start: system(”cls“);printf(”一元稀疏多项式计算nn“);printf(”1.建立多项式n“);printf(”2.多项式加法n“);printf(”3.多项式减法n“);printf(”4.多项式乘法n“);printf(”5.计算多项式在x处的值n“);printf(”6.对多项式求导n“);printf(”7.清空数据n“);printf(”8.关闭计算器n“);printf(”请输入选项(1~7):“);scanf(”%d“,&i);switch(i){ case(1): system(”cls“);printf(”建立多项式nn“);printf(”建立多项式A,当输入0 0 时表示出入完毕n“);A = CREATEPOLYN();printf(”建立多项式成功n“);printf(”建立多项式B,当输入0 0 时表示出入完毕n“);B = CREATEPOLYN();printf(”建立多项式成功n“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);

printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(2): system(”cls“);printf(”多项式加法nn“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);addp = ADDPOLYN(A,B);printf(”多项式A+B:“);PRINTPOLYN(addp);printf(”n“);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(3): system(”cls“);printf(”多项式减法nn“);printf(”多项式B:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);decp = SUBTRACTPOLYN(A,B);printf(”多项式A-B:“);PRINTPOLYN(decp);printf(”n“);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(4): system(”cls“);printf(”多项式乘法nn“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);mulp = MULTIPLYPOLYN(A,B);printf(”多项式AB:“);PRINTPOLYN(mulp);printf(”n“);printf(”nn输入回车返回上一级“);

getchar();getchar();goto start;case(5): system(”cls“);printf(”计算多项式在x处的值n“);printf(”请输入x的值:“);scanf(”%f“,&x);printf(”n多项式A:“);PRINTPOLYN(A);printf(”n值为:%f“,CALCULATEPOLYN(A,x));printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n值为:%f“,CALCULATEPOLYN(B,x));printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(6): system(”cls“);printf(”多项式求导n“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);derp1 = DERIVATIONPOLYN(A);printf(”求导后A':“);PRINTPOLYN(derp1);printf(”n“);derp2 = DERIVATIONPOLYN(B);puts(”求导后B':“);PRINTPOLYN(derp2);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(7): system(”cls“);DESTROYPOLYN(A);DESTROYPOLYN(B);DESTROYPOLYN(addp);DESTROYPOLYN(decp);DESTROYPOLYN(mulp);DESTROYPOLYN(derp1);DESTROYPOLYN(derp2);printf(”已清空所有数据n“);printf(”nn输入回车返回上一级“);getchar();getchar();

goto start;case(8): printf(”退出");} return(0);}

第四篇:C语言课程设计报告(参考)

C语言课程设计报告

专 业:网络工程 学 号:11102101 姓 名:步乾豪 提交日期:2012-6-21

C语言课程设计报告

【设计目的】 1.教学目的

本课程设计是学生学习完《C语言程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用C语言进行程序设计的方法,加深对C语言特点和使用C语言进行程序设计开发过程的理解,加强动手能力。其主要目的是:

(1)进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;

(2)针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

(3)掌握C语言的编程技巧和上机调试程序的方法。(4)掌握程序设计的常用算法。2.教学要求

(1)要求从所给题目中任选若干个,每个学生必须独立完成课程设计,不能互相抄袭。(2)设计完成后,对所完成的工作进行答辩。(3)要求写出一份详细的课程设计报告。

(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。……………………………………..【设计内容】

学生信息管理系统 程序说明:

本程序属于非数值计算型算法设计,学生需要设计出学生管理系统所需要的基本功能,并设计简单的界面(无需图形化)。本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组(链表)的相关操作,包括数组(链表)的输入、输出、查找、插入、删除等操作,需要对数组(链表)有比较深入的掌握。

设计要求:

(1)通过提示菜单选择可以进行的操作。

(2)将学生的信息存入文件中,并命名为StudentInfo.txt。(3)在本系统中可以进行管理系统包含的基本操作,其中包括

a)查看所有学生的信息

b)输入一个学生的学号,从当前学生中进行查找,如果找到则显示该学生的相关信息,如果没有找到则给出提示信息

c)添加一个学生的基本信息,通过输入学号,首先查找是否存在该学号的学生,如果存在则提示重新输入,否则将该学生按照顺序插入到相应位置

d)删除一个学生的基本信息,通过输入学号,首先查找是否存在该学号的学生,如果存在则将该学生删除,否则给出提示信息,提示该学生不存在

(4)学生基本信息包括学号、姓名、性别和专业这些简单信息

C语言课程设计报告

(5)学生信息文件中每一行存放一个学生的信息 ………………………………….【实验环境】 1.硬件环境

开发硬件:Thinkpad E520计算机

因特尔酷睿I5处理器,8GB运存,1GB独立显卡,500G硬盘存储,2.软件环境

开发环境:Windows 7旗舰版操作系统

开发软件:Microsoft Visual 6.0 C++软件

【设计中使用函数说明】

定义并使用的文件: void scanproduct()

【测试结果】

1)创建链表、插入新信息、删除信息、显示信息、修改信息。

2)测试数据

【设计总结】

一.对该设计题目有何更完善的方案

1、对自己完成程序进行自我评价

完成了课程设计的基本要求,同时在此基础上进行了一些创新,使用了多文件,使程序看起来更清晰更有条理。但由于能力有限,以及对C++的认识不深,其中还有不够完善合理的地方。

2、对课题提出更完善的方案

增加按照成绩对链表进行排序的功能,使学生信息能够按照成绩的高低进行显示,能够更清晰地显示学生的学习情况。二.收获及心得体会

1、通过本次课程设计,自己在哪些方面的能力有所提高

加深了对利用C++语言进行程序设计的理解,提高了对函数的运用能力,提高了软件系统分析能力和使用多文件、归纳总结的能力。

2、收获和心得体会

通过自己对单项链表的学习,熟悉了链表的建立、插入、删除等操作方法。通过这次课程设计使我明白了自学的重要性,有了一些自学的学习方法和技巧,并且要积极的与其他同学共同讨论,在讨论中才能找到自己认识的不足,改正自己的错误。【参考文献】 书籍:

1.《C语言程序设计第四版(谭浩强)》 2.《C语言程序设计课程上机指导》 3.《C语言程序设计第三版》

C语言课程设计报告

网站推荐:

http://(TC所有函数功能及使用查询)http://www.xiexiebang.com/(编程爱好者:里面有各种编程资料)

【源程序清单】 系统设计与分析

2.1.1第一模块界面及实现代码 其对应的函数如下: int main(){

int i;wenbenload();do { system(“cls”);printf(“nnnnnn”);printf(“***************************欢迎使用商品订购系统*******************************n”);printf(“ 作者: 网络11102101 步乾豪n”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━┓n”);printf(“ ┃ 1.浏览商品信息 ┃n”);printf(“ ┃ 2.订购商品 ┃n”);printf(“ ┃ 3.订单查询 ┃n”);printf(“ ┃ 4.搜索商品 ┃n”);printf(“ ┃ 5.管理菜单 ┃n”);printf(“ ┃ 0.退出系统 ┃n”);printf(“ ┗━━━━━━━━━━━━━━━━━━━┛n”);printf(“********************************************************************************n”);

printf(“nntt请输入你的操作(0~5): ”);

scanf(“%d”,&i);switch(i){ case 1: system(“cls”);scanproduct();3

C语言课程设计报告

n“);

break;case 2:

system(”cls“);dinggou();break;

case 3: system(”cls“);

lookdinggou();break;searchproduct();break;case 4: case 5: secondmain();break;

case 0: //退出系统的界面

system(”cls“);printf(”nnnnnnnn“);printf(”nnttt欢迎使用本系统nnnnnttt欢迎再次使用

exit(0);//exit用于随时结束程序

}while(1);return 0;

} } 其中的wenbenload()用于从文本中导入商品信息

2.1.2 第二模块的界面及实现代码

如果选择的操作是主界面的1时,而产品文件为建立时会显示下图:

图2.3第二模块界面图

该程序的实现是通过以下代码实现的: void scanproduct(){

int i;system(“cls”);printf(“ttttt商品信息列表n”);for(i = 0;i < inumber;i++)4

C语言课程设计报告

} {

} printf(“nnnnnnttt”);printf(“返回主菜单n”);printf(“ttt”);system(“pause”);return;printf(“名称 : %sn”,a[i].name);printf(“货号 : %dn”,a[i].number);printf(“厂家 : %sn”,a[i].vender);printf(“产地 : %sn”,a[i].filed);printf(“存量 : %dn”,a[i].stock);printf(“单价 : %.2lfnnn”,a[i].unvalent);2.1.3 第三模块的实现及代码 该程序实现代码如下: void dinggou(){ char ch;int i, j, t, c = 1;int n = 1;int m = 0;

do {

switch(n){ case 1: system(“cls”);

printf(“tttt商品信息列表n”);//显示商品的名称、货号信息,以便于订购 printf(“名称t 货号t 库存n”);for(i = 0;i < inumber;i++){

printf(“%st %dt %dnnn”,a[i].name,a[i].number,a[i].stock);

C语言课程设计报告

} printf(“nnn”);printf(“tttt商品订单n”);printf(“nttt请输入你的第%d个订单信息:n”,m + 1);

printf(“nttt货号:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].bgname);

//检测是否含有此商品

j = 1;

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

{

if(a[i].number == b[ibuy].bgname)

{

j = 0;

t = i;

}

}

//若有商品继续购买项目

if(j == 0)

{

printf(“nttt订购量:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].bmany);

if(a[t].stock >= b[ibuy].bmany){

a[t].stock = a[t].stock-b[ibuy].bmany;//买后商品的库存计算

printf(“nttt日期时间:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].btime);

printf(“nttt客户名:”);

fflush(stdin);

gets(b[ibuy].bname);

printf(“nttt客户地址:”);

fflush(stdin);

gets(b[ibuy].baddress);

printf(“nttt客户号:”);

b[ibuy].bnumber = bgnumber;

printf(“%dn”,b[ibuy].bnumber);

bgnumber++;

ibuy++;

m++;6

顾客购C语言课程设计报告

printf(“nnntttt”);

system(“pause”);} else { printf(“nnttt订购数目超出库存n”);

printf(“ttt”);

system(“pause”);

} } //若没有商品的提示及操作

else {

printf(“nnttt查无此货n”);

printf(“ttt”);

system(“pause”);}

case 2: printf(“是否继续输入订购?(Y/N)”);fflush(stdin);scanf(“%c”,&ch);if(ch == 'N' || ch == 'n'){

c = 0;

break;} else if(ch == 'Y' || ch == 'y'){

c = 0;

n = 1;

break;} else if(ch!= 'n' || ch!= 'N' || ch!= 'Y' || ch!= 'y'){

n = 0;

c = 1;

break;} case 0:

C语言课程设计报告

} if(c == 1){ } n = 2;

}while(ch!= 'n' && ch!= 'N');system(“cls”);

return;} 2.1.4 第四模块的实现及代码 该程序实现代码如下: void lookdinggou(){ int i;system(“cls”);printf(“ttttt订单列表n”);for(i = 0;i < ibuy;i++){

printf(“货号 : %dn”,b[i].bgname);printf(“订购量 : %dn”,b[i].bmany);printf(“日期时间 : %dn”,b[i].btime);printf(“客户名 : %sn”,b[i].bname);printf(“客户地址 : %sn”,b[i].baddress);printf(“客户号 : %dnnn”,b[i].bnumber);

} printf(“nnnnnnttt”);printf(“返回主菜单n”);printf(“ttt”);system(“pause”);return;} 该代码中用到了指针,并用到了链表的建立和删除,当然也涉及到了结构体。2.1.5 第五模块的实现及代码 通过以下代码实现: void searchproduct(){

int i;int j;char ch;int n = 1;do

C语言课程设计报告

{

switch(n){ case 1: system(“cls”);

printf(“tttt商品列表n”);//显示商品的名称、货号信息,以便于下部的删除 for(i = 0;i < inumber;i++){

} //商品的搜索

printf(“nnntttt请输入你要搜索商品的ID:”);scanf(“%d”,&j);if(0<=j&&j<=inumber)printf(“名称 : %sn”,a[i].name);printf(“ID : %dn”,i);printf(“库存 : %dnnn”,a[i].stock);

{ printf(“名称 : %sn”,a[j].name);printf(“货号 : %dn”,a[j].number);printf(“厂家 : %sn”,a[j].vender);printf(“产地 : %sn”,a[j].filed);printf(“存量 : %dn”,a[j].stock);printf(“单价 : %.2lfnnn”,a[j].unvalent);}

case 2:

} printf(“是否继续搜索商品?(Y/N)”);fflush(stdin);scanf(“%c”,&ch);if(ch == 'N'|| ch == 'n'){ } if(ch ==' Y'|| ch == 'y'){

} n = 1;break;break;9

C语言课程设计报告

} }while(ch!= 'n' && ch!= 'N');

printf(“nnnnnnttt”);printf(“返回主菜单!n”);printf(“ttt”);system(“pause”);return;2.1.6 第六模块的实现及代码 该代码如下: void secondmain(){

int i;

do {

system(“cls”);printf(“nnnnnnn”);

单printf(“******************************************************************nn”);n“);n”);n“);n”);n“);

printf(” ┏━━━━━━━━━━━━━━━━━━━┓printf(“ ┃ 1.输入全部商品 ┃printf(” ┃ 2.增加商品 ┃printf(“ ┃ 3.删除商品 ┃printf(” ┃ 4.储存商品 ┃printf(“ ┃ 5.储存订单 ┃

C语言课程设计报告

n”);n“);printf(” ┗━━━━━━━━━━━━━━━━━━━┛printf(“ ┃ 0.返回上一级 ┃nnn”);printf(“********************************************************************************nnnnn”);

printf(“nntt请输入你所要选择的功能(0~5): ”);

scanf(“%d”,&i);

switch(i){

case 1:

system(“cls”);jianpanload();break;

case 2:

system(“cls”);addproduct();break;case 3:

system(“cls”);deleteproduct();break;

case 4:

system(“cls”);

C语言课程设计报告

saveproduct();break;case 5:

system(“cls”);savedinggou();break;

} case 0:

system(“cls”);

return;

}while(1);

printf(“tttt”);system(“pause”);system(“cls”);return;}该代码用于商品信息文件的建立生成,存储商品信息和订单。

2.2 软件的数据(结构)设计

先定义全局变量用于控制商品数量和订单数量如下: #include #include #include #include #include

int bgnumber = 023;//客户号

int inumber = 0;//商品量的统计 int ibuy = 0;//订单的统计

C语言课程设计报告

void secondmain();

//管理维护子菜单 void jianpanload();//输入商品 void scanproduct();//浏览商品 void searchproduct();//搜索商品 void dinggou();//订购商品 void lookdinggou();//查询订单 void addproduct();//增加商品 void deleteproduct();//删除商品 void saveproduct();//保存商品 void savedinggou();//保存订单 void wenbenload();//从文本导入商品

struct product {

char name[30];int number;char vender[30];char filed[100];int stock;

double unvalent;

//商品名 //货号 //厂家 //产地 //存量 //单价

};struct product a[100];

struct dinggou {

int bgname;//货号 int bmany;

int btime;

char bname[100];

//订购量 //日期时间 //客户名

char baddress[100];//客户地址 int bnumber;//客户号

};struct dinggou b[100];

第五篇:C语言课程设计报告

目录

1前言..............................................................1 2正文..............................................................1 2.1设计目的........................................................1 2.2设计意义........................................................1 2.3设计方案与内容..................................................2 2.3.1设计内容......................................................2 2.3.2程序调试......................................................4 3致谢..............................................................7 4参考文献..........................................................7 5附录..............................................................8

塔里木大学信息工程学院课程设计

前言

17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具. 1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了

塔里木大学信息工程学院课程设计

其自身的优势,仍然是一种重要的语言,而且它还是通往c++的必由之路。它是融合了控制特性的的现代语言,其设计使得用户可以自然的采用自顶向下的规划、结构化的编程,以及模块化的设计。这种做法使得编写出的程序更可靠、更易懂。它是一种高级语言,在设计上它充分利用了当前计算机在能力上的优点。C程序往往很紧凑且运行速度快,其还表现出通常只有汇编语言才具有的精细控制能力,可以用于电脑cpu的编程控制语言,如果愿意,可以细调程序以获得最大速度或最大内存使用率。其可移植性的特点,可以使其在不经过太大的修改,便可在其它系统上运行,同时,它也是很多大型系统的编程语言,(比如说UNIX的操作系统就是建立在c之上的)。

2.3设计方案与内容

我此次设计的是一个计算器,主要是利用我们所学的知识,做到进一步掌握c语言的奥秘,使这种功能强大的高级语言走近我们的生活。本计算系统主要是作加减乘除运算。

该计算系统程序包括:main()函数、加函数、减函数、乘函数、除函数和显示函数。2.3.1设计内容

1、加运算:

int jia(int a,int b){int c;c=a+b;printf(“c=%d n”,c);}

2、减运算:

int jian(int a,int b){int c;c=a-b;printf(“ c=%d n”,c);}

3、乘运算:

int cheng(int a,int b){int c;c=a*b;printf(“ c=%d n”,c);}

4、除运算:

int chu(int a,int b){int c;c=a/b;printf(“ c=%d n”,c);}

5、显示函数程序:

塔里木大学信息工程学院课程设计

void xian(){ printf(“n”);printf(“n”);printf(“please choose lower level operation sign n”);/*选择提示*/ printf(“***************************n”);/*分隔号*/ printf(“0:apply overn”);/*输入0选项则提示结束,输出0*/ printf(“1:apply is additionn”);/*选择加号*/ printf(“2:apply is subtractionn”);/*选择减号*/ printf(“3: apply is multiplicationn”);/*选择乘号*/ printf(“4:apply is divisionn”);/*选择除号*/ } 显示界面程序图如图2-1所示

图2-1显示界面

程序分析:

1)printf(“please choose lower level operation sign n”);/*选择提示*/这句可以根据需要写成时间,一句鼓励自己的话,或者别的什么,都将不影响改程序的正常运行,只要在规定的“n”里,用户可以根据自己的需要把它用一句英文表达出来。

2)printf(“***************************n”);/*分隔号*/此句无关紧要,可以去掉也可以保留,看个人心情,不过个人建议,还是保留的比较好,它能保持计算器界面的美观特点,还能作为分隔运算程序的作用,让使用者能最快的对运算区进行划区。3)printf(“0:apply overn”);/*输入0选项则提示结束,输出0*/此句在运算界面里出现,当用户使用时,不小心输入了一个字符,非1~4以内,则会提示错误,按‘enter’结束该片段,然后根据提示,选择自己所希望使用的运算符号进行运算。

4)printf(“1:apply is additionn”);/*选择加号*/此句是加法运算提示,当输入‘1’后按‘enter’会得到可以使用加法的提示,然后就可以使用加法运算了,使用空格将数字与要加的数字分开,按‘enter’将得到你要的答案。5)printf(“2:apply is subtractionn”);/*选择减号*/这是加法运算提示。它的使用方法和

塔里木大学信息工程学院课程设计

相同。

2.3.2程序调试

1、加法运算

加法运算运行结果如图2-2所示。

图2-2加法运算运行结果

2、减法运算

减法运算结果如图2-3所示。

图2-3减法运算

3、乘法运算

乘法运算如图2-4所示。

塔里木大学信息工程学院课程设计

图2-4乘法运算

4、除法运算

除法运算如图2-5所示

图2-5除法运算

6、主函数程序: int main(){ int a, b;

塔里木大学信息工程学院课程设计

for(;;){ xian();switch(getchar()){ case '0':printf(“ tui chu: ”);getchar();return 0;case '1': printf(“ apply is '+': n ”);scanf(“%d”,&a);getchar();scanf(“%d”,&b);getchar();jia(a,b);break;case '2':printf(“ apply is '-':n ”);scanf(“%d”,&a);getchar();scanf(“%d”,&b);getchar();jian(a,b);break;case '3':printf(“apply is '*':n ”);scanf(“%d”,&a);getchar();scanf(“%d”,&b);getchar();cheng(a,b);break;case '4':printf(“ apply is '/':n ”);scanf(“%d”,&a);getchar();scanf(“%d”,&b);getchar();chu(a,b);break;default:printf(“wrong!please push down'enter' go on with ”);/*提示错误*/ getchar();break;

塔里木大学信息工程学院课程设计

} } return 0;/*一轮运算结束后返回符号选择功能选项*/ } 该主函数程序中使用了xian()函数、switch(getchar())语句、getchar()、for、break、return。xian()函数的功能是在程序运行中,具有显示界面的功能。switch(getchar())语句具有多分支选择功能。getchar()是库函数。for循环语句。是break语句是实现跳出循环的功能的语句。Return语句是返回语句,是程序最后一个语句,在int main(void)中int表示main()函数的返回值应该是一个整数。该程序具备的选择功能:

(1)选择提示:该计算器编辑界面有5个提示,它们分别是‘0’、‘1’,‘2’、‘3’、‘4’,当使用者在该界面上输入它们其中一个数字,会得到相对应的提示,其中1~4分别表示加、减、乘、除运算。‘0’表示结束工作框结束。

(2)使用方法:进入选择界面后,要选择加法运算,请输入‘1’,然后按下‘enter’键。会得到提示;然后输入两个数字用空格分开,按回车‘enter’结束,得出答案。结束此轮运算后,该程序又进入到选择提示界面,用户再根据需要选择相应的运算符号。以后的运算方法和前面一样。

致谢

在本次课程设计中,首先我要感谢张老师。是他至始至终的教导让我能够在编程方面迅速的入门。在我们对程序语言的学习过程中,是他不断的给我们讲解语句内容并且纠正我们存在的错误。不断的给我们提供帮助并且给我们分析遇到的问题。老师认真负责的工作态度,严谨治学的精神和深厚的理论水平都使我受益匪浅。他们无论在理论上还是实践中都给了我很大的帮助,使我整体水平得到了提高,对于我以后的学习和工作都有一定的帮助,感谢张兵老师的耐心辅导!

参考文献

[1]孙雄勇.Visual C++ 6.0 实用教程.北京:中国铁道出版社,2004.[2]新电脑课堂编委会.Visual C++ 编程篇.北京:电子工业出版社,2004.[3]陈清华.Visual C++课程设计案例精选与编程指导.北京:北京大学出版社,2005.[4]李东玉.Visual C++.NET实用编程100例.北京:中国铁道出版社,2003.[6]张志清.管理信息系统.南京:东南大学出版社,2003.

塔里木大学信息工程学院课程设计

附录

#include #include int jia(int a,int b){int c;c=a+b;printf(“c=%d n”,c);} int jian(int a,int b){int c;c=a-b;printf(“ c=%d n”,c);} int cheng(int a,int b){int c;c=a*b;printf(“ c=%d n”,c);}

int chu(int a,int b){int c;c=a/b;printf(“ c=%d n”,c);}

void xian(){ printf(“n”);printf(“n”);printf(“please choose lower level operation sign n”);/*选择提示*/ printf(“***************************n”);/*分隔号*/ printf(“0:apply overn”);/*输入0选项则提示结束,输出0*/ printf(“1:apply is additionn”);/*选择加号*/ printf(“2:apply is subtractionn”);/*选择减号*/ printf(“3: apply is multiplicationn”);/*选择乘号*/ printf(“4:apply is divisionn”);/*选择除号*/ }

int main(){

塔里木大学信息工程学院课程设计

int a, b;

for(;;){ xian();

switch(getchar())

{

case '0':printf(“ tui chu: ”);

getchar();

return 0;

case '1': printf(“ apply is '+': n ”);

scanf(“%d”,&a);

getchar();

scanf(“%d”,&b);

getchar();

jia(a,b);

break;

case '2':printf(“ apply is '-':n ”);

scanf(“%d”,&a);

getchar();

scanf(“%d”,&b);

getchar();

jian(a,b);

break;

case '3':printf(“apply is '*':n ”);

scanf(“%d”,&a);

getchar();

scanf(“%d”,&b);

getchar();

cheng(a,b);

break;

case '4':printf(“ apply is '/':n ”);

scanf(“%d”,&a);

getchar();

scanf(“%d”,&b);

getchar();

chu(a,b);

break;

塔里木大学信息工程学院课程设计

default:printf(“wrong!please push down'enter' go on with ”);/*提示错误*/

getchar();

break;

}

}

return 0;/*一轮运算结束后返回符号选择功能选项*/ }

下载通信工程C语言课程设计报告word格式文档
下载通信工程C语言课程设计报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言课程设计报告

    C语言课程设计报告 1. 实验题目:职员信息管理系统 2. 数据结构:整型int,字符型char,长整型long,结构体及结构体数组 3. 源代码 : #include"stdio.h" #include"string.h" #defin......

    C语言课程设计报告

    C语言课程设计报告--学生成绩管理系 C语言课程设计报告: 学生成绩管理系统 系统需求 一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和......

    C语言课程设计

    C语言课程设计 飞机空战小游戏 一、实验环境 运行系统 WINDOWSXP 编程工具C++6.0 地点 程序设计与仿真实验室 桌号19电脑IP地址221.12.10.218 二、实验目的和要求 实验目的......

    C语言课程设计范文

    C语言程序设计课程设计设计题目:专业:计算机科学与技术班级:2010级计算机二班组长姓名:马得才【P101712944】成员姓名:孙丽欣【P101712927】 赵广峰【P101712926】 迟成凯【P1017......

    C语言课程设计

    #include #include int N1,N2,kk1,kk2,kk3; struct couse * head1,*head2,*emp1; struct student * head3,*head4,*emp2; struct couse//课程信息结构体 { int num1; char n......

    C语言课程设计

    - 1 1 前言 让自己所学的知识应用于实际生活中,理论联系生活,学以致用,我们将更好服务于民。我们是新一代的年轻人,要想将来在社会上更好的立足,就必须让自己强大起来,努力的学习......

    C语言课程设计停车场报告

    C语言上机实习报告 指导老师:吴杰 学生姓名:刘超 班级序号:02305231 学生证号:20051004279 一.题目要求 设有一个可以停放N辆汽车的狭长停车场,它只有1个大门可以供车辆进出。车......

    课程设计报告 C语言[推荐阅读]

    课 程 报 告 课 程 名 称: 专 业 班 级 : 学 生 姓 名 : 学 号 : 程序设计实践 ****** 20104683**** 任 课 教 师 : 学 2010期 :2010-2011 学年第二学期 课程报告任务书 课程报告......