C语言大作业报告

合集下载

C语言程序设计大作业报告模板样本

C语言程序设计大作业报告模板样本

《C语言程序设计》大作业报告1.目掌握所学C语言程序设计办法,熟悉所学语言开发环境及调试过程,熟悉所学C语言中数据类型,数据构造、语句构造、运算办法,巩固和加深对理论课中知识理解,提高学生对所学知识综合运用能力。

通过综合设计规定达到下列基本技能:1.培养查阅参照资料、手册自学能力,通过独立思考进一步钻研问题,学会自己分析、解决问题。

2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计办法,能纯熟调试程序。

2.作业内容纯熟掌握所学语言基本知识:数据类型(整形、实型、字符型、指针、数组、构造等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序构造(顺序构造、判断选取构造、循环构造);大程序功能分解办法(即函数使用)等。

进一步掌握各种函数应用等。

3.规定:1.规定每个同窗都要认真对待,积极参加。

2.独立完毕,不能抄袭。

3.课程设计结束时每位同窗必要完毕《大作业报告册》,其中包括设计源代码和设计思路。

4.不符合规定程序、设计报告、抄袭设计报告或源程序代码、在设计中完全未参加将作不及格解决。

5.统一格式,A4打印,准时提交。

4.题目:设计规定:编写一种程序,求3x4数组转置矩阵。

规定在main函数里面读数,在change函数里面把矩阵转置。

5.程序设计5.1 设计思路:1是先定义两个数组,一种是a[3][4],另一种是b[4][3]。

2是将随便输入12个数输入到a[3][4]。

3是在change函数中将a[3][4]中值通过for循环镶嵌将数组a[3][4]值赋值给数组b[4][3]。

4在主函数中将数组b[4][3]通过for循环嵌套输出。

5.2 代码# include <stdio.h>int change (int a[3][4],int b[4][3]);main(){ int a[3][4],b[4][3],i,j;printf("please input some 12 numbers:"); for(i=0;i<3;i++){printf("\n");for(j=0;j<=3;j++)scanf ("%d",&a[i][j]);}change (a,b);for(i=0;i<4;i++){for(j=0;j<3;j++)printf("%5d",b[i][j]);printf("\n");}}int change (int a[3][4],int b[4][3]){int m,n;for(m=0;m<3;m++)for(n=0;n<4;n++)b[n][m]=a[m][n]; retrun 0;}5.3 成果6.心得体会编写时注意for循环嵌套,先理清逻辑关系在编写,在看例题后,需要多敲代码,才干越来越纯熟。

计算机应用实践报告—C语言大作业

计算机应用实践报告—C语言大作业
计 算 机 应 用 实 践 报 告
计算机应用实践报告
一、题目及要求
题目:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 要求:试设计一图书信息管理系统,使之能提供以下功能: 系统以菜单方式工作 图书信息录入功能(图书信息用文件保存)--输入 图书信息浏览功能--输出 查询和排序功能:(至少一种查询方式)--算法 (1) 按书名查询 (2) 按作者名查询 e) 图书信息的删除与修改(可选项) a) b) c) d)
四、程序流程图
开始
提示“请输入图书信息文件名”
调用 load()函数 打开相应文件
显示主菜单
根据 choice 值调用函数
choice=1 choice=2 调 用 调 用 find() dele() 函 数 函 数
choice=3 choice=4 调 用 调 用 insert() display() 函 数 函 数
choice=5 调 用 save() 函 数
结束Biblioteka 五、各模块功能本系统分为以下几个模块,用于实现程序的不同功能。 (1)主函数 main()模块:其功能为显示中文提示菜单,根据用户输入的菜单选 项,调用相应功能的各个函数。 (2)装填函数 load()模块:其功能为由文件中的数据生成一个图书信息的链表, 如果文件不存在,则建立一个空链表。 (3)插入函数 insert()模块:其功能为插入一个新纪录。 (4)显示函数 display()模块:其功能为显示所有记录的书名,作者,分类号,出 版单位,出版时间,价格。 (5)查询函数 find()模块:其功能为按指定书名进行查询。如果找到了,显示该 记录的书名,作者,分类号,出版单位,出版时间和价格。如果未找到,则提示“查无 此书”的信息。 (6)删除函数 dele()模块:其功能为按指定书名删除记录。如果找到了,删除该 记录;如果未找到,则提示“查无此书”的信息。 (7)保存函数 save()模块:其功能为将图书信息链表中的内容保存到文件中。

