当前位置:文档之家› c语言流星雨的实现

c语言流星雨的实现

c语言流星雨的实现
c语言流星雨的实现

题目:流星雨的实现

学院:

班级:

姓名:

学号:

指导教师:

时间:

目录

一课程设计目的3

二设计内容与要求3

三概要设计3

四详细设计5

五运行界面5

六设计总结15

七教师评语16

一课程设计目的

程序模拟一组流星飞向地面的情境,地面用多行#来表示,流星用大写字母表示。

二设计内容与要求

1 内容:程序产生一组流星(比如10个),从屏幕顶部下降

飞向地面。

2 一组流星中,每个流星的字符颜色是随机的,下降的位置

是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。

三概要设计

○1首先定义二维数组screen表示地面和天空,此数组是一个24行81列的字符数组。上面的行表示天空,数组单元的值是空格;最下面的几行(如5行)表示地面,数组单元的值是’#’;整个屏幕的大小是80*25,即25行80列,为了在输出最后一行时不换行滚屏,程序只能利用上面的24行空间。把数组定义成81列的目的是,每行的最后字符赋值成’\0’,就可以按照字符串的方式输出每行文本了。

○2编写的程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度,因此程序需要定义以下几个数组变量:存放流星字符的数组,存放流星字符颜色的数组,存放流星行位置的数组,存放流星

列位置的数组,存放流星下降速度的数组。

○3输出时程序首先输出地面和天空,即输出定义的二维数组screen中的字符串,前21行是空行,后3行是#号。这样screen[24][81]的字符矩阵就与整个屏幕对应起来。然后随时机产生一组流星数据,包括字符、颜色、位置和速度。速度用一次下降多少行来表示,最大的速度是4。由于要随机产生这些数据,因此需要调用random函数。(random函数的原型是int random(int num);这个函数产生一个0—num-1之间的一个随机数。流星字符可以这样产生:random(26)+’A’; 流星字符的颜色可以这样产生:random(16)+1;流星下降的位置可以这样产生:random(4)+1;流星的行位置一开始都是1;流星的列位置可以这样产生:random(80)+1;但要保证所有流星的列位置不能相同。调用random之前,用randomize()库函数进行初始化。两个库函数都在stdlib.h文件中。)设置后,每个流星按照自己的速度下落,所谓的下落就是逐行移动流星字符:在下一行新的位置上显示流星字符,在原来的位置上显示空格以便擦除流星字符,然后再延迟等待几十毫秒。这样循环往复就构成了流星下落的动画。但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所对应的screen的单元格的值是’#’,则表示撞到了地面。这种情况下在流星的新位置上输出空格,擦除#号,并且对screen相应的单元赋值为空格,流星字符也要赋值为空格,以表示流星消失。

○4当screen[23]中任何一个单元格是空格时,程序终止。

四详细设计

模块一:输入天空和地面,天空和地面都是静止的。

模块二:产生一组流星,流星的表示。

模块三:流行的颜色,位置,速度。

模块四:若碰到#号,流星和#号同时消失。

模块五:若第24行的流星被碰到,程序终止。

五运行界面

1 程序框图

2 程序清单

#include

#include

#include

#include #include

#define ROW 24

#define COL 81

#define REAL 100

#define NUM 10

#define SPEED 4

int random(int num);

static void setSky();

static void display();

int check_last_row();

void word_n_down();

int word_one_down(int begin,int position,int speed ,int word,int *word_end);

void gotoxy(int x,int y);

char sky_ground[REAL][COL];

int test = 0;

int cycle_end = 0;

int word_end[NUM];

int list = 0;

int begin[NUM];

int position[NUM];

int word[NUM];

int speed[NUM];

int main()

