c语言函数程序设计报告,C语言函数程序设计

C语言函数调用程序设计实验报告求解。

#include cstdio

创新互联公司主要从事成都网站建设、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务朗县,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

void menu(){

printf("1.求两个数的和\n");

printf("2.求两个数的差\n");

printf("3.求两个数的积\n");

printf("4.求两个数的商\n");

printf("5.求两个数的余\n");

}

int add(int x,int y){return x+y;}

int sub(int x,int y){return x-y;}

int mul(int x,int y){return x*y;}

int drv(int x,int y){return x/y;}

int mod(int x,int y){return x%y;}

int main(){

int a,b,n;

printf("Please input 2 numbers:");

scanf("%d%d",a,b);

menu();

printf("Please input the number:");

scanf("%d",n);

switch(n){

case 1:printf("%d\n",add(a,b));break;

case 2:printf("%d\n",sub(a,b));break;

case 3:printf("%d\n",mul(a,b));break;

case 4:printf("%d\n",drv(a,b));break;

case 5:printf("%d\n",mod(a,b));break;

default:printf("Wrong number!");

}

}

望采纳

学生成绩记录薄 c语言 课程设计报告

C语言程序设计报告

课题名称:学生成绩管理

1 系统概述:

本程序为一个学生成绩管理系统,对学生的成绩进行管理,学生的信息包括学号,姓名,学期,三门课程的成绩,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总.

2 数据结构设计:

(1)结构体;

(2)数组的设计:运用指针代替数组,使用指针来建立线性表,使程序更加简洁,可读性更强.

3 各函数的设计:

函数原型:void InitList(SqLinkList L);

功能: 创建一个空的线性链表;

入口参数:L为要创建的线性链表;

出口参数:创建链表的L.head为空,L.length为0;

返回值: 无;

函数原型:void EmptyLinkList(SqLinkList L);

功能: 清空整个线性链表;

入口参数:L为要清空的链表名称;

出口参数:若清空成功则链表长度L.length为0;

返回值: 无;

函数原型:int ScanE(ElemType e);

功能: 输入学生信息;

入口参数:e为要输入信息的学生名称;

出口参数:e.num保存学号,e.name保存姓名,e.team保存所在学期,e.s1,e.s2,e.s3分别保存三门课程的成绩;

返回值: 输入合法返回1,否则返回0;

错误处理:若学号、姓名等输入不合法会有提示及重输;

函数原型:Status SqLinkListAppend(SqLinkList L,ElemType e);

功能: 追加一个结点到线性链表中;

入口参数:e为所追加的结点名称,L为e所追加到的线性链表的名称;

出口参数:若追加成功,则e为头结点,链表长度L.length增1;

返回值: 若追加成功返回1;

函数原型:Link SearchNode(SqLinkList L,int NUM);

功能: 查找学号为NUM的学生;

入口参数:查找的链表名称L,学号NUM;

出口参数:若找到结点指针p指向该结点,否则指向空结点;

返回值: 结点指针p;

函数原型:void SearchTeam(SqLinkList L,int team);

功能: 查找学期为team的所有记录并输出其信息;

入口参数:查找的链表名称L,要查找的学期team;

出口参数:无;

返回值: 无;

函数原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3);

功能: 查找所有有挂科记录的学生并输出其信息;

入口参数:查找的链表名称L,要查找的各门学科成绩s1,s2,s3;

出口参数:无;

返回值: 无;

函数原型:void SqLinkListSearch(SqLinkList L);

功能: 对链表进行分类查找;

入口参数:要查找的链表名称L;

出口参数:无;

返回值: 无;

函数原型: void inputData(SqLinkList L);

功能: 输入数据,并追加一个结点;

入口参数: L为要追加结点的链表名称;

出口参数: 无;

返回值: 无;

函数原型:void SqLinkListTraverse(SqLinkList L);

功能: 输出链表中所有学生成绩列表;

入口参数:L为要输出信息的链表名称;

出口参数:无;

返回值: 无;

函数原型:void PrintE(ElemType e);

功能: 输出一个结点的所有信息;

入口参数:要输出的结点名称e;

出口参数:无;

返回值: 无;

4 使用程序的说明:

本程序为一个学生成绩管理系统。对学生的成绩信息进行管理,学生的信息包括学号、姓名、学期、三门课程的成绩、平均成绩、名次。本管理系统实现学生的学号、姓名、学期、每门课程的成绩的录入,并自动按平均分排名,使用时按屏幕上的提示,输入使用代码.如下图所示:

例如:输入代码数字”1”,程序执行”输入学生成绩或已存在的学生成绩进行修改”这条小程序.输入学生个人信息后,如下图所示:

如此分别输入相应的程序代码,就执行相应的程序段.

如下的程序是按学号进行成绩排名:

当输入”6”时,执行相应的程序,即汇总一共输入学生的人数:

5 总结和体会:

通过对C语言学习,尤其是这学期本班开展C语言双语教学,体会到学习难的同时,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用. 这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是还是完成了任务。团结就是力量是我这次最真切的感受。

6 程序代码:

void InitList(SqLinkList L) {

// 构造一个空的线性表L;

L.head = 0; //头指针为空;

L.length = 0; //长度初始为0;

}

void EmptyLinkList(SqLinkList L){

//入口参数为整个线性表的数据,功能为清空线性表;

Node *p;

if(!L.head)printf("系统中不存在记录。\n");

//头指针为空时没有学生录入;

else {

while (L.head){

//每个循环将下一结点赋值给头指针,并释放本结点空间,直至线性表清空;

p=L.head;

L.head=p-next;

free(p);

} //end while;

L.length=0; //长度为0;

printf("该管理系统学生信息已清空。\n");

}//end else;

}

int ScanE(ElemType e){

//输入一个学生的成绩数据结点。返回0为无效结点数据,1为有效结点数据;

printf("\n学号:");

scanf("%d",e.num);

if(e.num==0){

//学号为0输入不合法,重新输入;

printf("学号输入不合法.\n");

return 0;

}

printf("\n姓名:");

scanf("%s",e.name);

printf("\n学期:");

scanf("%d",e.team);

while(e.team12){

//系统只记录小于12的学期数;

printf("输入的学期不能大于12,请重新输入:");

scanf("%d",e.team);

}

printf("\n成绩A:");

scanf("%f",e.s1);

printf("\n成绩B:");

scanf("%f",e.s2);

printf("\n成绩C:");

scanf("%f",e.s3);

return OK;

}

Status SqLinkListAppend(SqLinkList L,ElemType e){

//追加一个结点到线性表中;

Node *p;

p=SearchNode(L,e.num);

//查找学号为e.num的记录并将其地址赋给指针p;

if (p==0){

//若不存在添加学号相同的结点,追加一个结点;

p=(Node *)malloc(sizeof(Node));

if (!p) return ERROR;

memcpy((p-data),e,sizeof(ElemType));

p-next=L.head ;

L.head=p;

//追加的一个结点为首结点;

L.length++; //表长度加1;

}

else { //如果该学号记录已存在,则进行修改操作;

memcpy((p-data),e,sizeof(ElemType));

printf("该学生记录已经存在,已完成修改操作。\n");

}

return OK;

}

Link SearchNode(SqLinkList L,int NUM){

//查找学生记录,该学生的学号为NUM;

Node *p;

p=L.head; //p先指在头结点;

while (p p-data.num !=NUM ) p=p-next;

//如果该学生的学号不为NUM则查找下一个结点;

return p;

}

void SearchTeam(SqLinkList L,int team){

//按学期查找并输出所有该学期存在的记录;

Node *p;

p=L.head;

int n,sum=0;

//sum记录该学期的学生总人数;

printf("请输入您要查询的学生的学期:");

scanf("%d",n);

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

while(pp-next){

//如果p结点和它的下一结点不为空,且该结点的学期等于要查找学期,则格式输出所有该学期学生信息;

if(p-data.team==n){

PrintE(p-data);

sum++;

//查找到一个该学期的学生记录计数加1;

}

p=p-next;

//转向下一结点;

} //end while;

if(p-data.team==n){

//如果p的下一结点为空,且本结点学期为n,则格式输出该结点信息;

sum++;

PrintE(p-data);

}

if(sum==0)printf("没有这学期的记录。\n");

if(sum)printf("该学期共有%d人的记录.\n",sum);

}

void SearchUnpass(SqLinkList L,float s1,float s2,float s3){

//查找并输出有挂科的学生信息;

Node *p;

p=L.head;

int sum=0;

//sum计数挂科总人数,初始为0;

printf("以下是有一门以上不及格科目的学生的成绩:\n");

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

while(pp-next){

//如果p及其下一结点为真,且该结点有一门以上科目分数低于60则输出该结点成绩并使sum计数加1;

if((p-data.s160)||(p-data.s260)||(p-data.s360))

{

PrintE(p-data);

sum++;

} //end if;

p=p-next;

//转到下一结点;

} //end while;

if((p-data.s160)||(p-data.s260)||(p-data.s360)){

//查看最后一个结点,若有挂科,sum加1并格式输出结点信息;

sum++;

PrintE(p-data);

}

if(sum==0)printf("没有不及格的记录。\n");

if(sum)printf("共有%d人的挂科记录.\n",sum);

}