C语言大作业

C语言大作业

C 语言课程设计实验报告学院:计算机与信息技术 专业:计算机科学与技术 学号:20111118050099 班级:四班 姓名:俊炫童真C 语言程序设计实验报告1. 设计目的和需求分析:销售管理系统 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。

每 个销售员都将当天出售的每种产品各写一张便条交上来。

每张便条包含内容: 1)销售员的代号 2)产品的代号 3)这种产品的当天的销售额 每位销售员每天可能上缴 0-5 张便条。

假设,收集到了上个月的所有便条, 编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结 果(需输出产品的代号和销售额) 4)输出统计报表 销售统计报表 产品代号 销售之和 销售员代号 1 2 3 4 5 1 2 3 4 每种产品之和 总和2.总体设计:程序设计组成框图及流程2C 语言程序设计实验报告3.详细设计:1.从第一项开始操作,在第一项运行时输入每个销售员的每种产品的销售额。

2.运行第二项采用冒泡法按其中一种产品销售额对销售员进行排序并输出排 序结果。

3.运行第三项,按照每种产品的总销售额对产品的销售额总量进行排序,此处 采用选择排序比较简洁。

4.最后运行第四项用矩阵输出每个销售员每种产品的销售额。

5.结束之后输入“0”结束程序。

4.调试与测试:1、”typedef struct”说明语法错误导致程序变量列表语法错误, 将” typedefstruct”改成” typedef struct”2、函数定义时将 int 与被定义变量连起来写了, 将”inti,k,s”改成”int i,k,s”5.源程序清单和执行结果:(C++)#include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #define Z 5 #define R 4 /*定义宏常量便于程序的一般化*/ /*R 表示销售员个数*/ typedef struct /*缩短结构体变量名*/ { int shangpin[Z]; /*定义结构体便于信息的存储和读写,辨别*/ /*R 是表示商品 的种类,最后一个为该销售员商品总和*/ }data; void menu() { printf(" *******************************************************\n"); printf(" 0.结束操作\n"); printf(" 1.计算上个月每个人每种产品的销售额\n"); printf(" 2.按销售额对销售员进行排序,输出排序结果\n"); printf(" 3.统计每种产品的总销售额,输出排序结果\n"); printf(" 4.输出统计报表\n"); printf(" ******************************************************\n"); } void data_read(data *x) /*读入函数使程序简洁*/3C 语言程序设计实验报告{ FILE *fp; char fname[10]; int i; printf("您想查询哪个月?\n"); printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/ scanf("%s",fname); strcat(fname,".txt"); /*连接文件属性*/ if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/ { printf("can not open the file\n"); exit(0); } for(i=0;i<R;i++) /*读出信息*/ if(fread(x+i,sizeof(data),1,fp)!=1) printf("读入信息出错!\n"); } void data_count(data *x) /*计算上个月每个人每种产品的销售额*/ { FILE *fp; char fname[10]; int j,t; /*用于控制循环*/ int i,k,s; /*用于定义职工序号,产品序号,产品数量*/ system("cls"); /*清频命令*/ printf("您想计算哪个月?\n"); printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息写入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"wb"))==NULL) /*打开文件*/ { printf("can not open the file\n"); exit(0); } for(j=0;j<R;j++) /*对商品数量清零*/ for(t=0;t<Z;t++) (x+j)->shangpin[t]=0; printf("please put the information about the 职工编号,产品编号,销售数量\n"); /*写入信息*/ for(j=0;;j++) { scanf("%d%d%d",&i,&k,&s); if(i==0) /*输入职工为 0 时结束信息输入*/ break; else if(i>R||i<0||k>Z||k<0)4C 语言程序设计实验报告{ printf("the information error!\n"); /*避免输入信息出错*/ continue; } else (x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s; /*统计各个人的各种产品的 数量,-1 为了和数组中的序号相匹配*/ } for(j=0;j<R;j++) if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信息写入文件中便有以后调用*/ printf("write error!\n"); fclose(fp); /*关闭文件避免信息遗漏*/ } void range_sxy(data *x) /*按销售额对销售员进行排序, 输出排序结果*/ { FILE *fp; char fname[10]; int i,k,j,t,bianhao[R],z; system("cls"); printf("你要哪个月的?\n"); printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/ { printf("can not open the file\n"); exit(0); } for(i=0;i<R;i++) /*读出信息*/ if(fread(x+i,sizeof(data),1,fp)!=1) printf("读入信息出错!"); /*读入信息提示*/ for(i=0;i<R;) /*用于存储职工编号*/ bianhao[i]=i++; printf("请输入按何种产品排序\n"); scanf("%d",&k); k=k-1; /*便于与结构体中的数组值对应*/ for(i=0;i<R;i++) /*按 K 种产品对销售员排序,选择法排序*/ { t=i; for(j=i+1;j<R;j++) if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*调用职工各自对 应的结构体内的产品数量*/ t=j; if(t!=i)5C 语言程序设计实验报告{ z=bianhao[i]; bianhao[i]=bianhao[t]; bianhao[t]=z; } } printf("按%d 产品对销售员排序为:\n",k+1); for(i=0;i<R;i++) printf("%5d",bianhao[i]+1); getch(); fclose(fp); } void range_shangpin(data *x) /*统计每种产品的总销售额,输出排序结果*/ { FILE *fp; char fname[10]; int i,j,sum[Z]={0},bianhao[Z],z,t,k; system("cls"); printf("您想计算哪个月的?\n"); printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/ { printf("can not open the file\n"); exit(0); } for(i=0;i<R;i++) /*读出信息*/ if(fread(x+i,sizeof(data),1,fp)!=1) printf("读入信息出错!"); for(i=0;i<Z;i++) /*对各种商品求和*/ for(j=0;j<R;j++) sum[i]=sum[i]+(x+j)->shangpin[i]; for(i=0;i<Z;) /*用于存储商品编号*/ bianhao[i]=i++; for(i=0;i<Z;i++) printf("%3d",bianhao[i]); for(i=0;i<Z;i++) /*对产品从高到低排序,选择法排序*/ { t=i; for(j=i+1;j<Z;j++) /*产品变化时,产品编号也随之变化,便于输出*/ if(sum[t]<sum[j]) t=j; if(t!=i)6C 语言程序设计实验报告{ k=sum[i]; sum[i]=sum[t]; sum[t]=k; z=bianhao[i]; bianhao[i]=bianhao[t]; bianhao[t]=z; } } printf("输出产品排序\n"); printf("产品编号数量\n"); for(i=0;i<Z;i++) printf("%-10d%-10d\n",bianhao[i]+1,sum[i]); getch(); fclose(fp); } void data_out(data *x) /*输出统计报表*/ { FILE *fp; char fname[10]; int i,j,sum[Z+1]={0}; system("cls"); printf("您想计算哪个月?\n"); printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/ scanf("%s",fname); strcat(fname,".txt"); if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/ { printf("can not open the file\n"); exit(0); } for(i=0;i<R;i++) /*读出信息*/ if(fread(x+i,sizeof(data),1,fp)!=1) printf("读入信息出错!"); for(i=0;i<Z;i++) /*对各种商品求和*/ for(j=0;j<R;j++) sum[i]=sum[i]+(x+j)->shangpin[i]; for(i=0;i<Z;i++) /*求商品总和*/ sum[Z]=sum[Z]+sum[i]; printf("输出统计报表如下:\n"); /*按要求输出统计表*/ printf("产品代号销售之和销售员代号\n"); for(i=0;i<R;i++) for(j=0;j<Z;j++) printf("%-10d%-10d%-10d\n",j+1,(x+i)->shangpin[j],i+1);7C 语言程序设计实验报告printf("***********************************\n"); for(i=0;i<Z;i++) { if(i==0) printf("%d 产品之和 %-10d 总和 %-10d\n",i+1,sum[i],sum[Z]); else printf("%d 产品之和 %-10d\n",i+1,sum[i]); } getch(); } void main() { int i,choice; data sxy[R]; /*R 表示职工的个数,前面的宏常量*/ for(i=0;;i++) { system("cls"); /*清频命令*/ menu(); /*菜单函数提示用户怎样选择*/ printf("你想做什么?\n"); printf("请选择:"); /*输入要进行的操作*/ scanf("%d",&choice); if(choice==0) /*退出程序*/ break; else switch(choice) { case 1 : data_count(sxy);break; /*计算上个月每个人每种产品的销售额*/ case 2 : range_sxy(sxy);break; /*按销售额对销售员进行排序,输出排序结 果*/ case 3 : range_shangpin(sxy);break; /*统计每种产品的总销售额,输出排序结 果*/ case 4 : data_out(sxy);break; /*输出统计报表*/ } } }6.实验心得:1) 2) 3) 4) 5) 经过 C 语言课程设计实践学习,使我对 c 语言有了更进一步的认识和了解. 在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在. 通过这次上机实验,让我对有些知识有了进一步的了解和巩固. 进一步掌握各种函数的应用,以及文件的读写操作等. 掌握了 C 语言的基本知识:数据类型(整形、实型、字符型、指针、数组、 结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等); 程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方8C 语言程序设计实验报告法(即函数的使用)等.9。