{

int end_flag = 0;

time_t t;

srand((unsigned) time(&t));

setSky();

while(!(end_flag = check_last_row())) {

for(int a=0;a

word_end[a] = 0;

list = 0;

cycle_end = 0;

word_n_down();

}

system("pause");

return 0;

}

static void setSky()

{

for(int b=0;b

{

for(int c=0;c

sky_ground[b][c] = ' ';

}

sky_ground[b][COL-1] = '\0'; }

for(int d=ROW-5;d

for(int e=0;e

sky_ground[d][e] = '#';

}

sky_ground[d][COL-1] = '\0'; }

}

static void display()

gotoxy(0,0);

for(int f=0;f

printf("%s",sky_ground[f]); }

}

int random(int num)

{

return(rand() % num);

}

int check_last_row()

{

for(int g=0;g

if(sky_ground[23][g] == ' ') return 1;

}

return 0;

}

void word_n_down()

{

for(int h=0;h

{

begin[h] = random(ROW-5); position[h] = random(COL-2); word[h] = random(26) + 'A'; speed[h] = random(SPEED)+1; }

while(1)

{

if(cycle_end >= NUM) break;

test = list-1;

if(test < 0)

test = 0;

if(check_last_row())

{

system("pause");

exit(0);

}

for(int i=0;i

word_one_down(begin[i],position[i],speed[i], word[i],&word_end[i]); list ++;

display();

Sleep(200);

}

}

int word_one_down(int begin,int position,int speed,int word,int *word_end)

{

if((*word_end) == 0)

{

if(begin+list*speed >= ROW)

return 0;

sky_ground[begin+test*speed][position] = ' ';

if(begin+list*speed >= 19)

{

for(int z=19;z

{

if(sky_ground[z][position] == '#')

{

sky_ground[z][position] = ' ';

*word_end = 1;

cycle_end ++;

break;

}

}

}

else

{

sky_ground[begin+list*speed][position] = word;

}

}

return 0;

}

void gotoxy(int x,int y)

{

COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );

}

3、系统运行结果

六设计总结

七教师评语

学生成绩统计c语言

课程设计 课程名称____C语言课程设计___ 题目名称____学生成绩统计_____ 学生学院______物理学院_______ 专业班级____电子科学与技术___ 学号_____3110008570______学生姓名______胡健___________ 指导教师_______刘力斌________ 2012 年10 月17 日

C语言课程设计报告 一、C语言课程设计的目的: 进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。 二、课程设计报告正文 课程设计题目的原文: 学生成绩统计 【问题描述】 学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。 【实现提示】 假设某班有:30人(姓名自定) 考试课程有:高等数学、物理、外语、C语言、德育5门课程。 将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面: ①输入成绩到文件中 ②输出成绩 ③输出不及格学生名单 ④成绩排序 ⑤修改记录 ⑥删除记录 ⑦插入记录等 主函数中对3个功能选择(菜单),调用对应的函数完成。 【测试数据】 自定模拟数据 题目的分析(需求分析): 该题目主要是锻炼学生对于运用C语言结构体,指针以及文件修改的能力,C语言最难的部分就在于指针,所以,能用最简洁的语句写出一个合理的程序,老师的目的就达到了。通过该课程设计的锻炼,加深学生对这些知识的掌握以及理解。

大一上期C语言实验报告5 循环控制语句

成都工业学院·计算机工程学院 《程序设计基础》实验报告 1.实验目的 (1)熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用三 种循环语句实现循环结构; (2)掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧; (3)进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。2.实验内容 (1)输出两个整数m和n,求它们的最大公约数和最小公倍数。 要求: ①画出算法流程图,从键盘输入m和n; ②对负数和零可不做考虑; ③运行程序,对m>n、m

③按照数字、大写字母、小写字母及其他字符数的顺序输出结果 3.流程图 4.源程序

5. 运行结果 (1 ) 求最大公约数和最小公倍数 (2)求1000内最大的10个素数之和(3)计算π值

c语言程序代码

1.要求在屏幕上输出下一行信息。 This is a c program. 程序: #include int main() { printf(“this is a c program.\n”); return 0; } 2.求两个整数之和。 程序: #include int main() { int a,b,sum; a=122; b=234; sum=a+b; printf(“sum is %d\n”,sum); return 0; } 3.求两个整数之间的较大者。

#include int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d\n",c); return 0; } int max(int x,int y) { int z; if(x>y)z=x; else z=y; return(z); } 4.有人用温度计测量出华氏发表示的温度(如69°F),今要求把 她转换成以摄氏法表示的温度(如20℃)。 公式:c=5(f-32)/9. 其中f代表华氏温度,c代表摄氏温度。

#include int main() { float f,c; f=64.0; c=(5.0/9)*(f-32); printf("f=%f\nc=%f\n",f,c); return 0; } 5.计算存款利息。有1000元,想存一年。有一下三种方法可选: (1)活期:年利率为r1;(2)一年定期:年利率为r2;(3)存两次半年定期:年利率为r3。分别计算一年后按三种方法所得到的本息和。 程序: #include int main() { float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; p1=p0*(1+r1); p2=p0*(1+r2);

成绩统计系统c语言

成绩统计系统 一目的 通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C 语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。 学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。 二需求分析 1、本程序要求输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段0~49, 50~59, 60~69,70~79, 80~89, 90~100的人数及占总人数的百分比。要求输入:课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。 2、本程序采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。

三概要设计 1、本程序包含两个模块: (1)主程序模块: Main(){ 用switch语句控制菜单功能; Switch语句调用分支函数完成各个功能;} (2)主程序模块调用的个分支函数: menu() 控制菜单的格式输出; input() 输入考试的信息; statistics()输入学生成绩信息,并进行分数段统计;2、程序中抽象数据类型定义: int choice; 控制switch语句选择调用个分支函数,完成各个功能;Char date[] 存放日期,完成日期的输入输出; char course[20]; 存放课程名称; int classNO; 存放班级号码; char name[100]; 存放学生姓名,最大存储数量100; int number[100]; 存放学生学号; int score[100]; 存放学生考试分数,用于统计数据;

c语言循环语句和循环控制例题解析

一、循环控制 (一)、break语句 break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。 例如: int main(int argc, char *argv[]) { int sn=0,i; for(i=1;i<=100;i++) { if(i==51) break; /*如果i等于51,则跳出循环*/ sn+=i; /*1+2+……+50*/ } printf(%d\n,sn); } 可以看出,最终的结果是1+2+……+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。 注意: 1. break语句对if-else的条件语句不起作用。 2. 在多层循环中,一个break语句只向外跳一层。 例如: int main(int argc, char *argv[]) { int i,j; printf(i j\n); for(i=0;i<2;i++) for(j=0;j<3;j++) { if(j==2) break; printf(%d %d\n,i,j); } } 输出结果为: i j 0 0 0 1 1 0 1 1 当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。 (二)、continue语句

c语言成绩统计系统

C语言成绩统计系统 #include #include #include int shoudsave=0; /* 为后面判断是否改动资料做铺垫*/ struct student { char num[11];/*学号*/ char name[20]; int cgrade; int mgrade; int egrade; int totle; int ave; float ajd;//平均绩点 }; typedef struct node

{ struct student data; struct node *next; } Node,*Link; void menu() { printf("************************************************************************ ********"); printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n"); printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n"); printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n"); printf("\t7排序学生成绩\t\t\t\t\t8保存学生资料\n"); printf("\t9获取帮助信息\t\t\t\t\t0退出系统\n"); printf("************************************************************************ ********\n"); } void printstart() { printf("--------------------------------------------------------------------------------\n"); } void Wrong() { printf("\n=====>提示:输入错误!\n"); } void Nofind() { printf("\n=====>提示:没有找到该学生!\n"); } void printc() /* 本函数用于输出中文标题*/ { printf(" 学号\t 姓名英语成绩数学成绩C语言成绩总分平均分平均绩点\n"); } void printe(Node *p)/*本函数用于输出中文标题下的具体内容*/ {

C语言 个关键字九种控制语句 种运算符

总结归纳了C语言的32个关键字 第一个关键字:auto 用来声明自动变量。可以显式的声明变量为自动变量。只要不是声明在所有函数之前的变量,即使没加auto关键字,也默认为自动变量。并且只在声明它的函数内有效。而且当使用完毕后,它的值会自动还原为最初所赋的值。自动变量使用时要先赋值,因为其中包含的是未知的值。 例:auto int name=1; 第二个关键字:static 用来声明静态变量。可以显式的声明变量为静态变量。也为局部变量。只在声明它的函数内有效。它的生命周期从程序开始起一直到程序结束。而且即使使用完毕后,它的值仍旧不还原。即使没有给静态变量赋值,它也会自动初始化为0. 例:static int name=1. 第三个关键字:extern 用来声明全局变量。同时声明在main函数之前的变量也叫全局变量。它可以在程序的任何地方使用。程序运行期间它是一直存在的。全局变量也会初始化为0. 例:extern int name; 第四个关键字:register 用来声明为寄存器变量。也为局部变量,只在声明它的函数内有效。它是保存在寄存器之中的。速度要快很多。对于需要频繁使用的变量使用它来声明会提高程序运行速度。 例:register int name=1; 第五个关键字:int 用来声明变量的类型。int为整型。注意在16位和32位系统中它的范围是不同的。16位中占用2个字节。32位中占用4个字节。还可以显式的声明为无符号或有符号: unsigned int或signed int .有符号和无符号的区别就是把符号位也当作数字位来存储。也可用short和long来声明为短整型,或长整行。 例:int num; 第六个关键字:float 用来声明变量的类型。float为浮点型,也叫实型。它的范围固定为4个字节。其中6位为小数位。其他为整数位。 例:float name;

数据结构C语言实现二叉树三种遍历

实验课题一:将下图中得二叉树用二叉链表表示: 1用三种遍历算法遍历该二叉树,给出对应得输出结果; 2写一个函数对二叉树搜索,若给出一个结点,根据其就是否属于该树,输出true或者f alse。 3写函数完成习题4、31(C++版)或4、28(C版教科书)。 #include "stdio、h" #include”malloc、h" typedefstruct BiTNode { char data; structBiTNode *lchild,*rchild; }BiTNode,*BiTree; BiTree Create(BiTreeT) { char ch; ch=getchar(); if(ch=='#’) T=NULL; else { T=(BiTNode *)malloc(sizeof(BiTNode)); T-〉data=ch; T->lchild=Create(T—〉lchild); T—〉rchild=Create(T-〉rchild); } return T; } int node(BiTree T) { int sum1=0,a,b; ?if(T) { if(T!=NULL) ??sum1++;

?a=node(T->lchild); sum1+=a; b=node(T—>rchild); sum1+=b; ?} return sum1; } int mnode(BiTree T) { ?int sum2=0,e,f; if(T) { ?if((T->lchild!=NULL)&&(T-〉rchild!=NULL))?sum2++; ?e=mnode(T-〉lchild); sum2+=e; f=mnode(T-〉rchild); sum2+=f; ?} return sum2; } void Preorder(BiTree T) { if(T) { printf("%c”,T->data); Preorder(T—>lchild); Preorder(T-〉rchild); } } int Sumleaf(BiTree T) { int sum=0,m,n; if(T) { if((!T-〉lchild)&&(!T-〉rchild)) sum++; m=Sumleaf(T->lchild); sum+=m; n=Sumleaf(T—>rchild); sum+=n; } return sum; }

C语言程序设计 入门源代码代码集合

#include <> void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c)); return 0;

} int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include <> int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5 #include <>

c语言课程设计--运动会分数统计系统讲课教案

课程设计报告 课程名称C语言课程设计 课题名称运动会分数统计系统 专业电气工程及其自动化 班级 学号 姓名 指导教师王颖 2012年 6 月25 日

湖南工程学院 课程设计任务书 课程名称C语言课程设计 课题运动会分数统计系统 专业班级电气工程及其自动化 学生姓名 学号 指导老师王颖 审批 任务书下达日期2012年6月16日 任务完成日期2012年6月25日

运动会分数统计系统 一、问题描述: 参加运动会的n 个学校编号为l ~n 。比赛分成m 个男子项目和w 个女子项目,项目编号分别为l ~m 和m +1~m +w 。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。设计一个统计程序按名次产生各种成绩单、得分报表。 二、基本要求: 1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;均按名次排序。 2.比赛项目既要有径赛,又要有田赛。 三、测试数据: 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 四、实现提示: 1.数据结构:线性表 2.数据库结构:下面四张表构成该系统的基本数据库,全部输出报表由系统根据基本表自动生成。 3. 可以假设n ≤20,m ≤30,w ≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并输入运动员编号、学校编号和成绩等。 五、选作内容: 允许用户指定某项目采取其他名次取法。 姓名 运动员编号 校名 学校编号 项目名 项目编号 初始化时完成录入 float char char char char char 成绩 类型 性别 项目编号 学校编号 运动员编号

C语言实现二叉树的前序遍历(递归)

C语言实现二叉树的前序遍历算法实现一: #include #include typedef struct BiTNode//定义结构体 { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void CreateBiTree(BiTree &T) //前序创建树 { char ch; scanf("%c",&ch); if(ch==' ') T=NULL; else { T=(struct BiTNode *)malloc(sizeof(struct BiTNode)); T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } int print(BiTree T)//前序遍历(输出二叉树) { if(T==NULL)return 0; else if(T->lchild==NULL && T->rchild==NULL)return 1; else return print(T->lchild)+print(T->rchild); } void main()//主函数 { BiTree T; CreateBiTree(T); printf("%d\n",print(T)); } 算法实现二: #include

#include struct BiTNode//定义结构体 { char data; struct BiTNode *lchild,*rchild; }; int num=0; void CreatBiTree(struct BiTNode *&p) //前序创建树 { char ch; scanf("%c",&ch); if(ch==' ') p=NULL; else { p=(struct BiTNode *)malloc(sizeof(struct BiTNode)); p->data=ch; CreatBiTree(p->lchild); CreatBiTree(p->rchild); } } void print(struct BiTNode *p) //前序遍历(输出二叉树){ if(p!=NULL) { if(p->lchild==NULL&&p->rchild==NULL) else { print(p->lchild); print(p->rchild); } } } void main()//主函数 { struct BiTNode *p; CreatBiTree(p); print(p); printf("%d\n",num); } 供测试使用的数据

C语言程序设计-入门源代码代码集合

演示1 #include void print_star(void) { printf("*****************\n"); } void print_welcome(void) { printf("C language,welcome!\n"); } void main() { print_star(); print_welcome(); print_star(); getchar(); } 演示2 #include "stdio.h" int sum(int i,int j) { return(i + j); } void main() { int n1,n2; printf("input 2 numbers:\n"); scanf("%d%d",&n1,&n2); printf("the sum = %d\n",sum(n1,n2)); getchar(); } 演示3 #include "stdio.h" int maxnum(int,int,int); main() { int a,b,c; printf("Please enter 3 numbers:\n"); scanf("%d,%d,%d",&a,&b,&c); printf("Maxnum is %d\n",maxnum(a,b,c));

return 0; } int maxnum(int x,int y,int z) { int max=x; if(y>max) max = y; if(z>max) max = z; return max; } 演示4 #include int s1(int n) { int j,s; s=0; for(j=1;j<=n;j++) s=s+j; return s; } int sum(int n) { int i,s=0; for(i=1;i<=n;i++) s=s+s1(i); return s; } void main() { int n; printf("n:"); scanf("%d",&n); printf("s=%d\n",sum(n)); } 演示5

C语言程序的设计运动会成绩统计系统方案

程序设计工程训 练 报告 运动会分数统计系统 课程名称 姓名 院(系) 专 业班级 学号 指导教师 教务处制 C 语言程序设计工程训练 信息科学与技术学院

1 需求分析. (1) 2 系统总框图和功能模块说明 (2) 2.1 系统总框图 (2) 2.2 功能模块说明 (2) 3 系统设计. (3) 3.1 主要结构体 (3) 3.2 主要功能函数 (3) 3.3 关键函数的流程图 (4) 4 系统调试. (4) 5 总结. (7) 6 源程序清单. (7)

1需求分析 1问题描述 运动会分数统计 参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1?m女子m+仁m+w不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由使用者设定。(m<=20 ,n <=20 2. 基本要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分; 3) 可以按学校编号、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况; 5) 可以按项目编号查询取得前三或前五名的学校。 3. 测试数据 1) 首先进入成绩录入界面,先输入参赛学校数,再输入男子组数和女子组数; 2) 然后进入总目录; 3) 输入:1输入成绩; 4) 输入:2统计各校总分; 5) 输入:3统计各校项目得分; 6) 输入:4按学校总分排序输出; 7) 输入:5按男团体总分排序输出; 8) 输入:6按女团体总分排序输出; 9) 输入:7按学校编号查询学校某个项目的成绩; 10) 输入:8按项目编号查询取得前三名或前五名的学校; 11) 输入:0退出;

