C语言大作业报告
C语言程序设计大作业报告模板样本
![C语言程序设计大作业报告模板样本](https://img.taocdn.com/s3/m/6fc50d29f705cc17552709ef.png)
《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语言大作业](https://img.taocdn.com/s3/m/81fd2825bcd126fff7050b7c.png)
计算机应用实践报告
一、题目及要求
题目:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 要求:试设计一图书信息管理系统,使之能提供以下功能: 系统以菜单方式工作 图书信息录入功能(图书信息用文件保存)--输入 图书信息浏览功能--输出 查询和排序功能:(至少一种查询方式)--算法 (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语言大作业](https://img.taocdn.com/s3/m/24f0f928453610661ed9f4dc.png)
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篇](https://img.taocdn.com/s3/m/f26ad5da5ff7ba0d4a7302768e9951e79a89697f.png)
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语言大实验报告](https://img.taocdn.com/s3/m/ef07b146bdd126fff705cc1755270722192e59bd.png)
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语言大作业实验报告](https://img.taocdn.com/s3/m/0dd5fae9e009581b6bd9eb93.png)
学院*****************目录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语言初学者大一大作业)](https://img.taocdn.com/s3/m/9f03160c26fff705cc170afb.png)
程序设计实验报告课程程序设计基础共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语言大作业报告](https://img.taocdn.com/s3/m/1711b2be6529647d2728524b.png)
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函数,检查很多遍之后觉得算法并无问题。
就分块进行调试。
后来偶然发现原来是整个过程中的“==”都写成了赋值“=”,导致错误,今后一定要细心才可以。
C语言实验报告9篇
![C语言实验报告9篇](https://img.taocdn.com/s3/m/5bbec0e732d4b14e852458fb770bf78a65293a3a.png)
C语言实验报告C语言实验报告9篇随着个人素质的提升,报告的适用范围越来越广泛,我们在写报告的时候要注意语言要准确、简洁。
写起报告来就毫无头绪?以下是小编为大家整理的C语言实验报告,仅供参考,欢迎大家阅读。
C语言实验报告1一、实习目的1.掌握在集成环境中编辑、编译、连接和运行C程序的方法。
(1)运行TC(2)启动TC集成环境,输入一个源程序,编译并运行。
2.掌握单步执行、设置/去除断点,观察变量或表达式的值。
(3)在该程序中按CTRL+F7单步招待并在观察窗口中查看变量和表达式的值。
(4)设置/去除断点,继续调试。
1、熟练掌握if.switch分支语句的使用。
2、熟练掌握for.while.do.while循环语句的使用。
3、熟练掌握函数的定义、说明、参数传递及嵌套和递归调用方法。
4、熟练掌握一维数组、二维数组、字符数组的定义、说明和使用方法。
熟练掌握结构体和指针的综合应用链表的操作二、实习地点北京交通干部管理学院计算机系机房十三号.三、实习成果熟练掌握TC集成环境的使用方法。
认真编写实习报告和实习总结,描述实习操作和心得体会,总结在这次实习中的业务收获,作出自我评价。
熟练掌握并应用TC程序设计的各个知识点。
掌握结构体和指针的联合使用,学会链表的构造和常用操作方法,认真编写实习日志和实习体会。
并通过各种途径查找所需资料,拓宽视野,培养自学能力。
四、实习心得在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。
我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。
老师安排我们有具有的分工:首先,在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项和同学们的任何。
老师把我们分为几组,每一组十一个人,并且分配了具体的任务,在我们实习结束后每一组的同学都把自己组里的成果展示给大家一起分享,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。
大一C语言课题报告总结(5篇)
![大一C语言课题报告总结(5篇)](https://img.taocdn.com/s3/m/d668fdbcdbef5ef7ba0d4a7302768e9951e76e9b.png)
大一C语言课题报告总结(5篇)在本学期学习C语言将近一个学期后,我们进展了C语言实训,做了一个比拟简单、功能较全的学籍治理系统。
虽然实训为期不长,但对我C 语言水平的提高和对C的熟悉理解有很大帮忙。
在这次实训中,我对C语言有了一个更深的了解熟悉,也使我这个学期学的学问得到了稳固。
虽然在实训中遇到了很多的困难,比方说一开头在文件方面的学问比拟薄弱,在对输入的数据保存、已输入条数的统计方面做得缺乏。
但经过自己对文件内容的学习和向他人的请教,在这方面的学问得到补充,问题也得到了解决。
在这次实训中,当自己每次解决一个问题时,当自己经过屡次调试、修改使程序得以运行时,自己心中那份自信、满意、满意感油然而生。
经过这次实训,使我加强了对C语言的兴趣。
同时在这次实训中,也使我发觉了很多的问题。
在实训中,我熟悉到自己还有许多的学问没学好,根底学问没理清,而且很多东西还要去翻书,去上网搜寻。
而且遇到一些小错误运行不出来,就会烦躁担心,觉得有些自暴自弃,以后要克制,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。
同时这次实训也使我更加深化了C语言学习方法。
算法是程序的灵魂,在我们每遇到一个比拟简单的编程问题时,我们应当先写出该问题解决的算法,然后再去实现编代码。
做到了这样,问题才能更快地解决。
软件开发少不了合作,只有合作才能共同提高,只有互补才能取长补短,共同进步。
通过这次实训,我也熟悉到自己有很多的方面需要改良和有待提高。
对于以后,我会从以下几方面连续努力:1、加强对算法的学习,到达精通一些根本算法的水平。
2、编程多加强实践,多上机学习。
3、打好根底,扎实功底,注意根底理论学习,不好高骛远。
4、加强和同学的合作,遇到问题多争论,多查找解决问题的方法,总之,这一切将对我C语言的学习有很大帮忙。
大一C语言课题报告总结二在初学C语言的一个学期后,我们进展了C语言实训阶段,尝试编写一个比拟简单的程序系统。
C语言程序大作业
![C语言程序大作业](https://img.taocdn.com/s3/m/b462f62da55177232f60ddccda38376baf1fe0df.png)
C语言程序大作业
大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统
学生姓名:罗________________
专业班级:__________________________
学号:
联系电话:__________________________
Email : ________________________
完成日期: 2015年5月29日
设计任务
我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。
主要能够实现的目的主要有:
第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt 第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。
第三.对输入错误的学生信息加以修改重新排序保存。
第四.增加学生信息,重新排序,加以保存。
第五.按每个学生的平均分进行表格化和图形化处理。
第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。
以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。
二、程序设计与实现
1.结构框图
下图描述预期实现题目的设计方案或功能设计的组成结构。
绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:
学生成绩信息管理
2.功能模块设计及其流程图
(1)数据描述与存储
该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及。
语言程序设计作业设计报告参考范例
![语言程序设计作业设计报告参考范例](https://img.taocdn.com/s3/m/9f59571ba76e58fafab003a3.png)
第三次C语言大作业班级:自动化081姓名:学号:08132116第一题:编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用三个空格分开)。
例如用户输入了42339,屏幕输出结果为:4 2 3 3 9 【提示】巧妙使用/ 和% 两种运算符。
题目分析与算法:用scanf语句从键盘上输入一个任意五位数。
核心部分是巧妙使用/和%两种运算符。
在本题中,我先将一个五位数分解成两部分i(一个三位数)和j,(一个两位数),再重复利用上一特性,对i进行分解,依次重复,便可以顺利将该五位数分解成单个数值。
最后利用%4d 来实现每个数字之间用三个空格分开。
流程图:源程序代码:# include <stdio.h>main(){int i,j,k,a,b,c,d,e;long int n;printf("pleale input n(n为五位数):");scanf("%ld",&n);while(n<10000 || n>99999){printf("\n输入有误,请重输: ");scanf("%ld",&n);}i=n/100;j=n%100;k=i/10;a=k/10;b=k%10;c=i%10;d=j/10;e=j%10;printf("%d%4d%4d%4d%4d\n",a,b,c,d,e); }运行结果:当输入42339时,显示结果为下图所示当输入的数是非五位数时,运行结果如下:调试过程:错误代码;# include <stdio.h>main(){int i,j,k,a,b,c,d,e;long int n;printf("pleale input n(n为五位数):");scanf("%ld",&n);while(n<10000 || n>99999){printf("\n输入有误,请重输: ");}i=n/100;j=n%100;k=i/10;a=k/10;b=k%10;c=i%10;d=j/10;e=j%10;printf("%d%4d%4d%4d%4d\n",a,b,c,d,e);}错误原因分析:图中黄色亮显部分有错误。
C语言大作业报告范文
![C语言大作业报告范文](https://img.taocdn.com/s3/m/bcfbd3e1f605cc1755270722192e453610665b19.png)
学院XX学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 ................................................... 错误!未定义书签。
2.3函数实现 (6)2.4开发日志 (6)3 程序调试及运行 (7)3.1程序运行结果 (7)3.2程序使用说明 (8)3.3程序开发总结 (8)4 附件源程序 (8)1 摘要1.1 设计题目A求最大数;B高次方数的尾数1.2 设计内容A求555555的约数中最大的三位数; B求13的13次方的最后三位数1.3 开发工具Visual C++ 6.0和Win32..1.4 应用平台Windows XP 32位2 详细设计2.1 程序结构A求最大数定义变量a、b、c;a从100至999递增;b为555555;用b除以a;判断是否可以整除;若可以;则把a的值赋给c;a自加1;若不可;a自加1..重复以上步骤;直到a>999;输出c..循环语句采用for循环..B高次方数的尾数定义变量i、j;i从1至13递增;j初值为1..用j乘以13;用得到的乘积除以1000并取其余数;赋给j;i自加1..重复以上步骤;直到i>13;输出j..循环语句采用for循环..2.2 主要功能程序功能:A求555555的约数中最大的三位数; B求13的13次方的最后三位数..原理和方法:A题目的原理和方法:因为要求的是三位数;就用555555从小到大依次除以100到999的所有数;并判断能否整除;最后一个可以整除555555的数即为所求..循环语句采用for循环..B题目的原理和方法:乘积的最后三位数只与乘数和被乘数的后三位数有关;因此用1乘以13;再除以1000并取余数;用余数乘以13;再除以1000并取余数;依次进行下去;累乘13个13后除以1000取得的余数即为所求..循环语句采用for循环..2.3 函数实现A求最大数int a;b=555555;c; /*定义变量;赋初值*/fora=100;a<=999;a++ /*FOR循环*/{ifb%a==0 /*利用IF语句判断b是否可以被a整除*/c=a; /*将555555的约数赋给c*/}printf"%d\n";c; /*输出c*/B高次方数的尾数int i;j=1; /*定义变量;赋初值*/fori=1;i<=13;i++ /*FOR循环*/{j=j*13%1000; /*将j乘以13的乘积的后三位数赋给j*/}printf"%d\n";j; /*输出j*/2.4 开发日志A选定这个题目后;我先分析此题用何种算法完成;确定了使用FOR循环并限定除数范围;然后画出程序框图;再一步步编写源代码..调试过程很顺利;只有一个地方忘加了“;”..运行程序后;结果非常满意..B这个题目不难;但是也不简便;我想到只取三位数的方法;并使用FOR循环;然后画出程序框图;再一步步编写源代码..调试过程发现对其中一个变量的初值是1还是13有待解决;分析程序后发现应该用1;然后进一步调试;运行;直至结果正确..3 程序调试及运行3.1 程序运行结果A求最大数求得555555的约数中最大的三位数是777 B高次方数的尾数求得13的13次方的最后三位数是2533.2 程序使用说明A打开源程序;编译;连接;然后运行即可得到求得555555的约数中最大的三位数是777B打开源程序;编译;连接;然后运行即可得到13的13次方的最后三位数是2533.3 程序开发总结首先;程序开发需要耐心;从算法设计到源代码编写要一步步耐心完成..程序开发需要细心;特别是程序调试过程中;细心可以更迅速地发现错误;节省时间..最后;程序开发需要创新;创新的思路;创新的算法可以简化程序;也是程序编写更加快捷..4 附件源程序A求最大数.C工程名称:求最大数#include<stdio.h>int main{int a;b=555555;c;fora=100;a<=999;a++{ifb%a==0c=a;}printf"%d\n";c;return 0;}B高次方数的尾数.C工程名称:高次方数的尾数#include<stdio.h>int main{int i;j=1;fori=1;i<=13;i++{j=j*13%1000;}printf"%d\n";j;return 0;}。
C语言大作业报告——2048小游戏程序
![C语言大作业报告——2048小游戏程序](https://img.taocdn.com/s3/m/67c57151a1c7aa00b42acb5d.png)
《C语言程序设计》实验大作业反思报告系统设计与实现:1.系统功能模块划分对系统进行自顶向下的模块分解,画出系统各个功能模块之间的结构图如下:2.函数功能和外部接口设计本系统总计设计了13个函数,每个函数的功能和接口设计如下表所示:序号函数名函数功能函数参数函数返回值1 read_keyboard 读取键盘输入的变量无key_code2 loop_Game 游戏循环cmd 无3 reset_Game 重置游戏无无4 add_rand_num 添加随机数无随机数5 get_null_count 获取空位置数量无空位置数量n6 check_Game_over 检查游戏是否结束无if_Game_over7 Move_left 左移无If_need_add_num8 Move_right 右移无If_need_add_num9 Move_up 上移无If_need_add_num10 Move_down 下移无If_need_add_num11 clear_screen 清屏无无12 refresh_show 刷新界面无无13 init_Game 初始化游戏无无各个函数之间的调用关系如下所示:3.数据结构结构体数组+指针,链表4.算法递推,查找,文件操作5.程序流程图系统总体流程图如下:实验过程中遇到的问题及解决方法与思路:问题1:开始部分函数体和数据设置较多,导致后面程序的编写过程中出现了许多错误,例如函数名和数据名的大小写等出现错误。
原因:函数名和数据的设计为了追求简洁而无法记住其意义,并且设置过多。
解决方法:在纸上将函数名和数据名都记好,以防后面编写时出现遗忘,此外,应当按照函数名以及数据名的具体作用进行设置,而非随心所欲。
问题2:对于清屏函数clear_screen和初始化函数init的掌握不熟练,导致编写过程中有许多错误出现,编写很不规范。
原因:对于Linux相关知识掌握较少,无法使用相关函数功能。
C语言大作业报告书
![C语言大作业报告书](https://img.taocdn.com/s3/m/bc5f01c208a1284ac850438b.png)
C语言大作业报告书一、目的1)巩固练习C语言的基础知识2)综合运用C语言的编程方法3)针对抽象的解题思路,设计程序结构4)基于VC6调试、测试与修改程序二、内容2.1、阅读程序,推导结果。
1、#include<iostream>using namespace std;int a = 200;int main(){int s=0;for(int i=1; i<=5; i++)s+=++a;cout<<s<<endl;return 0;}运行结果:10152、#include<iostream>using namespace std;int a[3][3]={{1},{2},{3}};int b[3][3]={1,2,3};void main(){cout<<a[0][1] + b[1][0] << ' ';cout<<a[1][0] + b[0][1] << endl;}运行结果:0 43、#include<iostream>using namespace std;void main(){int num=0,i=10;do{i--;num+=i;}while(--i);cout<<num<<endl;}运行结果:252.2、应用编程1、由键盘输入5个整数,输出其中最大、最小的数与它们的平均值。
提示:设置2个指示变量,分别记录最大、最小的数的下标;指示变量先设置为0,然后遍历数组,刷新指示。
解:#include <iostream>void main(){int a[5],i,s=0;float arry;for(i=0;i<5;i++)cin>>a[i];for(i=0;i<5;i++){for(int j=i+1;j<5;j++){if(a[i]>a[j]){int t=a[j];a[j]=a[i];a[i]=t;}}}cout<<"最小数="<<a[0]<<endl;cout<<"最大数="<<a[4]<<endl;for(i=0;i<5;i++){s=s+a[i];}arry=s/5;cout<<"平均值="<<arry<<endl;}输入:3 4 5 7 16输出:最小数=3最大数=16平均值=72、输出以下图案。
C语言实验报告总结(共6篇)
![C语言实验报告总结(共6篇)](https://img.taocdn.com/s3/m/7afe6c5cc850ad02de804170.png)
c语言上机实验心得在科技高度发展的今天,计算机在人们之中的作用越来越突出。
而c语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好c语言,这对我们以后的发展是十分重要的。
说到这,上机实验当然就是一个必不可少的环节了,c语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。
为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。
通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了c语言那就大错特错了。
我主要存在以下的这些缺点:1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。
而在最后输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。
2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。
3、4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。
知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。
5、6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。
英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在一点问题。
为了能更好地学好c语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。
实验中我深刻意识到完成程序的编写,决不意味着万事大吉。
认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。
有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。
因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。
计算机c语言实习报告(精选18篇)
![计算机c语言实习报告(精选18篇)](https://img.taocdn.com/s3/m/824aa1e585254b35eefdc8d376eeaeaad1f31628.png)
计算机c语言实习报告(精选18篇)计算机c语言篇1软件实习硬件实习下厂实习姓名:______学号:________________班级:________________南京理工大学________________学院第一部分硬件实习(____.10.09 – ____.10.13)实习地点:校基础实验楼微机接口实验室实习内容:步进机的编程实现、a/d转换硬件实习部分考察了我们的汇编语言的掌握情况以及实际编写能力。
其中,步进电机的实现是通过编写汇编代码,经接口将信息传输到模具箱。
通过模具箱上的转动指针向左、向右或停来检验程序的正误。
原理就是,将圆划分成8段,每段两端通电流。
通过逐次为每段同电流来达到驱动指针转动,从而指针旋转。
通过电流反向就可达到反向旋转的目的。
考察了我们的汇编编写能力以及对接口技术知识的掌握,是《微机原理与接口技术》课的一次实践检验。
另外,a/d转换是要求将实验箱接收来的模拟量转换为数字量,并在显示器上显示。
在《微机原理与接口技术》课中有关于a/d转换的汇编编程,通过察看,很快就实现了该实验要求。
该部分相对简单。
在平时的学习练习中,我们多数是针对软件部分。
对于硬件部分,由于受实验器材的限制,操作较少。
这次硬件实习的经历,使我的硬件知识有了系统的组织,也使我清醒的认识到硬件知识及技能的重要性,感触良多!第二部分软件实习(____.10.23 – ____.10.26)实习地点 : 校基础实验楼软件实验室实习内容:以sql server数据库系统为核心,采用c/s结构的计算机应用系统开发(食堂饭菜销售系统)(用delphi语言开发)。
以小组(5人)为单位开发系统,分别负责:前置机、通信机、服务器、客户机1 、客户机2 。
我负责部分:担任小组组长,作系统总的需求分析,具体安排各成员的任务,以及前置机的开发。
(本报告只着重系统总体和前置机部分)食堂饭菜销售系统模拟高校学生食堂的饭菜销售、后台管理的功能。
计算机c语言实训报告(精选5篇)
![计算机c语言实训报告(精选5篇)](https://img.taocdn.com/s3/m/175c5fa16aec0975f46527d3240c844769eaa002.png)
计算机c语言实训报告(精选5篇)计算机c语言实训报告篇1一、课题名称:简单计算器设计一个简单的程序来模拟计算器的功能。
二、设计目的:1、通过理论知识与实际需求相结合,编辑解决一些日常中的实际问题,培养初步的独立分析和设计能力。
2、了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范;3、重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法;4、初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
三、设计任务:1、通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、_、等运算符号),然后将其信息存入文件中。
输入一个算术计算式,就在屏幕上显示结果。
2、输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;四、设计要求:1、用C语言实现程序设计并进行调试;2、画出查询模块的流程图;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机互交)。
5、完成设计(A4)。
五、代码设计:#include "stdio.h" main { float x,y;char operator;printf("x,yun suan fu ,y: "); scanf("%f%c%f",&x,&operator,&y); switch(operator){case '+': printf("%.2f+%.2f=%.2f",x,y,x+y); break; case '-':printf("%.2f-%.2f=%.2f",x,y,x-y); break; case '_':printf("%.2f_%.2f=%.2f",x,y,x_y); break; case '/': if(y==0) printf("chushushilingwuyiyi"); elseprintf("%.2f/%.2f=%.2f",x,y,x/y); break;default: printf("yunsunfuwuxiao"); } }?七、设计总结:学习C程序这门课一个学期了,这是我们学的第一门专业课,所以作为我这个计算机系的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个学期的学习,使我初步掌握了一些关于这门课的知识这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++)