北邮,信息工程,大二上,小学期,C语言,大作业,实验报告
- 格式:doc
- 大小:145.50 KB
- 文档页数:13
《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.利用C语言设计一个简单的计算器程序,实现简单的四则运算功能。
2.利用C语言设计一个简单的学生信息管理系统,实现添加、删除、修改和查询学生信息的功能。
三、实验步骤和代码实现1.计算器程序的设计与实现(1) 定义一个函数addition,传入两个参数,实现两数相加。
(2) 定义一个函数subtraction,传入两个参数,实现两数相减。
(3) 定义一个函数multiplication,传入两个参数,实现两数相乘。
(4) 定义一个函数division,传入两个参数,实现两数相除。
(5)在主函数中,通过用户的输入选择所需进行的运算,并输出结果。
代码如下:```C#include <stdio.h>float addition(float a, float b)return a + b;float subtraction(float a, float b)return a - b;float multiplication(float a, float b)return a * b;float division(float a, float b)if (b == 0)printf("Divisor cannot be zero!\n");return 0;}return a / b;int maiint choice;float num1, num2;printf("Please enter two numbers: ");scanf("%f%f", &num1, &num2);printf("Please choose the operation (1:addition, 2:subtraction, 3:multiplication, 4:division): ");scanf("%d", &choice);switch (choice)case 1:printf("The result is: %.2f\n", addition(num1, num2)); break;case 2:printf("The result is: %.2f\n", subtraction(num1, num2)); break;case 3:printf("The result is: %.2f\n", multiplication(num1, num2)); break;case 4:printf("The result is: %.2f\n", division(num1, num2)); break;default:printf("Invalid choice!\n");break;}return 0;```2.学生信息管理系统的设计与实现(1) 定义一个结构体Student,包含学生的姓名、学号、年龄等信息。
c语言实验报告(附答案版)实验一、这个实验需要4学时才能完成。
2、目标1。
阅读程序问题1简单确定性问题解决(1)掌握c语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;(2)掌握不同类型数据之间的分配规律;(3)掌握存储器中数据的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学习使用算术运算符、逻辑运算符、关系运算符以及包含这些运算符的表达式。
2、编程题(1)如何使用if-else决策结构进行编程;(2)如何使用开关决策结构进行编程。
3.调整试题(1)熟悉c程序的编辑、编译、连接和运行的过程。
三、实验指导为了达到最佳的实验效果,以下提供了几种适合编程的指南供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。
2.编程问题必须先画流程图,反复思考,判断程序设计的正确性,完成程序设计。
应注意简单确定性问题的结构选择。
3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。
对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。
-1-四、实验内容1、阅读程序题(1)main(){/*定义字符变量*/charc1,C2;/*为字符变量分配整数*/C1=97;C2=98;printf(\/*以字符形式输出*/printf(\/*以整数形式输出*/}该程序的输出结果是ab(换行)9798。
思考:可以改成intc1、C2吗;输出是什么?完全相同的(2)main(){inta=7,b=5;printf(\}该程序的输出结果是0。
思考:如果将printf语句中的%d更改为%F,可以输出分数的值吗?当然(3)main(){inta=9;a+=a-=a+a;/*包含复合赋值运算符*/printf(\}该程序的输出结果是-18。
实验名称:程序设计实验实验时间:2023年X月X日实验地点:北邮计算机实验室一、实验目的1. 熟悉C语言编程环境,掌握基本的程序设计方法。
2. 通过实际编程,提高逻辑思维和问题解决能力。
3. 理解算法设计的重要性,掌握常用的算法设计方法。
二、实验内容本次实验主要分为以下几个部分:1. 编写一个计算两个整数相加的程序。
2. 编写一个计算两个整数相减的程序。
3. 编写一个计算两个整数相乘的程序。
4. 编写一个计算两个整数相除的程序(要求考虑除数为0的情况)。
5. 编写一个判断两个整数是否相等的程序。
三、实验步骤1. 打开C语言编程环境,创建一个新的项目。
2. 编写计算两个整数相加的程序:```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数相加的结果为:%d\n", sum); return 0;}```3. 编写计算两个整数相减的程序:```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sub = a - b;printf("两个整数相减的结果为:%d\n", sub); return 0;}```4. 编写计算两个整数相乘的程序:```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);mul = a b;printf("两个整数相乘的结果为:%d\n", mul);return 0;}```5. 编写计算两个整数相除的程序(考虑除数为0的情况):```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0,请重新输入。
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;}```五、实验结果经过多次测试,本系统能够稳定运行,实现了预期的各项功能。
在(A)题目中,我限定了除数的范围,减少了计算次数,省去了比较约数大小的步骤,使程序更加简洁。
在(B)题目中我没有拿13累乘13次,而是取每一次乘13所得乘积的最后三位数依次乘13,大大减少了计算,简化了程序;取最后三位数我利用除以1000 取余数的方法,方便、快捷。
两个题目中均使用FOR循环,程序书写简练明了。
我个人认为这两个题目我不编写得比较简洁,运算结果正确,很好地完成了题目要求。
目录1 摘要 (5)1.1设计题目 (5)1.2设计内容 (5)1.3开发工具 (5)1.4应用平台 (5)2 详细设计 (6)2.1程序结构 (6)2.2主要功能......................................................... 错误!未定义书签。
2.3函数实现 (9)2.4开发日志 (10)3 程序调试及运行 (10)3.1程序运行结果 (10)3.2程序使用说明 (12)3.3程序开发总结 (12)4 附件(源程序) (12)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次方的最后三位数。
北邮,信息工程,大二上,小学期,C语言,大作业,实验报告北京邮电大学信息与通信工程学院10级小学期C程序设计实践实验报告题目:实验室物料管理系统班级:班姓名:学号:手机号:邮箱:一.功能描述:1.基本功能:(1)添加记录能够添加一条或多条记录,记录包括物料类别、名称、型号、价格、库存等数据。
(2)显示记录显示当前所有记录。
(3)更新记录能够修改已存在记录的信息,可按型号选择要更新的纪录并且选择更新的方式。
(4)删除记录实现删除指定型号记录的功能。
(5)查询记录实现按型号查找的基本功能。
(6)保存文件存储所有记录到文本文档wrecord.txt。
(7)读取文件从rrecord.txt读入所有记录,同时能实现在读入后继续添加记录并执行操作。
(8)统计总量能实现将各类别记录的库存总量存入文本文件total.txt的功能。
(9)排序实现基本功能的按库存量顺序排序,并且存储到文件。
(10)退出系统结束软件操作,释放内存后退出。
2.扩展功能:(1)统计时加入借出量的统计,使物料管理更健全。
(2)进入时需要输入用户名和密码,通过区分采购员和教师给与用户不同的功能使用权限,使程序的针对性更强。
(3)可以选择按照单价或型号进行查找,并给与用户随时退出到主菜单的选项。
(4)可以选择按照库存量或单价进行排序,并将结果打印。
二.数据结构描述:struct info{int type_a;//类型,因为是1到5,所以采用int型变量char name_b[10000];//名称char model_c[10000];//型号,因为二者都可能是字符数字混合,所以采用char型变量float price;//价格,有可能精确到分,所以选择float型变量,并且保留两位显示int inside;//库存int outside;//借出struct info *next;};三.程序模块描述:1.void buy(void);和void use(void);分别对应两种权限的使用者:采购员和实验室老师。
北邮信号与信息系统实习报告一、实习背景作为北邮信号与信息系统专业的学生,为了更好地掌握实际工作的技能和流程,我选择了去科技公司进行实习。
在这次实习中,我所在团队主要从事软件开发和维护工作,接触到了各种实际问题,并通过与团队的合作不断提升自己的技能。
二、实习内容1.软件需求分析与设计:在实习的第一个月,我们团队接到一个新的项目,我负责对项目需求进行分析和设计。
这个项目需要开发一个移动端的应用程序,用于用户查询和管理个人信息。
我与团队成员一起进行了需求讨论,然后根据需求编写了相应的需求规格文档和软件架构设计文档。
这个过程让我了解了软件开发的全过程,从需求分析到架构设计的各个环节。
2. 软件开发与测试:在需求分析和设计完成后,我开始参与软件的具体开发工作。
我们团队采用了敏捷开发的模式,每个人负责不同的模块开发。
我负责实现用户登录和注册模块,并参与了其他模块的开发和测试工作。
在这个过程中,我熟悉了使用各种开发工具和技术,如Android开发平台、Java编程语言等,并学会了编写规范的代码和进行测试。
3. 软件维护与优化:在软件开发完成后,我们团队需要对软件进行维护和优化。
我参与了对现有系统的功能完善和bug修复工作,并研究了一些新的技术来提升系统的性能和稳定性。
通过这个阶段的实习,我对软件的维护和优化有了更深入的了解,并学会了如何利用新技术来改进现有系统。
三、实习收获通过这次实习,我不仅学到了很多实际工作中的知识和技能,还提升了自己的解决问题和团队合作能力。
具体来说,我收获如下:1.学会了需求分析和设计的方法和技巧,能够将抽象的需求转化为具体的设计方案。
2.熟悉了软件开发的全过程,包括开发、测试、维护等各个环节,了解了软件工程的基本原理。
3.提高了与团队成员合作的能力,学会了如何有效地与他人进行沟通和协作。
4.增强了问题解决能力,学会了分析和解决实际问题的方法。
5.增强了对软件开发的兴趣和热情,对自己的专业方向更加明确。
实验名称:编程基础实验实验日期:2023年X月X日实验地点:北邮计算机实验室实验指导教师:XXX老师实验目的:1. 熟悉编程环境,掌握基本的编程技能。
2. 理解编程的基本概念和语法规则。
3. 培养逻辑思维和问题解决能力。
实验内容:本次实验主要涉及以下几个方面:1. 编程环境搭建2. 基本语法学习3. 编程实践实验步骤:一、编程环境搭建1. 安装编程软件:首先,在北邮计算机实验室的计算机上安装了Visual Studio Code,这是一个功能强大的代码编辑器,可以支持多种编程语言。
2. 配置环境变量:为了方便调用编程软件,我们将环境变量设置好,使得在命令行中输入软件名称即可启动。
二、基本语法学习1. 数据类型:学习了整型、浮点型、字符型等基本数据类型,并掌握了它们的特点和适用场景。
2. 运算符:了解了算术运算符、关系运算符、逻辑运算符等,并学会了如何使用它们进行简单的计算和判断。
3. 控制语句:学习了if-else语句、for循环、while循环等,掌握了如何控制程序的执行流程。
4. 函数:了解了函数的定义、调用和参数传递,学会了如何封装代码,提高代码的可读性和可重用性。
三、编程实践1. 编写计算器程序:根据所学知识,编写了一个简单的计算器程序,实现了加减乘除等基本运算。
2. 编写排序算法:学习了冒泡排序、选择排序、插入排序等基本排序算法,并实现了它们的代码。
3. 编写学生信息管理系统:根据实际需求,设计并实现了一个学生信息管理系统,包括添加、删除、修改和查询学生信息等功能。
实验结果:通过本次实验,我成功完成了以下任务:1. 熟悉了编程环境,掌握了基本的编程技能。
2. 理解了编程的基本概念和语法规则。
3. 培养了逻辑思维和问题解决能力。
实验总结:1. 编程环境搭建:在北邮计算机实验室,我成功安装了Visual Studio Code编程软件,并配置了环境变量。
2. 基本语法学习:通过学习,我掌握了数据类型、运算符、控制语句和函数等基本语法,为后续编程实践打下了基础。
北邮实习报告5篇北邮实习报告篇1总结:大学三年的生活已经结束,在这个暑假学校安排我们进行了专业实习,但是我理解的实习并不是这样子的,我原来想象的是我们会做一些真正和以后工作紧密相关的实习,进入到真正的运营商或者设备商什么的,看看实际生活中我们这些通信业的准专业人士到底是怎么去工作。
可是由于实际情况,我们被分配到学校的全程全网实习基地,在这里我们进行了为期8天的实习工作,同样我们也了解到了许多原来在书本上不曾知道的知识。
印象最深的是吴建伟老师给我们在最后一节课和所来的同学进行了深入的交流,大家就以后毕业找工作还是选择读研进行了讨论,老师说我们现在必须进行很好的自我剖析,对自己进行自我评价然后设定自己的职业规划,要根据自己的实际情况,不能盲目地去追随大流,老师问我们有没有谁在大学这三年将一件事一直坚持着,老师说他在大学期间每天坚持早起锻炼身体,告诉我们要去坚持做一件自己认为很有意义的事。
另外老师在第一节课的时候就告诉我们四句话:树立职业意识、培养职业素质、积累职业经验、掌握职业技能,这四句话我们必须全方位深入的去理解,而不能像那么肤浅的草草了事,其中蕴含的道理是非常丰富的,是我们成为一个真正的职场人所必须具有的,同样也是我们在平时对待知识所应有的态度。
一个人的职业生涯是个漫长的过程。
很遗憾的是现今像我们这样的很多大学毕业生直到找到第一份工作为止,也没有很明确的职业生涯发展意识,更不用说做一份完整的职业生涯规划了。
大学生对自己的发展规划并不明确,对于未来的规划与自己人生的发展方向都不明确,这种情况将导致找工作比较随意,目的性不强,对于平时的学习更是没有很好的目标。
要找到满意的工作,决胜点在于长期的点滴积累,令人担忧的是许多大学生没有注重有计划的在生活中培养自己真正有发展有潜力的一面,因而大学生树立职业生涯规划意识非常必要。
当我们树立了这样的职业生涯意识后,我们应该更好地培养职业素质,职业素质培养的重要性就是共识,也是企业对职场人的基本要求。
实验报告计算机学院2010211312班10211490实验一简单C++程序设计一、实验目的:1、熟悉C++编程环境,掌握在Dev-C++开发环境下编写、编译、调试和执行C++程序的方法。
2、掌握C++基本语法、数据类型和程序控制结构,能够编写简单C++程序。
二、实验内容和要求:1、猜价格游戏编写C++程序完成以下功能:(1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);(2)提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户做出相应的提示;(3)直到猜对为止,并给出提示。
三、算法设计思路:以时钟作为随机种子产生随机数并将其约束在1-1000范围内,座位商品价格供用户猜。
提示用户输入,根据用户输入的答案与正确价格比较提示用户重新输入,直到猜出正确价格时终止循环,并给出正确提示。
四、实验总结。
初步体会C++编程的语法特点,感悟与C的不同之处。
在助教提示下及时改正,产生1-1000之间的随机数应使用语句rand ()%1000+1而非rand()%1000,否则只能产生0-999,体会细节的重要。
实验二类与对象一、实验目的:1、理解面向对象程序设计的基本思想。
2、掌握面向对象程序设计的重要概念——类和对象。
3、掌握用类分析问题的基本方法,并用C++编程实现。
二、实验内容和要求:1、矩形编写C++程序完成以下功能:(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;(2)定义一个矩形类,其属性包括左上角和右下角两个点,提供计算面积的方法;(3)创建一个矩形对象,提示用户输入矩形左上角和右下角的坐标;(4)观察矩形对象以及Point类成员的构造函数与析构函数的调用;(5)计算其面积,并输出。
2、友元编写C++程序完成以下功能:(1)定义一个Boat和Car两个类,他们都具有私用属性——重量;(2)编写一个函数,计算两者的重量和。
double TotalWeight(Boat& b, Car& c);三、算法设计思路1、定义point类,其中包含计算两点间距离的方法,即两点间坐标公式。
实验报告实验报告撰写要求一、实验前用预习报告纸撰写预习报告,预习报告包括以下内容1.实验目的2.实验用仪器设备、器材或软件环境3.实验原理、方案设计、程序框图、预编程序等4.实验过程中需要记录的实验数据表格二、实验过程中,要认真观察,仔细记录三、完成实验后用实验报告纸撰写实验报告,包括以下内容1.仪器设备型号及编号2.实验器材或软件环境3.实验步骤、程序调试方法4.实验数据处理及结果分析5.实验中存在的问题6.体会及思考题四、报告撰写时,要求格式规范、书写整齐预习报告成绩:指导教师审核(签名):年月日预习报告实验一循环、数组、函数和结构体程序设计一、实验目的(1)掌握结构类型变量的定义和使用。
(2)掌握结构类型数组的概念和使用。
(3)掌握用指针访问结构体的方法。
(4)掌握利用结构体进行函数参数的传递。
二、实验用仪器设备、器材或软件环境实验用仪器设备:Windows XP;软件环境: Turbo C 2.0三、实验题目:有10个学生,每个学生的数据包括学号、姓名及3门课的成绩、总成绩和平均成绩,从键盘输入10个学生的数据(包括学号,姓名,及3门课的成绩),要求打印出每位学生的学号,姓名,3门课成绩,总成绩和平均成绩,最后再打印出3门课的平允成绩以及最高分的学生的数据(包括姓名和总成绩)。
四、实验要求:1)根据学生信息定义一个机构体类型,再说明一个结构体类型的数据。
2)用input函数从键盘上输入10个学生的数据;3)用average函数求出每位学生的总成绩、平均成绩和所有学生的总平均成绩;4)用maximum函数找出最高分的学生的数据;5)在主函数中输出每个学生的学号,姓名,3门课的成绩、赞颂成绩和平均成绩以及总平均分和最高分学生的数据;五、实验原理:利用结构体、函数的调用和指针的传输等原理进行实验。
六、方案设计:首先定义一个结构体,用来存储信息;定义一个主函数,用来输出各项结果;定义一个input函数用于输入各项信息;定义一个average函数用于求平均值和总分;定义一个maximum用于求总的平均值;七、程序框图:(见第4页)八、预编程序:#include<stdio.h>#include<conio.h>#define N 10struct student{int num;char name[20];int score1;int score2;int score3;int total;float aver;};input(){int i;for(i=0;i<N;i++)scanf("%d%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);}float average(){int sum1=0,i;for(i=0;i<N;i++){stu[i].total=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].aver=stu[i].total/3;sum=sum1+stu[i].total;}sum1=sum1/(3*N);return(sum);}maximum(){int max=stu[0].total,i;char nam[10];strcpy(nam,stu[0].name);for(i=0;i<N;i++)if(stu[i].total>max){max=stu[i].total;strcpy(nam,stu[i].name);}printf("The hightest score:%s,score total=%d\n",nam,max);}main(){int i;float aver=0;input();aver=average();printf("num\tname\tscore1\tscore2\tscore3\ttotal\taverage\n"); printf("==================================\n");for(i=0;i<N;i++){printf("%-3d",stu[i].num);printf("%8s",stu[i].name);printf("%8d%8d%8d",stu[i].score1,stu[i].score2,stu[i].score3); printf("%10d",stu[i].total);printf("%14.2f\n",stu[i].aver);}printf("average=%4.2f\n",aver);maximum();getch();}九、实验过程中需要输入的实验数据: number name Score1 Score2 Score3 101 wang 78 90 91 102 duji 82 89 90 103 renz 87 90 92 104 zouh 90 93 95 105 yuzh 98 93 81 106 qinx 90 98 80 107 yong 95 82 78 108 haoh 89 85 90 109 heih 92 91 86 110 meih988784程序框图:NNY Y N Y开始输入s1,s2,s3i=0i=0 i=0i<N i<N,max<p[i].total i<N实验报告成绩: 指导教师审核(签名): 年 月 日实验报告实验一 循环、数组、函数和结构体程序设计一、仪器设备型号: 计算机 E 30 二、实验软件环境:Window xp ;turbo C 2.0 三、实验步骤及程序调试方法:先定义个结构体,再把main 函数、input 函数、average 函数、maximum 函数写出来,然后再对函数进行补充;对于main 函数我们要利用循环结构将其结果输出来并且实现对其他几个函数的调用;对于input 函数我们同样要用循环结构进行各项的信息输入;对于average 函数我们要利用它来求平均值和总分;对于maximum 函数而偶们要用它来求总的平均值。
C++实验课总结张涛实验一:简单c++程序设计一、1、猜价格游戏编写C++程序完成以下功能:(1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);(2)提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;(3)直到猜对为止,并给出提示。
#include<iostream>#include<time.h>using namespace std;//使用命名空间std.int main(){srand(time(NULL));//将时钟数作为随机数种子int price,guess;price = rand() % 1000 + 1;//取余,获得1~1000的随机数cout << "please input the price:" << endl;do{cin >> guess;//记录玩家所输入数值if(guess > price)cout << "The price is lower than your guess,please input the price again:" << endl;if(guess < price)cout << "The price is higher than your guess,please input the price again:" << endl;//给予玩家比较大小的提示}while (guess != price);//循环结构cout << "The price you give is right.It cost " << price << "." <<endl;//获得正确答案system("pause");return 0;}2、计算N 以内的所有素数编写C++程序完成以下功能:(1)提示用户输入N;(2)计算出从2到N之间的所有素数;(3)将结果保存在一个文本文件中。
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语言大实验报告《C 语言大实验报告》一、实验目的本次 C 语言大实验的目的在于通过实际的编程项目,深入巩固和应用 C 语言的基础知识,提高编程能力和解决实际问题的能力。
同时,培养良好的编程习惯和代码规范,为今后的学习和工作打下坚实的基础。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容本次大实验共包括三个主要部分:1、学生成绩管理系统设计要求:能够实现学生成绩的录入、查询、修改、删除等功能。
实现思路:首先,定义学生结构体来存储学生的相关信息,如学号、姓名、各科成绩等。
然后,通过数组来存储多个学生的结构体数据。
使用函数来实现不同的功能模块,如录入函数、查询函数、修改函数和删除函数等。
关键代码:```ctypedef struct {int id;char name20;float score3;} Student;Student students100; //定义学生数组void inputStudent(Student s) {printf("请输入学号:");scanf("%d",&s>id);printf("请输入姓名:");scanf("%s", s>name);printf("请输入三门课成绩:");scanf("%f %f %f",&s>score0, &s>score1, &s>score2);}void queryStudent(int id) {int i;for (i = 0; i < 100; i++){if (studentsiid == id) {printf("学号:%d 姓名:%s 成绩:%2f %2f %2f\n", studentsiid, studentsiname, studentsiscore0, studentsiscore1, studentsiscore2);return;}}printf("未找到该学生\n");}```2、图书管理系统设计要求:能够对图书的信息进行管理,包括图书的录入、借阅、归还等功能。
大学c语言实验报告大学C语言实验报告引言计算机科学与技术专业的学生在大学期间都会学习C语言这门编程语言。
C语言是一种高级程序设计语言,广泛应用于系统软件和应用软件的开发中。
在学习C语言的过程中,实验是不可或缺的一部分。
本文将对大学C语言实验进行探讨,包括实验目的、实验内容、实验过程和实验心得。
实验目的C语言实验的主要目的是培养学生的编程能力和解决问题的能力。
通过实验,学生可以掌握C语言的基本语法、数据类型、控制结构和函数等知识,理解程序的执行过程,培养编写高效、健壮的程序的能力。
实验内容C语言实验的内容通常包括以下几个方面:1. 基本语法:学生需要掌握C语言的基本语法,包括变量的声明和赋值、运算符的使用、条件语句和循环语句的编写等。
2. 数据类型:C语言提供了多种数据类型,如整型、浮点型、字符型、数组和结构体等。
学生需要了解各种数据类型的特点和使用方法,并能够灵活运用。
3. 函数:函数是C语言中的重要概念,学生需要学会如何定义函数、调用函数和传递参数。
同时,学生还需要了解函数的返回值和作用域等相关知识。
4. 文件操作:C语言提供了文件操作的函数库,学生需要学会如何打开文件、读写文件和关闭文件等操作。
实验过程在进行C语言实验之前,学生需要先了解实验要求和实验环境。
通常,学校会提供一台配置好的计算机,并安装好相应的编译器和调试器。
在实验过程中,学生需要按照实验要求进行编码。
首先,学生需要分析实验题目,理解问题的要求。
然后,学生可以使用编译器编写程序,并进行调试。
调试过程中,学生需要逐步检查程序的运行结果,定位错误并进行修正。
最后,学生需要对程序进行测试,验证程序的正确性和健壮性。
实验心得通过参与C语言实验,我深刻体会到了编程的乐趣和挑战。
在实验过程中,我不仅学到了C语言的基本知识,还培养了解决问题的能力和团队合作精神。
首先,实验让我了解到编程是一项需要耐心和细心的工作。
在编写程序的过程中,我需要仔细思考每一行代码的含义和作用,避免出现错误。
北京邮电大学信息与通信工程学院10级小学期C程序设计实践
实验报告
题目:实验室物料管理系统
班级:班
姓名:
学号:
手机号:
邮箱:
一.功能描述:
1.基本功能:
(1)添加记录
能够添加一条或多条记录,记录包括物料类别、名称、型号、
价格、库存等数据。
(2)显示记录
显示当前所有记录。
(3)更新记录
能够修改已存在记录的信息,可按型号选择要更新的纪录并
且选择更新的方式。
(4)删除记录
实现删除指定型号记录的功能。
(5)查询记录
实现按型号查找的基本功能。
(6)保存文件
存储所有记录到文本文档wrecord.txt。
(7)读取文件
从rrecord.txt读入所有记录,同时能实现在读入后继续添
加记录并执行操作。
(8)统计总量
能实现将各类别记录的库存总量存入文本文件total.txt的
功能。
(9)排序
实现基本功能的按库存量顺序排序,并且存储到文件。
(10)退出系统
结束软件操作,释放内存后退出。
2.扩展功能:
(1)统计时加入借出量的统计,使物料管理更健全。
(2)进入时需要输入用户名和密码,通过区分采购员和教师给与
用户不同的功能使用权限,使程序的针对性更强。
(3)可以选择按照单价或型号进行查找,并给与用户随时退出到
主菜单的选项。
(4)可以选择按照库存量或单价进行排序,并将结果打印。
二.数据结构描述:
struct info
{
int type_a;//类型,因为是1到5,所以采用int型变量
char name_b[10000];//名称
char model_c[10000];//型号,因为二者都可能是字符数字混合,所以采用char型变量
float price;//价格,有可能精确到分,所以选择float型变量,并且保留两位显示
int inside;//库存
int outside;//借出
struct info *next;
};
三.程序模块描述:
1.void buy(void);和void use(void);
分别对应两种权限的使用者:采购员和实验室老师。
在屏幕上显示菜
单,通过输入0-X之间的数字调用相应的功能函数。
2.add()
在链表尚不存在的情况下,逐个输入物料记录信息,如类别、物料名
称、型号、数量等。
(1)假设新创建链表时只增加库存数量而缺省地
保持借出数量为0;(2)申请内存空间,验证输入数据是否符合要求,
设置输入结束标志。
3.printlist()
显示当前链表中的所有记录,即每种物料的库存和借出情况。
4.update()
根据物料外借、归还、后续购买或报废等不同情况进行物料信息的更
新。
例如,当外借物料时,需要根据借出的数量,减少库存数量而增
加外借数量;当归还物料时,增加库存而减少外借数量;当后续购买
库存已有的物料时,需要增加库存信息而保持外借数量不变;当报废
已借出的物料时,需要减少外借数量而保持库存信息不变。
5.delate()
删除指定型号的物料记录并释放该记录占用的内存空间。
6.find()
按型号查找并显示记录。
并扩展为可以选择按照单价或型号进行查找。
7.save()
将物料信息保存到指定文件(wrecord.txt)中。
8.load()
从指定的文件(rrecord.txt)中读入所有物料记录。
9.quit()
结束软件操作,释放内存后退出。
10.s um()
统计各类别物料的库存数量并保存到文件total.txt中。
11.s ort()
根据库存数量进行排序。
并扩展为可以选择按照库存或单价进行排序。
12.s truct info * search(struct info *p,char c[]);
找到符合条件的记录,并返回它的首地址,如没有符合项则返回NULL。
13.i nt login(void);
在进入功能界面前,输入用户名与密码,确定其使用权限,分别返回0或1以进入不同的界面。
我完成的模块主要是:除登录,显示,更新,退出外的其他功能. 1.添加记录
先新开一个结构体变量并初始化,输入其内容时判断这是不是输入的结尾,若不是,则讨论现在链表存在否,并分情况将之链上,同时通过全局变量*head,*p1,*p2定位、count++使得之后的函数都能正确的访问建好的链表。
2.菜单系统
用switch函数来实现不同功能的选择,同时在输入的值是无效时报错、清空键盘缓冲区并提示重新输入。
因为有两类用户,所以设计两个界面。
3.删除记录
先通过遍历链表,找到要删除的记录,同时保存目标记录的前一条记录,如果遍历到结尾还没有,则重新初始化变量*p和*pre,重新再找;若找到,分情况讨论要删除的记录的位置,并且将其前后记录链起来(或将*head后移一个),并释放要删除节点的空间。
在输入型号时设置了退出到主菜单的出口。
4.查询记录
与delate()的算法基本相同,只是不用定位目标记录的前一条记录,而且只要在找到后打印既可。
同样设计了一个出口,供误选此功能的人退出。
且通过switch函数可以选择查询的关键词。
5.保存文件
在遍历链表的同时使用fprintf函数将当下记录写入文件,循环条
件由全局计数器count确定,因此之前对链表中记录条数产生影响的操作都必须同时改变count的值。
6.读取文件
算法与save()基本相同,只是在每次读取类型时要先存入缓冲变量,待确定不是停止标记后再写入链表,而在写入时也要判断是否为第一条记录,算法参考add(),结尾时要将*p2的位置调整到和add()结束后一样的地方,即:
p2->next = p1;
这样才能保证读取后还能继续操作。
7.统计总量
遍历链表,同时统计各类型物料记录的库存总量和借出总量并存入数组sum1[5]和sum2[5],在结尾时用循环嵌套fprintf函数将结果存入文本文档total.txt。
8.排序
采用选择排序算法,沿着*head定位的链表遍历,找到库存最大的一条记录,并保存它前一条记录,用*newhead,*newp2来给这条记录赋予新的位置,再将它从旧链上拆下,前后再链起来,如此往复,直到全部排完。
注意要将原来的*p2=*newp2,保证后面可以继续对排序后的链表进行操作。
结尾打印既可。
通过
switch函数可以选择排序关键词。
9.退出系统
循环释放内存空间,注意要先定位到下一条记录再释放。
四. 主要功能块流程图
五. 功能测试记录
1.
登录界面
2.采购员功能表
3.教师功能表
4.添加新纪录
5.更新记录
6.删除记录
7.查询记录
(1)按单价
(2)按型号
8.排序
(1)按价格
(2)按库存
六.调试中遇到的问题
在程序的调试过程中,我们处理了很多问题,例如在各组员完成函数设计的过程中,有许多知识要点是以前没有涉及的,需要我们边学习边完成程序设计,如按格式输入到文件;同时,在将各个组员完成的模块组合后我们发现调试过程中出现了许多由于组员没有及时沟通交流而产生的问题,例如各自定义的变量不一致,导致组合程序时,需要花费很大功夫统一变量,甚至将已经编好的函数弃置不用而重新再编;还有就是一些编程中的细节问题,例如少个等号少个分号,我们经常因为这一点小小的又不容易发现的东西影响程序的运行。
七.心得体会
通过这次小学期的C程序实践实验,我对C语言的程序设计和算法有了
新的认识和了解,对链表指针的运用也更加娴熟,通过用所学知识和组员一同完成程序实践,使我有了用C语言编写小程序的经验,增强了我编
写程序的能力。
在设计实践的过程中,一次次的调试使我逐渐了解到编写程序的付出和辛苦,和极度需要的细心与毅力。
这为期两周的编程实践对我以后的学习有很多的帮助。