c语言实现二叉树的代码

1,2两问的程序代码如下: #include "stdio.h" #include"malloc.h" typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; BiTree Create(BiTree T) { char ch; ch=getchar(); if(ch=='#') T=NULL; else { T=(BiTNode *)malloc(sizeof(BiTNode)); T->data=ch; T->lchild=Create(T->lchild); T->rchild=Create(T->rchild); } return T; } int node(BiTree T) { int sum1=0,a,b;

if(T) { if(T!=NULL) sum1++; a=node(T->lchild); sum1+=a; b=node(T->rchild); sum1+=b; }

return sum1; } int mnode(BiTree T) { int sum2=0,e,f; if(T) { if((T->lchild!=NULL)&&(T->rchild!=NULL)) sum2++; e=mnode(T->lchild); sum2+=e; f=mnode(T->rchild); sum2+=f; } return sum2;

void Preorder(BiTree T) { if(T) { printf("%c",T->data); Preorder(T->lchild); Preorder(T->rchild); } } int Sumleaf(BiTree T) { int sum=0,m,n; if(T) { if((!T->lchild)&&(!T->rchild)) sum++; m=Sumleaf(T->lchild); sum+=m; n=Sumleaf(T->rchild); sum+=n; } return sum; } void zhongxu(BiTree T) {

一些比较简c语言程序源代码

/**返回的long型的最大值是startLongValue+count-1(产生一个随机数) * param needCount * param count * param startLongValue * return */ public static List randomNoRepeatLongArray(int needCount,int count,long startLongValue){ //这种情况会出现无限循环的 if(needCount>count) return null; Random random = new Random(); int[] ints = new int[count]; for(int i=0;i list = new ArrayList(); while(list.size() #include #include

C语言课程设计-学生成绩统计软件

C语言课程设计实验报告 一问题描述:学生成绩统计软件 二基本要求: 1)每条记录由学号、姓名、若干门课程的成绩组成; 2)能计算每个学生的总分和平均分并显示; 3)能按平均分统计各分数段的人数,并以分布图显示,如图; 4)再此基础上能够进行文件操作。 三系统分析与设计: 由于程序要求对文件进行操作,所以需要建立一个文件存储学生信息并且能从文件中读取并输出。学生信息从键盘输入,根据提示并以ENTER结束每条信息的输入。 1总体设计: 程序通过main()函数调用两个模块函数来实现要求。两个模块分别是输入和计算的getdata函数和输出图表的putsgraph函数。 2 详细设计: 1)文件建立:因为要求对文件进行操作,所以首先建立一个文件存放学生的信息,用到FILE 文件指针,fp1=fopen(“file1”,”w+”); 2)学生的信息存放在结构体数组中,struct student_score s[N];并且通过for循环,调用子函数getdata,从键盘接受学生信息并且计算总分和平均分,用return返回主函数,并用fprintf 写入文件中,用rewind返回文件头,用fscanf读出信息并显示在屏幕上,统计各平均分段的人数,通过调用putsgraph输出图表。 四结构图: 主函数 五流程图