void SqLinkListSearch(SqLinkList L){

//分类查找学生记录;

Node *p;

p=L.head;

int n,reg; //reg为查询方式的指令;

printf("1--按学号查询\n2--按学期查询\n3--挂科学生信息列表\n");

printf("请您输入查询方式:");

scanf("%d",reg);

if(L.length){

if(reg3)printf("对不起没有您要求的选项。\n");

//若reg3则输入不合法;

else if(reg==1){

//reg==1按学号查询;

printf("请输入您要查询的学生的学号:");

scanf("%d",n);

while(pp-next p-data.num !=n) p=p-next;

//当p和他下一结点为真时且结点数据不为要查找数据时转向下一结点;

if(p-data.num==n){

//找到所要查询结点,格式输出;

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

PrintE(p-data);

}

else printf("没有您要查找的学号。\n");

} //end reg==1 if ;

else if(reg==2)SearchTeam(L,p-data.team);

//reg==2,调用SearchTeam函数按学期查询并输出;

else if(reg==3)SearchUnpass(L,p-data.s1,p-data.s2,p-data.s3);

//reg==3,调用SearchUnpass函数,输出全部有挂科记录的学生信息;

}//end if;

else printf("系统中无记录.\n");

}

void inputData(SqLinkList L){

//请求输入学生成绩,则追加一个结点并输入;

ElemType e;

if (ScanE(e)) SqLinkListAppend(L,e); //输入数据,追加一个结点;

}

void SqLinkListTraverse(SqLinkList L){

//所有学生信息列表输出;

Node *p;

char c;

p=L.head;

if(p) //非空表;

{

printf("\n学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩\n");

for (p=L.head ;p;p=p-next )PrintE(p-data);

//从第一个结点开始输出所有信息直到结点为空;

}

else printf("系统中无记录。\n");

//空表;

c=getchar();

}

void PrintE(ElemType e){

//输出各科成绩和平均成绩;

printf("%d\t%s\t%d\t%f\t%f\t%f\t%f\n",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3);

//格式输出学生的学号、姓名、学期、A、B、C三门成绩以及平均成绩;

}

C语言程序设计实验报告怎么写啊

只是个例子,不可照抄。

实验内容与要求:

[实验内容]

1、 通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用

2、 将前期所学习到的基本数据类型、运算符和表达式等程序设计基础知识运用于具体的程序设计。

3、 进一步熟练掌握输入输出函数scanf, printf和getchar的使用,熟悉math.h中常用数学函数的使用方法

4、 掌握循环语句的应用方法。

5、 了解随机数生成函数。

[实验要求]

在规定期限独立完成实验内容

1、 提交实验报告(电子版)

2、 提交相应源程序文件(文件名 EX6_x姓名.c, 如EX6_1彭健.c)

3、 要求从简单到复杂,后面的要求均在前面的基础上进行修改,前六题,每题均需要保留各自的程序,六题以后,每题均在前一题基础上修改,保留最后一个程序即可(如做到第九题,则保留EX6_9姓名.c,做到第11题,则保留ex6_11姓名.c)

二、实验原理和设计方案:

1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if else条件语句,自增运算符,设置复杂变量,输出随机操作数。

2、 变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个操作数变量和自己按运算符号输入结果的变量,最后还有判断是否要进行的变量字符。中间结果有选择运算符的switch()和分数等级的switch()和错题对题的自增和选择运算符计算的自增。

3、 问题的分析方法:先考虑设置整形变量和字符变量,考虑到要不断循环计算,选择用while语句来循环。在循环体中,将前面的输出提示运算符,和自行选择运算符、答案及输出随机操作数完成。再用switch语句对选择的运算符进行判断,并用变量进行自增运算,计算出错题于对题个数和选择了那种运算符号。在循环体最后用if else语句来判断是否继续执行还是跳出循环。最后根据自增计算的结果和公式进行分数计算,并用switch语句来是想等级的制定。

三、源代码

#includestdio.h

#includestdlib.h

#includetime.h

void main()

{

..........

}

四、试验结果和启发

因为输入y要继续循环,所以选择用while语句。在while语句中要结合前面的按提示计算,并嵌套switch语句并用条件表达式,来计算结果正确与否,计算的题型是什么。最后再用switch语句来完成分数等级的判断。

五、实验体会:

描述自己在编程或程序编译运行中遇到的难点和问题及解决的办法。


名称栏目:c语言函数程序设计报告,C语言函数程序设计
标题URL:http://scjbc.cn/article/phioic.html

其他资讯