c语言实验报告5篇

c语言实验报告5篇

c语言实验报告c语言实验报告5篇随着社会一步步向前发展,我们使用报告的情况越来越多,我们在写报告的时候要注意涵盖报告的基本要素。

其实写报告并没有想象中那么难,以下是小编收集整理的c语言实验报告,欢迎阅读与收藏。

c语言实验报告1学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验六综合实验一、实验目的1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。

2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。

3、掌握C程序的运行、调试方法等。

二、实验内容编写一个学生信息排序程序。

要求:1、程序运行时可输入n个学生的信息和成绩(n预先定义)。

2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。

3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。

1、使用函数方法定义各个模块。

三、实验步骤与过程物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板四、程序调试记录c语言实验报告2第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。

(]1.2 实验要求在报告中记录建立、保存C程序实习过程。

1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。

执行Build-命令。

3)运行。

执行Build Execute 命令。

显示结果。

4)关闭程序工作区。

(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。

c语言大实验报告

c语言大实验报告

c语言大实验报告C 语言大实验报告一、实验目的本次 C 语言大实验的主要目的是通过实际的编程项目,深入巩固和应用 C 语言的基础知识,提高编程能力和解决实际问题的能力。

具体而言,包括熟练掌握数据类型、控制结构、函数、数组、指针等核心概念,并能够运用它们构建较为复杂的程序逻辑。

二、实验要求1、完成一个具有一定规模和功能的 C 语言程序,例如学生成绩管理系统、图书管理系统等。

2、程序应具备良好的代码结构和可读性,遵循编程规范。

3、实现数据的输入、处理和输出功能,能够进行数据的存储和查询。

4、对程序进行充分的测试,确保其稳定性和正确性。

三、实验环境1、操作系统:Windows 102、编程工具:Visual Studio 2019四、实验内容本次实验我选择开发一个学生成绩管理系统,该系统能够实现学生成绩的录入、查询、修改、删除以及成绩统计分析等功能。

(一)数据结构设计为了存储学生的信息,我定义了一个结构体`Student` ,包含学生的学号、姓名、各科成绩等字段:```ctypedef struct {int id;char name50;float score3; //假设存储三门课程的成绩} Student;```同时,使用一个动态数组来存储多个学生的信息:```cStudent students;int numStudents = 0; //记录学生数量```(二)功能模块实现1、成绩录入通过循环让用户输入学生的信息,包括学号、姓名和各科成绩,并将其添加到动态数组中:```cvoid inputStudent(){Student newStudent;printf("请输入学号:");scanf("%d",&newStudentid);printf("请输入姓名:");scanf("%s", newStudentname);printf("请输入三门课程的成绩:");for (int i = 0; i < 3; i++){scanf("%f",&newStudentscorei);}students =(Student )realloc(students, (numStudents + 1) sizeof(Student));studentsnumStudents++= newStudent;}```2、成绩查询根据用户输入的学号,在动态数组中查找对应的学生信息并输出:```cvoid queryStudent(){int id;printf("请输入要查询的学号:");scanf("%d",&id);for (int i = 0; i < numStudents; i++){if (studentsiid == id) {printf("学号:%d\n", studentsiid);printf("姓名:%s\n", studentsiname);printf("成绩:");for (int j = 0; j < 3; j++){printf("%2f ", studentsiscorej);}printf("\n");return;}printf("未找到该学号的学生信息!\n");}```3、成绩修改先查询要修改的学生信息,然后让用户输入修改后的成绩:```cvoid modifyStudent(){int id;printf("请输入要修改的学号:");scanf("%d",&id);for (int i = 0; i < numStudents; i++){if (studentsiid == id) {printf("请输入修改后的三门课程成绩:");for (int j = 0; j < 3; j++){scanf("%f",&studentsiscorej);printf("修改成功!\n");return;}}printf("未找到该学号的学生信息!\n");}```4、成绩删除根据学号删除指定的学生信息,并重新调整动态数组:```cvoid deleteStudent(){int id;printf("请输入要删除的学号:");scanf("%d",&id);int found = 0;for (int i = 0; i < numStudents; i++){if (studentsiid == id) {found = 1;for (int j = i; j < numStudents 1; j++){studentsj = studentsj + 1;}numStudents;students =(Student )realloc(students, numStudents sizeof(Student));printf("删除成功!\n");return;}}if (!found) {printf("未找到该学号的学生信息!\n");}}```5、成绩统计分析计算所有学生的平均成绩,并输出最高和最低成绩:```cvoid statistics(){float totalScore = 0;float maxScore = students0score0;float minScore = students0score0;for (int i = 0; i < numStudents; i++){float sum = 0;for (int j = 0; j < 3; j++){sum += studentsiscorej;}totalScore += sum / 3;if (sum / 3 > maxScore) {maxScore = sum / 3;}if (sum / 3 < minScore) {minScore = sum / 3;}}printf("平均成绩:%2f\n", totalScore / numStudents);printf("最高成绩:%2f\n", maxScore);printf("最低成绩:%2f\n", minScore);}```(三)主函数在主函数中,通过菜单的方式让用户选择要执行的操作:```cint main(){int choice;while (1) {printf("1、录入成绩\n");printf("2、查询成绩\n");printf("3、修改成绩\n");printf("4、删除成绩\n");printf("5、成绩统计分析\n");printf("6、退出\n");printf("请选择操作:");scanf("%d",&choice);switch (choice) {case 1:inputStudent();break;case 2:queryStudent();break;case 3:modifyStudent();break;case 4:deleteStudent();break;case 5:statistics();break;case 6:free(students);return 0;default:printf("无效的选择,请重新输入!\n");}}return 0;}```五、实验结果经过多次测试,本系统能够稳定运行,实现了预期的各项功能。

西北工业大学C语言大作业实验报告

西北工业大学C语言大作业实验报告

学院*****************目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (4)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (10)2.3函数实现 (13)2.4开发日志 (18)3 程序调试及运行 (20)3.1程序运行结果 (20)3.2程序使用说明 (22)3.3程序开发总结 (22)4 附件(源程序) (22)1 摘要1.1 设计题目折半法查找演示程序1.2 设计内容本程序是一个演示折半查找算法的演示程序。

由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。

1.3 开发工具Visual C++ 6.0和Win32。

1.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构程序功能模块:本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。

各模块的主要功能如下:程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。

此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:***************** ");/*作者信息*/p_s(4);printf("Email:************************ ");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。

程序设计实验报告(C语言初学者大一大作业)

程序设计实验报告(C语言初学者大一大作业)

程序设计实验报告课程程序设计基础共9页系别实验日期 2020 年专业班级____ __实验报告日期 2020 年 5月 31日姓名学号_ 报告退发 ( 订正、重做 )同组人无教师审批签字一.实验目的(1)掌握算法与数据结构;(2)掌握各种运算符及其表达式的使用;(3)掌握常数和变量的使用方法;(4)掌握各种数据类型的基本概念及使用方法;(5)掌握指针的用法;(6)了解文件,结构体,链表的定义。

二.实验内容(-)实验题目一:有1000元,存5年,请计算一下5种存款方法的存款利息:(p1)一次存5年;(p2)先存2年,到期后将本息再存3年期;(p3)先存3年期,到期后将本息再存2年期;(p4)存1年期,到期后将本息再存1年期,连续存5次;(p5)存活期存款。

活期利息每一季度结算一次。

2017年的银行存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为3%;5年期定期存款利息为5.85%;活期存款利息为0.35%(活期存款每一季度结算一次利息)。

输出格式如下:p1=1234.56p2=1234.56p3=1234.56p4=1234.56p5=1234.561.程序源代码#include<stdio.h>#include<math.h>int main(){double a0,a1,a2,a3,a5,p1,p2,p3,p4,p5,p;a0=0.0035;a1=0.015;a2=0.021;a3=0.03;a5=0.0585;p=1000;p1=p*(1+5*a5);p2=p*(1+a2*2)*(1+3*a3);p3=p*(1+3*a3)*(1+2*a2);p4=p*pow(1+a1,5);p5=p*pow(1+a0,20);printf("p1=%.2f\np2=%.2f\np3=%.2f\np4=%.2f\np5=%.2f\n",p1,p2, p3,p4,p5);return0;}2.实验结果(二)实验题目二:猴子吃桃问题。

C语言大作业报告

C语言大作业报告

C语言大作业
猜数字游戏
信安三班
孙麒88
戈丽萍66
分工
戈丽萍:A、B、Win函数,流程图孙麒:main、Guess函数、程序调试
一、游戏说明
1、系统随机产生一组不重复的4位数字
2、游戏者输入所猜的不重复数字,并按回车提交。

3、系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。


中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。

如:1A3B 表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
4、游戏者有限定的8次的猜测机会,在规定次数内完成,则游戏成功,否则,
游戏失败。

5、游戏成功后,将根据游戏者猜测所需要的次数对其进行评价:第一次猜出为perfect,第二——第四次猜出为great
二、详细流程
1、main函数

2、win函数(判断输赢)
3、A函数(判断数字且位置正确的个数)
A (char m[4],char n[4])
B(char m[4],char n[4],in a)
4、B函数(判断数字对但是位置不对的个数)
5、主函数Guess(char right[4])
三、总结经验
在确定了设计的内容之后,经历了很长时间的思考想出了算法。

但是在设计中反复出现错误,特别是B函数,检查很多遍之后觉得算法并无问题。

就分块进行调试。

后来偶然发现原来是整个过程中的“==”都写成了赋值“=”,导致错误,今后一定要细心才可以。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
if(judgeDown()+judgeUp()+judgeLeft()+judgeRight()==0)//四个方向都不能移动,则输了
goto gend;
switch(direction)
{
case 'S':playdown();break;
case 'W':playup();break;
case 'D':playright();break;
一、设计题目
二、目标和需求分析
三、开发工具
四、应用平台
五、程序模块
1、游戏盒子
2、2048
3、扫雷
4、贪吃蛇
六、开发日志
七、程序调试及运行
八、程序开发总结
总结:虽然做出来的东西真的没什么技术水平,但是我们尽量把这个东西的每个方方面面做完整。
一个小的游戏盒子,可以用来启动其它游戏,当然,其它游戏也是我们大作业的编写内容,平时可以玩玩用来打发时间
{
fk[x][y]=fk[x][y+1];//向上移动
fk[x][y+1]=0;//原来的位置变为空
showFk(zbx[x],zby[y],fk[x][y]);//显示移动后的方块
showFk(zbx[x],zby[y+1],fk[x][y+1]);//显示原来的空方块
}
}//完成移动一步
return 0;
二,方块移动
1、如方块向又移动时要到最左边或者碰到方块才停止(过程中有动画模块)
int moveBlankUp()//移动方块
{
for(int i=0;i<4;i++)
for(int x=0;x<4;x++)
for(int y=0;y<3;y++)//从上到下扫描
{
if(fk[x][y]==0&&fk[x][y+1]!=0)//如果某个方块上面方向是空的
吃到食物,长度变化
撞墙判死
排行榜
数据结构:
用的文件存储,并将成绩进行排序,因为每次只增加一个数据,所以采用的是插入排序
void rank(void)
{
fp=fopen("score.txt","r");
int n,a[12],k=1;//最多存12个成绩
char b[12][12];
fscanf(fp,"%d\n",&n);
第一关:(没有障碍物)
有一个xp系统样式的进度条,和一个proess提示进度
进度条根据当时分数和通关所需分数进行换算而来:
吃了紫色的食物蛇变短,(前提是蛇不能太短)绿色的会变长
第二关:(有障碍物)
黄色小球会跟着小蛇移动,被它碰到分数减半
加上了墙壁
第三关
白色方块会在屏幕里一直反弹,蛇碰到即死,同时出现一个假入口
Sleep(100);
}
主界面
通知是用pthread增加的一个线程,独立,可以随时关闭通知,需要里再弹出
pthread_t id;
pthread_create(&id, NULL, GG1, NULL);//通知进入线程
选择里面是一个判断函数,双击不同的图片有不同的返回值,然后点确定根据返回值启动不同模块,取消按钮可以取消选定
for(int i=1;i<=n;i++)
{
fscanf(fp,"%s %d",&b[i],&a[i]);
if(a[i]>totalscore) k=i+1;
}
fclose(fp);
还原按钮用来清空数据
进入游戏先输入用户姓名
InputBox(name,20,"请输入姓名","玩家姓名","王尧",20,100);//输入用户
}EndBatchDraw();
for(int k=2;k<29;k++)cg(k,w/2-150,l/2);
Sleep(10);
}
void cg(int a,int x,int y)//开场动画
{
char s[20];
sprintf(s, "LOGO%03d",a);
Image("gif",s,x,y);//输出图片
核心算法大概分为两个方面:
一,方块出现
主要用到的是不重复随机数
for(i = 0; i<n; i++)x[i] = i;
for(i = 0; i<k; i++){
t = rand(i,n-1);
swap(x[i], x[t]);
out(x[i]);
}//《编程珠玑》的算法
把这个改了一下就可以用来随机生成方块
int direction;
int zbx[4]={60,130,200,270};//背景上的坐标
int zby[4]={60+60,130+60,200+60,270+60};
int fk[4][4];//方块的数字
void main(void)
{
reset();//初始化界面
while(fflush(stdin),direction=getch())
{
// 创建线程
pthread_t pid;
pthread_create(&pid, NULL, test, NULL);
showFk(x1[i]/10*30+50,x1[i]%10*30+100,11);
Sleep(400);
}
}
}
//printf("%d ",fko);
if(fko>=100-12)win=1;//win=1表示赢 fko是掀开方块个数 雷全部扫完,暂定12个地雷
算法:
1、生成地雷。先规定一个地雷数量,再用一个不重复随机数生成算法生成地雷
int i,t,tp;
for(i = 0; i < 100; i++)x1[i]= i;//给数组赋值
//把雷生成
for(i = 0; i < 12; i++)
{Байду номын сангаас
t = rand()%(100-i)+i;//产生i到100的随机数
tp=x1[i];
x1[i]=x1[t];
x1[t]=tp;//交换两个数
fk[x1[i]/10][x1[i]%10]=11;//11表示这是一个地雷
}《编程珠玑》里的随机数生成算法修改
2、扫描地雷。为其他方块赋值。遍历每一个方块,判断周围有几个地雷。Fk[0]=1;表示第一个方块周围只有一个地雷
for(i=0;i<12;i++)
VS2005
Easyx图形库
Pthread线程库
Hge
王尧
所有的文件处理,数据算法方面优化
王懿晨
合作2048模块
杨梓晗
图片资源加工,音乐裁剪,按钮制作
程维驰
合作扫雷模块
应用平台:windowsx64
程序功能模块:
一、安装包:(写入开始菜单快捷方式,桌面快捷方式,开机启动等)//pascal脚本编写
#define MyAppName "C大作业"
2048与扫雷的数据需要分块存储,与数组结构类似,于是使用了数组来存放相应位置的数据,
然后依次类推写出其它三个方向的,
加上一个判失败条件
所以主函数是这样的:
#include <graphics.h>
#include "function.h"//功能实现放在这里
#include <conio.h>
#include <time.h>
#include <stdio.h>
int x,y;
int zx,zy;//坐标
DisableProgramGroupPage=yes
(剩余代码未全部给出)
二、启动盒子:(用来启动各个模块的游戏)
1、游戏模块(目前三个游戏)
2048扫雷贪吃蛇
2、通知模块
暂时只有简单的实现
进入动画
void logo(void)
{
int w= GetSystemMetrics(SM_CXSCREEN);//1366
3、画出初始方块
4、写一个掀开方块函数
如果方块是地雷:掀开所有地雷,播放爆炸声音,扫雷失败
如果不是地雷
a:周围没有雷,把相邻的没有雷的全部掀开(用的是递归算法)
b:周围有雷,掀开这个,显示周围地雷数量
5、一个标记函数,
6、一个判断扫雷成功函数
核心代码:
int fkopen(int x,int y)//掀开方块{
#define MyAppVersion "2.0"
#define MyAppPublisher "五人小组"
#define MyAppExeName "1.exe"
[Setup]
AppId={{49DB1DB4-FAE9-4ACB-A4B9-E5C420C5F10B}
AppName={#MyAppName}
if(fk[x][y]==0)
{
for(int i=-1;i<=1;i++)
for(int j=-1;j<=1;j++)
相关文档
最新文档