六程序清单 #define N 5 #include #include struct student_score { long num; char name[20]; float score[4]; float total; float aver; }s[N]; struct name { char a[10]; }n[8]; void main() { FILE *fp1; struct student_score getdata(struct student_score st,int x); struct name n[8]={"NUMBER","NAME","SCORE1","SCORE2","SCORE3","SCORE4","TOTAL","AVERA GE"}; int putsgraph(int sa, int sb,int sc,int sd,int se); int i,s1=0,s2=0,s3=0,s4=0,s5=0; if((fp1=fopen("file1","w+"))==NULL) {printf("cannot open file %s\n",fp1); exit(0);} for(i=0;i

C语言循环结构测习题带答案

精心整理 第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ? ? ? ? 1. C. A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (5)以下程序段C。 intx=-1; do { x=x*x; } while(!x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 (6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C. C. COUT< main() { intnum=0; while(num<=2) {

num++; cout< else ++i; }while(s<15); Cout< main() { inti,j; for(i=4;i>=1;i--) {

C语言程序设计(医院信息管理系统)附源代码

专业设计报告 课程名称: C 语言程序设计 课题名称:医院信息管理系统 专业班别: 12本计算机科学与技术二班 姓名: 学号: 指导教师: 设计日期: 2012-5-25

教师评语:

成绩评定: 指导教师签名: 日期: 2012 年月日 课程设计题目医院信息管理程序 作者姓名: 同组成员: 摘要利用结构体存储每个病人的信息和每种药品的信息,并使用链表存储全部病人的信息;能完成对医院内所有病人信息的注册、查询、删除和修改等操作,同时又能对药房内库存的药品进行查询;可以将链表中的病人信息保存在文件中,并且可以对文件中的病人信息进行读取与显示 1.专业设计目的

1、掌握链表的操作,包括链表节点的创建、释放还有链表的遍历 2、掌握对二进制文件的创建、增添等基本操作。 3、熟悉C语言函数的使用方法,学会模块化处理问题以及多个源文件的处理方式 2.设计基本要求( 1、使用结构体来存储病人的信息,结构体中包括病的id号码、姓名、病历以及消费信息,并用链表将所有病人信息整合。 2、用文件来存储链表的信息以便下次再使用该程序时载入病人信息 3、能够实现病人信息的注册、病人信息的查询、病人消费统计、保存链表信息、载入链表信息、查询库存等几项功能。 4、要求用四个源文件、、、 5、系统完成后应实现类似下面所示界面

3、算法分析 1、数据结构 设计链表中的一个节点存储一个病人的信息,使用下面的结构体类型定义:struct patient{ char id[10]; char name[10]; char casehist[200]; int cost[3]; int transfusion;

C语言课程设计-学生成绩统计软件

安徽师范大学
《C 语言程序设计》
课程设计报告
题 学 姓
目 号 名
学生成绩统计软件
年级专业 同组人员 学 号
09 电子信息工程
指导老师 完成日期 2010 年 6 月 30 日
安徽师范大学物理与电子信息学院
College of Physics and Electronic Information, Anhui Normal University
1

安徽师范大学
一、实践的目的和要求 加深对《C 语言》课程所学知识的理解,进一步巩固 C 语言 语法规则。学会编制结构清晰、风格良好、数据结构适当的 C语言程序,从而具备解决综合性实际问题的能力。 二、实践内容 在熟练掌握 C 语言的基本知识:数据类型(整形、实型、字 符型、指针、数组、结构等) ;运算类型(算术运算、逻辑 运算、自增自减运算、赋值运算等) ;程序结构(顺序结构、 判断选择结构、循环结构) ;大程序的功能分解方法(即函 数的使用)等。进一步掌握各种函数的应用,包括时间函数、 绘图函数,以及文件的读写操作等。 三、实验要求 1) 每条记录由学号,姓名,若干门课程的成绩组成 2) 能计算每个学生的总分和平均分并显示 3) 能按平均分统计各分说短的人数, 并以分布图显示, 4) 在此基础上,可进行文件操作
<=60
〈=70
〈=80
〈=90
〈=100
2

安徽师范大学
四、实验内容 1、程序功能 能够输入学生的学号、姓名、分数等内容;输入后可以 显示学生信息;能够删除学生信息;可以添加学生信息,平 且可以进行排序;可以对输入信息价以保存,且可以在以后 操作中能查到源输入信息。 2、程序清单
#include #include #include #include #include #include #include #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 *delete(STUDENT *head); STUDENT *sort(STUDENT *head); STUDENT *insert(STUDENT *head,STUDENT *new); void save(STUDENT *head); STUDENT *load(); main()
3

相关主题
文本预览
相关文档 最新文档