C程序设计大作业(含源代码).doc

合集下载

C++课程大作业

C++课程大作业

C++课程大作业——文章关键词检索及匹配度计算XXXX学院学号:1234567姓名:刘黄书指导教师:猪哥亮一、课题介绍:本课题是一次对编程知识的应用。

通过对所学内容的应用,解决对文章关键字的检索及匹配度的计算这一实际应用。

难点在于对文章中单词的提取与比较和对于匹配度算法的设计。

本课题有如下需求:1、对关键字的检索、比较与替换。

2、对文章与关键字匹配度的计算。

本课题的意义在于通过对数组、自定义函数、数组函数的使用,解决实际生活中可能存在的问题,并加深对所学知识的理解。

同时,也检验了之前的学习效果。

二、任务总体思路:遍历文章:在遍历时确定分隔符,遇到分隔符,直接复制该字符,遇到非分隔符,判断它的前一个字符是否为分隔符,如果是,文章总词数加一,同时提取单词,直到再次遇到分隔符,提取结束。

用提取到的单词与用户输入的关键词比较:查到关键词,统计每个关键词出现次数,同时替换关键词;未查到关键词,直接复制该单词。

遍历结束打印关键词出现次数,计算并打印匹配度,打印替换后的新文章。

三、关键函数及功能设计描述:关键函数:1、匹配度计算函数:double measure(float weightWord[],float numArticle){double pipeidu;if(weightWord[0]!=0&&weightWord[1]!=0&&weightWord[2]!=0) pipeidu=(weightWord[0]+weightWord[1]+weightWord[2])/numArticl e;//当文中三个关键词个数都不为零的情况else{if(weightWord[0]==0&&weightWord[1]!=0&&weightWord[2]!=0||w eightWord[1]==0&&weightWord[0]!=0&&weightWord[2]!=0||weightWo rd[2]==0&&weightWord[1]!=0&&weightWord[0]!=0)pipeidu=(1.0/2)*(weightWord[0]+weightWord[1]+weightWord[2])/nu mArticle;//其中有一个关键词个数为零的情况elsepipeidu=(1.0/4)*(weightWord[0]+weightWord[1]+weightWord[2])/nu mArticle;//有两个及以上关键词个数为零的情况}return pipeidu;}说明:当三个关键词都出现时匹配度应该最高,所以计算只出现2个或1个关键词时分别乘了1/2,1/4,以避免单个关键词出现频率过高而是匹配度太高的情况。

C++成绩管理系统实验报告(含源代码)【新版精品资料】

C++成绩管理系统实验报告(含源代码)【新版精品资料】

《面向对象的程序设计》大作业题目:学生成绩管理系统物联网工程学院学院计算机科学与技术专业学号: **********学生姓名:***班级:计科1105班成绩:2012年6月学生成绩管理系统一、需求分析:1学生信息录入功能用户从键盘输入每个学生的信息:学号、姓名、数学、英语、数据结构、物理四科成绩。

2学生成绩查询功能用户可以按学号或者姓名查询学生的信息。

3学生成绩输出功能用户可以通过这个功能实现对所有学生成绩的浏览。

4学生信息修改功能用户可对学生的信息进行修改。

5学生信息删除功能用户可删除学生的成绩信息。

6 学生成绩的排序功能用户可以对学生成绩排序。

二、概要设计学生的信息用结构体来存储,把要实现的功能封装在一个类里面,最后在主函数里通过选择语句对类中相应的功能函数调用,从而实现学生成绩的管理。

三、详细设计1.构造学生信息结构体存储学生信息学生信息包括:姓名,学号,数学,英语,数构,物理,总分,平均分等信息。

构造代码如下:struct Student //声明一个名为student的结构体类型{string name;//姓名string number;//学号double maths; //数学double english;//英语double datastruct;//数构double physical; //物理double total; //总分double average;//均分};2. 系统功能函数类的设计把该系统要实现的功能封装在此类中,方便增加和修改。

在本系统中设计了七个函数分别实现学生成绩的录入,查询,输出,修改,删除,求总分和平均分.其代码如下::class SYSTEM //声明类system{public:SYSTEM(){n=0;} //构造函数void add();//添加void show();//显示void search();//查询void change();//修改void delet();//删除void sort();//排序void Max();//最高分void Min();//最低分private:Student stu[1000];//定义一个结构体类型student的变量stuint n;};各功能函数代码如下:(1)学生信息输入函数add()void SYSTEM::add()//添加{cout〈〈”学号:"〈〈endl;cin〉〉stu[n].number;cout〈〈”姓名:"〈<endl;cin>〉stu[n]。

结构力学程序大作业报告(附程序代码)

结构力学程序大作业报告(附程序代码)

结构力学程序大作业报告一.题目要求要求编写连续梁内力计算程序。

二.程序总框图三.程序变量声明NE——单元总数N——节点转角未知量总数BL(NE)——单元杆长数组2EI(NE)——单元抗弯刚度数组,后存单元线刚度P(N)——等效节点荷载数组,后存节点转角KE(N,2)——整体刚度矩阵数组JD(NE,2)——单元定位向量数组FM(NE,2)——单元固端弯矩数组FJ(NE,2)——单元杆端弯矩数组四.程序源代码见附件,或者所附的Matlab文件。

五.程序算例例题一:输入单元总数:6输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]输入单元定位向量:[1,2;2,3;3,4;4,5;5,6;6,0]输入单元固端弯矩:[-10.667,10.667;-9,9;-6,6;-21.333,21.333;-3,3;-18,18]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:1 232 33 44 55 66 0单元固端弯矩:-10.6670 10.6670-9.0000 9.0000-6.0000 6.0000-21.3330 21.3330-3.0000 3.0000-18.0000 18.0000确认输入数据正确(Y/N):Y输入直接节点力矩:[0,0,-8,0,10,0]节点转角未知量总数: 6直接节点力矩: 0 0 -8 0 10 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.2500 折算固端弯矩后的节点荷载:10.6670 -1.6670 -11.0000 15.3330 -8.3330 15.0000单元节点位移:11.3842 -1.4345 -8.9803 14.0534 -10.1918 10.0480单元杆端弯矩0 14.9246-14.9246 -0.6976-7.3024 12.3755-12.3755 18.167945-8.1679 7.9520 -7.9520 23.0240做弯矩图:例题一结构弯矩图例题二:计算结果: 输入单元总数:6输入单元杆长:[4,6,6,8,4,6] 输入单元抗弯刚度:[1,1.5,1,2,1,1.5] 输入单元定位向量:[0,1;1,2;2,3;3,4;4,5;5,6]输入单元固端弯矩:[-10.667,10.667;-9,9;-6,6;-21.333,21.333;-3,3;-18,18] 单元数: 67单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:0 11 22 33 44 55 6单元固端弯矩:-10.6670 10.6670-9.0000 9.0000-6.0000 6.0000-21.3330 21.3330-3.0000 3.0000-18.0000 18.0000确认输入数据正确(Y/N):Y输入直接节点力矩:[0,-8,0,10,0,0]节点转角未知量总数: 6直接节点力矩: 0 -8 0 10 0 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.2500 折算固端弯矩后的节点荷载:-1.6670 -11.0000 15.3330 -8.3330 15.0000 -18.0000单元节点位移:1.6865 -10.0801 14.8707 -12.1830 17.1951 -26.5976单元杆端弯矩6-9.8237 12.3535-12.3535 -0.2368-7.7632 12.5538-12.5538 16.5854-6.5854 14.1037-14.1037 0弯矩图:例题二结构弯矩图例题三:计算结果:输入单元总数:6输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]7输入单元定位向量:[0,1;1,2;2,3;3,4;4,5;5,0]输入单元固端弯矩:[-10.667,10.667;-9,9;-6,6;-21.333,21.333;-3,3;-18,18]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:0 11 22 33 44 55 0单元固端弯矩:-10.6670 10.6670-9.0000 9.0000-6.0000 6.0000-21.3330 21.3330-3.0000 3.0000-18.0000 18.0000确认输入数据正确(Y/N):Y输入直接节点力矩:[0,-8,0,10,0]节点转角未知量总数: 5直接节点力矩: 0 -8 0 10 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.2500 折算固端弯矩后的节点荷载:-1.6670 -11.0000 15.3330 -8.3330 15.00008单元节点位移:1.6537 -9.9489 14.2640 -10.2480 10.0620 单元杆端弯矩-9.8401 12.3207-12.3207 -0.1221-7.8779 12.1930-12.1930 18.2170-8.2170 7.9380-7.9380 23.0310弯矩图:例题三机构弯矩图例题四:计算结果:输入单元总数:69输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]输入单元定位向量:[1,2;2,3;3,4;4,5;5,6;6,7]输入单元固端弯矩:[-10.667,10.667;-9,9;-6,6;-21.333,21.333;-3,3;-18,18]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:1 22 33 44 55 66 7单元固端弯矩:-10.6670 10.6670-9.0000 9.0000-6.0000 6.0000-21.3330 21.3330-3.0000 3.0000-18.0000 18.0000确认输入数据正确(Y/N):Y输入直接节点力矩:[0,0,-8,0,10,0,0]节点转角未知量总数: 7直接节点力矩: 0 0 -8 0 10 0 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.250010折算固端弯矩后的节点荷载:10.6670 -1.6670 -11.0000 15.3330 -8.3330 15.0000 -18.0000 单元节点位移:11.3653 -1.3965 -9.1131 14.6603 -12.1263 17.1789 -26.5895 单元杆端弯矩0 14.9531-14.9531 -0.8114-7.1886 12.7358-12.7358 16.5368-6.5368 14.1158-14.1158 0弯矩图:第四题结构弯矩图例题五:(工况情况1 and 工况情况3)11计算结果:输入单元总数:6输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]输入单元定位向量:[1,2;2,3;3,4;4,5;5,6;6,7]输入单元固端弯矩:[-10.667,10.667;-9,9;-6,6;-21.333,21.333;-3,3;-18,18]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:1 22 33 44 55 66 7单元固端弯矩:-10.6670 10.6670-9.0000 9.0000-6.0000 6.0000-21.3330 21.3330-3.0000 3.0000-18.0000 18.0000确认输入数据正确(Y/N):Y输入直接节点力矩:[0,0,0,0,0,0,0]节点转角未知量总数: 712直接节点力矩: 0 0 0 0 0 0 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.2500 折算固端弯矩后的节点荷载:10.6670 -1.6670 -3.0000 15.3330 -18.3330 15.0000 -18.0000单元节点位移:12.0951 -2.8562 -4.0044 15.3061 -17.6848 18.7671 -27.3835单元杆端弯矩0 13.8584-13.8584 3.5675-3.5675 14.8693-14.8693 11.3013-11.3013 12.9247-12.9247 0弯矩图:例题六:(荷载工况4)13计算结果:输入单元总数:6输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]输入单元定位向量:[0,1;1,2;2,3;3,4;4,5;5,0]输入单元固端弯矩:[-10.667,10.667;0,0;0,0;-21.333,21.333;0,0;-18,18]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:0 11 22 33 44 55 0单元固端弯矩:-10.6670 10.66700 00 0-21.3330 21.33300 0-18.0000 18.0000确认输入数据正确(Y/N):Y输入直接节点力矩:[0,-8,0,10,0]节点转角未知量总数: 514直接节点力矩: 0 -8 0 10 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.2500 折算固端弯矩后的节点荷载:-10.6670 -8.0000 21.3330 -11.3330 18.0000单元节点位移:-3.4807 -7.4113 18.2775 -13.3183 12.3296单元杆端弯矩-12.4073 7.1863-7.1863 -9.15161.1516 9.7146-9.7146 17.1535-7.1535 5.6704-5.6704 24.1648弯矩图:例题六结构弯矩图例题七:(载荷工况2)15计算结果:输入单元总数:6输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]输入单元定位向量:[0,1;1,2;2,3;3,4;4,5;5,6]输入单元固端弯矩:[0,0;-9,9;-6,6;0,0;-3,3;0,0]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:0 11 22 33 44 55 6单元固端弯矩:0 0-9 9-6 60 0-3 316170 0确认输入数据正确(Y/N ):Y输入直接节点力矩:[0,-8,0,10,0,0]节点转角未知量总数: 6直接节点力矩: 0 -8 0 10 0 0节点线刚度矩阵: 0.2500 0.2500 0.1667 0.2500 0.2500 0.2500 折算固端弯矩后的节点荷载: 9 -11 -6 13 -3 0单元节点位移:6.3944 -7.5778 -4.70278.7277 -4.2079 2.1040单元杆端弯矩3.1972 6.3944-6.3944 4.6194-12.6194 0.3389-0.3389 6.37633.6237 3.1559-3.1559 0.0000弯矩图:例题七结构弯矩图例题八:(载荷工况5)计算结果:输入单元总数:6输入单元杆长:[4,6,6,8,4,6]输入单元抗弯刚度:[1,1.5,1,2,1,1.5]输入单元定位向量:[1,2;2,3;3,4;4,5;5,6;6,0]输入单元固端弯矩:[-10.667,10.667;-9,9;-6,6;-21.333,21.333;-3,3;-18,18]单元数: 6单元杆长: 4 6 6 8 4 6单元抗弯刚度: 1.0000 1.5000 1.0000 2.0000 1.0000 1.5000 单元定位向量:1 22 33 44 55 66 0单元固端弯矩:-10.6670 10.6670-9.0000 9.0000-6.0000 6.0000-21.3330 21.3330-3.0000 3.00001819-18.0000 18.0000确认输入数据正确(Y/N ):Y输入直接节点力矩:[0,0,0,0,0,0]节点转角未知量总数: 6直接节点力矩: 0 0 0 0 0 0节点线刚度矩阵:0.2500 0.2500 0.1667 0.2500 0.2500 0.2500折算固端弯矩后的节点荷载:10.6670 -1.6670 -3.0000 15.3330 -18.3330 15.0000单元节点位移:12.1146 -2.8952 -3.8676 14.6811 -15.6926 11.4231单元杆端弯矩0 13.8291-13.8291 3.6847-3.6847 14.4982-14.4982 12.9810-12.9810 6.5769-6.5769 23.7116弯矩图:例题八结构弯矩图附件:程序源代码disp('输入单元总数:'); % NE表示单元总数,为1*n矩阵(设NE=n)NE=input('');disp('输入单元杆长:'); % BL表示单元杆长矩阵,为1*n矩阵BL=input('');disp('输入单元抗弯刚度:'); % EI表示单元抗弯刚度矩阵,为n*2矩阵EI=input('');disp('输入单元定位向量:'); % JD表示单元定位向量,为n*2矩阵JD=input('');disp('输入单元固端弯矩:'); % FM表示单元固端弯矩,为n*2矩阵FM=input('');disp('单元数:');disp(NE);disp('单元杆长:');disp(BL);disp('单元抗弯刚度:');disp(EI);disp('单元定位向量:');disp(JD);disp('单元固端弯矩:');disp(FM);disp('确认输入数据正确(Y/N):'); % 确认所输入数据是否有误A1=input('','s');if A1=='N'disp('请重启程序,重新输入');pause(2);close;endN=JD(NE,1); % 确定N的维数if JD(NE,2)~=0N=JD(NE,2);Enddisp('输入直接节点力矩:')P=input(''); % P表示节点载荷,为1*N阶矩阵(N为未知变量数,n为单元数,有N≤n)20disp('节点转角未知量总数:');disp(N);disp('直接节点力矩:');disp(P);for I=1:NE % 得到单元线刚度矩阵EI EI(I)=EI(I)/BL(I);enddisp('节点线刚度矩阵:');disp(EI);for I=1:NE % 将固端弯矩折算到节点载荷中I1=JD(I,1);I2=JD(I,2);if I1~=0P(I1)=P(I1)-FM(I,1);endif I2~=0P(I2)=P(I2)-FM(I,2);endenddisp('折算固端弯矩后的节点荷载:');disp(P);for I=1:N % 在形成整体刚度矩阵前,将其初值赋为0 for J=1:2KE(I,J)=0.0;endendfor I=1:NE % 求解整体刚度矩阵,为n*2阶矩阵I1=JD(I,1);I2=JD(I,2);if I1~=0KE(I1,1)=KE(I1,1)+4*EI(I);if I2~=0KE(I1,2)=2*EI(I);endendif I2~=0KE(I2,1)=KE(I2,1)+4*EI(I);end21endfor I=1:N-1 % 高斯消元的过程C=KE(I,2)/KE(I,1);KE(I+1,1)=KE(I+1,1)-C*KE(I,2);P(I+1)=P(I+1)-C*P(I);endP(N)=P(N)/KE(N,1);for I=N-1:-1:1P(I)=P(I)-KE(I,2)*P(I+1);P(I)=P(I)/KE(I,1);Enddisp('单元节点位移:');disp(P); % 输出计算得出的节点位移for I=1:NE % 计算杆端弯矩I1=JD(I,1);I2=JD(I,2);DZ(1)=0;DZ(2)=0;if I1~=0DZ(1)=P(I1);endif I2~=0DZ(2)=P(I2);endFJ(I,1)=4*EI(I)*DZ(1)+2*EI(I)*DZ(2)+FM(I,1); FJ(I,2)=2*EI(I)*DZ(1)+4*EI(I)*DZ(2)+FM(I,2); enddisp('单元杆端弯矩');disp(FJ);22。

C语言程序设计之乒乓球比赛编排

C语言程序设计之乒乓球比赛编排

序号: 01遵守 考 试 纪 律 注意行 为 规 范哈尔滨工业大学(威海)2019 / 2020 学年 春 季学期C 语言程序设计大作业题目(A/B/C )注意事项:请不要将题目要求写到答题卡上,答题卡缺省的难度系数是B ,请确认这份试卷适合你自己的难度选择(A/B/C )。

程序调试通过后,需要将运行过程截图放在文档中,运行程序前或后,请在命令行窗口执行命令date,用来打印系统当前的时间。

截取测试数据和运行过程时,请把时间也一起截图在图像中。

请在设计文档中写清楚自己的学号和姓名,并在源程序中的嵌入自己的姓名学号,一旦发现有人故意泄漏自己的大作业给别人或者抄袭其他同学的文档,各方均按作弊处理,(word 文档和pdf 文档都需要提交)。

源代码单独提交,在答题卡源代码中适当的位置标出注释,如函数要注明用法(输入什么,输出什么,用途,实现方法等),变量(尤其是复杂变量如二维数组)要标注出变量的用途。

提交作业的方式:云班课提交备份,用来核对提交时间(以图片和pdf 两种的方式提交),在规定的时间点,同学们同时提交给课代表,课代表在极短的时间内按照班级分别打包,打包文件名字为“班级号A .zip”、“班级号B .zip”、“班级号C.zip”。

班级每位同学的文档名为学号姓名A/B/C.doc”或者“学号姓名A/B/C .pdf”以及“学号A/B/C.c ”(A/B/C 只写一个)。

提交时间奖惩制度:每种方案的前5名提交作业的同学奖励5分(大作业满分100分,达到100分不再奖励),超过规定时间没有提交大作业的,每逾期1天罚2分。

友情提示:请超级自信的同学选择A 方案,自信的同学选择B 方案,大部分同学请选择C 方案。

乒乓球竞赛制度简介同其它球类竞赛项目一样,乒乓球比赛也多采用循环制和淘汰制两种形式,有时也采用两种 办法结合的混合制。

1、循环制循环制是球类比赛的一种基本和常用的方法,其特点是参加竞赛的各队在整个比赛或小都有相遇的机会,这种方法有利于对手之间的交流和提高技术水平,并且较能公正客观地反映比赛结果,因而成为乒乓球比赛经常采用的方法。

C语言程序设计大作业--图书管理系统

C语言程序设计大作业--图书管理系统

C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。

二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。

历届自考C++__程序设计试题及答案

历届自考C++__程序设计试题及答案

历届自考C++__程序设计试题及答案全国2008年10月自学考试C++程序设计试题课程代码:04737 一、单项选择题(本大题共20小题,每小题1分,共20分) 1(对C++语言和C语言的兼容性,描述正确的是( A )A(C++兼容C B(C++部分兼容C D(C兼容C++2(在C++中使用流进行输入输出,其中用于屏幕输出的对象是( C ) A(cerrB(cin C(coutD(cfile(cerr:标准错误输出(非缓冲方式);cin:标准输入;clog 标准错误输出(缓冲方式))3(对使用关键字new所开辟的动态存储空间,释放时必须使用( C ) A(freeB(create C(delete D(realse(如没有使用private关键字定义类的数据成员,则默认为( A ) 4A(private B(public C(protected D(friend5(使用值传递方式将实参传给形参,下列说法正确的是( A ) A(形参是实参的备份 B(实参是形参的备份C(形参和实参是同一对象D(形参和实参无联系 6(在函数调用时,如某一默认参数要指明一个特定值,则有( A ) A(其之前所有参数都必须赋值B(其之后所有参数都必须赋值C(其前、后所有参数都必须赋值D(其前、后所有参数都不必赋值7(设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是( C )A(int m = max(22,max(59,70)); B(int m = max(max(22,59),70);C(int m = max(22,59,70);D(int m = max(59,max(22,70));8(下列哪个类型函数不适合声明为内联函数( A )A(函数体语句较多 B(函数体语句较少C(函数执行时间较短 D(函数执行时间过长 9(int Func(int,int);不可与下列哪个函数构成重载( B ) A(int Func(int,int,int); B(double Func(int,int);C(double Func(double,double); D(double Func(int,double); 说明:不能以形参名来区分函数;不能以函数返回值来区分函数。

XXX18秋学期(1709、1803、1809)《C语言程序设计》在线作业答案2

XXX18秋学期(1709、1803、1809)《C语言程序设计》在线作业答案2

XXX18秋学期(1709、1803、1809)《C语言程序设计》在线作业答案2 18秋学期(1709、1803、1809)《C语言程序设计》在线作业-1试卷总分:100得分:100分一、单选题(共40道试题,共80分)1.C语言中规定,if语句的嵌套结构中,else总是与( )配对A.与最近的if配套B.与第一个if配套C.按缩进位置相同的if配套D.与最近的且尚未配对的if配套满分答案:D2.for (i=2.i=0.) printf(“%d”。

i--)。

以上程序段的循环次数是( )。

A.2次B.无限次C.0次D.1次满分答案:B3.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是( )A.只写B.追加C.读或读写D.答案B和C都正确满分答案:D4.变量的指针,其含义是指该变量的( )A.地址B.值C.名字D.标识总分值谜底:A5.下面4个选项中,均是C语言关键字的选项是( )。

A.auto enum includeB.switch typedef continueC.signed union scanfD.if struct type满分答案:B6.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是A.k%2B.k%2==0C.(k%2)!=0D。

(k%2==0)满分答案:B7.如果在C语言中一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为( )。

A.0~255B.0~32 767C.0~65 535D.0~2 147 483 647满分答案:C8.数组名作为实参通报给形参时,数组名被处理为( )A.该数组的长度B.该数组的元素个数C.该数组的首地址D.该数组中各元素的值满分答案:C9.若有定义char str[]=“very good”,则str的长度为( )A.8B.9C.10D.11总分值谜底:C10.下面4个选项中,均是不正当的用户标识符的选项是( )A.A P_0 doB.float a0 _AC.b-a 123 intD._123 temp INT总分值谜底:C11.设有如下程序#include<XXX>main()printf("%c\n",(ch1,ch2))。

总汇编语言程序设计期末大作业。

总汇编语言程序设计期末大作业。

汇编语言程序设计期末大作业:编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,(1)将输入的记录保存在C盘根目录下名为stuscore.dat的文件中;(2)按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序;(3)输出总分高于班平均总分的全部学生记录。

要求:元月4日前提交一份纸质报告(班长统一收齐)。

大作业格式:1.标题:汇编语言程序设计期末大作业2.作业题目:(上述)3.算法分析(流程图)4.实现代码(必须含注释)5.实验结果(汇编、连接、运行的截图)6.总结代码实现student struct ;定义结构Snumber db 11,0,11 dup(?)Sname db 11,0,11 dup(?)English db 4,0, 4 dup(?)Chinese db 4,0, 4 dup(?)Math db 4,0, 4 dup(?)Sum db 4,0, 4 dup(?)student ends;数据段data segmentmessMenu db '----------------The Homework of Assembler-----------------$'messMenu1 db '----------Name:TU LIN No:8000110028--------------$'messNext db'--------------------------------------------------------------------------------$'messName db 'Please input the student name(<11):$'messNum db 'Please input the student number(<11):$'messEnglish db 'Please input the English score:$'messChinese db 'Please input the Chinese score:$'messMath db 'Please input the Math score:$'mess1 db 'name:$'mess2 db 'number:$'mess3 db 'English:$'mess4 db 'Chinese:$'mess5 db 'Math:$'messSumScore db 'SumScore:$'MessTab db 09,'$' ;Tab 用于排列对齐StudAddress dw 10 dup(?) ;存各学生的偏移地址EnglishScore db 10 dup(?) ;存学生英语成绩的十进制数ChineseScore db 10 dup(?) ;存学生语文成绩的十进制数MathScore db 10 dup(?) ;存学生数学成绩的十进制数Average dw ?Buf db 6 dup(?)SumScore dw 10 dup(?) ;用于记录每个学生总分NumbersOfStudent db 0Stu student 10 dup(<>)SumRank db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9FName db 'C:\StuScore.dat', 0;文件FileHandle dw ?;文件句柄EndOfFile dw 0ffhOtherLine db 0ah, 0dh, '$'FileSpace db " "data ends;堆栈段stack segmentdb 100h dup(?)stack ends;代码段code segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;将数据段首地址传给dsmov ax,stackmov ss,ax ;将堆栈段首地址传给ssmov sp,0call Endlinelea dx,messMenumov ah,09hint 21hcall Endlinelea dx,messMenu1mov ah,09hint 21hcall Endlinelea si,Stu ;取student的首地址给simov cx,10InputStu:call GetStudentlea dx,messNextmov ah,09hint 21hadd si,50loop InputStu ;输出循环结束lea si,Stucall GetEnglishScorecall GetChineseScorecall GetMathScorecall Stop ;程序运行停止一下,按回车键继续执行 call Writetofilecall stopcall SumAveragecall GetSumcall GetAddresscall SortStudentcall Stop ;程序运行暂停一下,按回车键,继续执行call ShowStumov ah,4chint 21h;============================================================;子程序名:GetStudent;功能:录入学生信息;============================================================ GetStudent proc nearpush sipush dxpush axpush cx ;子程序保护现场lea dx,messNamemov ah,9int 21hlea dx,[si].Snamemov ah,0Ahint 21hcall Endlinelea dx,messNummov ah,9int 21hlea dx,[si].Snumbermov ah,0Ahint 21hcall Endlinelea dx,messEnglishmov ah,9int 21hlea dx,[si].Englishmov ah,0Ahint 21hcall Endlinelea dx,messChinesemov ah,9int 21hlea dx,[si].Chinesemov ah,0Ahint 21hcall Endlinelea dx,messMathmov ah,9int 21hlea dx,[si].Mathmov ah,0Ahint 21hcall Endlinepop cxpop axpop dxpop siretGetStudent endp;============================================================ ;子程序名:TureShow;功能辅助子程序ShowStu,用于输出字符串;============================================================ TureShow proc nearpush dx ;保护相关寄存器push cxpush bxpush axmov bx,dx ;将bx指向缓存区的地址xor cx,cxmov cl,[bx+1] ;cl存放了缓存区录入的字符数LoopTS:mov dl,[bx+2] ;从第三个偏移地址开始显示mov ah,2 ;调用单个字符输出中断int 21hinc bxloop LoopTSpop axpop bxpop cxpop dxretTureShow endp;============================================================ ;子程序名:ShowStu;功能:显示学生信息记录;============================================================ ShowStu proc nearpush cxpush axpush dxpush sipush di ;保护现场call Endlinelea di,SumScorelea bx,StudAddressmov cx,10Loop1: mov si,word ptr[bx]lea dx,mess1mov ah,09hint 21hlea dx,[si].Snamecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess2mov ah,09hint 21hlea dx,[si].Snumbercall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess3mov ah,09hint 21hlea dx,[si].Englishcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess4mov ah,09hint 21hlea dx,[si].Chinesecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess5mov ah,09hint 21hlea dx,[si].Mathcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,messSumScoremov ah,09hint 21hmov ax,[di]call Outputcall Endlineadd bx,2add di,2loop Loop1lea dx,messNextmov ah,09hint 21hpop dipop sipop dxpop axpop cxretShowStu endp;============================================================= ;子程序名:Endline;功能:回车换行;============================================================= Endline proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,2 ;回车mov dl,0ahint 21hmov ah,2 ;换行mov dl,0dhint 21hpop cxpop dxpop axretEndline endp;=============================================================;子程序名GetEnglishScores:;功能:将得到的指定个学生的分数以十进制保存到EnglishScore缓冲区中;============================================================= GetEnglishScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使si指向第一个学生的偏移地lea bp,EnglishScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores0:push cx ;保护外循环的CX值lea bx,[si].English ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore0:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到di,且将高位di的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来di中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore0mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区EnglishScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores0pop bppop axpop bxpop cxpop dxpop sipop diretGetEnglishScore endp;=============================================================;子程序名GetChineseScore:;功能:将得到的指定个学生的分数以十进制保存到ChineseScore缓冲区中;============================================================= GetChineseScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,ChineseScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores1:push cx ;保护外循环的CX值lea bx,[si].Chinese ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore1:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore1mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区ChineseScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores1pop bppop axpop bxpop cxpop dxpop sipop diretGetChineseScore endp;=============================================================;子程序名GetMathScore:;功能:将得到的指定个学生的数学分数以十进制保存到MathScore缓冲区中;============================================================= GetMathScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,MathScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores2:push cx ;保护外循环的CX值lea bx,[si].Math ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore2:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore2mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区MathScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores2pop bppop axpop bxpop cxpop dxpop sipop diretGetMathScore endp;==============================================================;子程序名:Writetofile;功能:用于创建文件并且存储学生信息;============================================================== Buildfile :push axpush cxpush dxmov ah, 3chmov cx, 00lea dx, FNameint 21hjc CreateFileErrormov FileHandle, axjmp CreateFileOkCreateFileError:mov ah, 09hmov dx, offset CreateFileErrorint 21hCreateFileOk:pop dxpop cxpop axretWriteToFile:push axpush bxpush cxpush dxpush dipush silea di, [si].SNamemov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx,FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SNumbermov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].ChineseScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].MathScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].EnglishScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SumScore mov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteEndLinejmp WriteFileOkWriteFileError:lea dx,WriteFileErrormov ah, 09hint 21hWriteFileOk:pop sipop dipop dxpop cxpop bxpop axret;******************************************************************** WriteSpace:mov cx, 2lea dx, FileSpacemov bx, FileHandlemov ah, 40hint 21hret;******************************************************************** WriteEndLine:mov cx, 2lea dx, OtherLinemov bx, FileHandlemov ah, 40hint 21hretCloseFile:mov ah, 40hmov bx, FileHandlemov cx, 2lea dx, EndOfFileint 21hmov ah, 3ehmov bx, FileHandleint 21hret;============================================================== ;子程序名:GetSum;功能:用于计算出每个学生的各科成绩的总分;============================================================== GetSum proc nearpush axpush dipush sipush bxpush cxlea di,EnglishScorelea si,SumScoremov cx,10mov al,0LoopSum:mov ah,0mov al,[di]mov word ptr[si],axinc diadd si,2loop LoopSumlea di,ChineseScorelea si,SumScoremov cx,10mov al,0LoopSum1:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum1lea di,MathScorelea si,SumScoremov cx,10mov al,0LoopSum2:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum2pop cxpop bxpop sipop dipop axretGetSum endp;============================================================== ;子程序名:SumAverage;功能:用于计算出平均成绩,并输出总分高于平均分的学生记录;============================================================== SumAverage proc nearpush axpush bxpush cxpush dxpush simov cl, NumbersOfStudentmov ch, 0mov bx, cxmov ax, 0mov dx, 0mov si, offset SumScoreAverageLoop:add ax, word ptr [si]adc dx, 0add si, 2loop AverageLoopdiv bxmov Average, ax;输出高于平均成绩的同学mov dx, offset ShowBigThanAveragemov ah, 09hint 21hmov cl, SNumbermov ch, 0mov di, 0mov si, 0ShowBigThanAverage:mov ax, SumScore[si]cmp ax, Averagejl ShowBigOkmov dl, SumRank[di]mov al, type studentmul dlmov bx, axcall Outputadd si, 2inc diloop ShowBigThanAverageShowBigOk:mov dx, offset OtherLinemov ah, 09hint 21hpop sipop dxpop cxpop bxpop axretSumAverage endp;============================================================= ;子程序名:Output;功能:将ax中的二进制以十进制形式输出;============================================================== Output proc nearpush dipush bxpush axpush dxlea di,Bufadd di,6mov byte ptr[di],'$'mov bx,10CHANGE:dec dimov dx,0div bxadd dl,30hmov byte ptr[di],dlcmp ax,0jnz CHANGEmov dx,dimov ah,09hint 21hpop dxpop axpop bxpop diretOutput endp;============================================================= ;子程序名:GetAddress;功能:将指定个学生的偏移地址顺序保存到StudAddress;============================================================= GetAddress proc nearpush si ;保护相关寄存器push bxpush cxlea si,Stu ;使di指向第一个学生的偏移地址lea bx,StudAddress ;使bx指向存学生偏移地址的缓冲区mov cx,10 ;共有指定个学生LoopAdd:mov word ptr[bx],word ptr siadd bx,2 ;使bx指向存学生偏移地址的缓冲区的下一个地址add si,50 ;使di指向下一个学的生偏移地址loop LoopAddpop cxpop bxpop diretGetAddress endp;============================================================= ;子程序名:SortStudent;功能:根据学生分数进行排序;用冒泡法根据学生分数对分数从大到小排序;同时将对应的偏移地址进行排序;============================================================= SortStudent proc nearpush dxpush cxpush bxpush axpush dipush simov cx,10dec cxLoopChange0:push cx ;保护外循环的CX值lea bx,SumScore ; bx指向学生分数偏移地址lea si,StudAddress ;si指向存学生偏移地址的地址LoopChange1: ;将学生分数和下一个学生分数分别送入al,dl并比较大小;若当前学生分数小于下一个分数要交换其分数mov dx,word ptr[bx+2] ;此分数对应的学生的偏移地址mov ax,word ptr[bx]cmp ax,dxja EndExchange ;若大于则转而比较下两个分数值;交换偏移地址mov ax,word ptr [si+2] ;指定向ax中传入2个字节数据mov dx,word ptr [si]mov [si],axmov [si+2],dx;交换分数值mov ax,word ptr[bx+2]mov dx,word ptr[bx]mov word ptr[bx],axmov word ptr[bx+2],dxEndExchange:add si,2 ;指向下一个学生偏移地址的地址add bx,2 ;指向下一个存学生分数的地址loop LoopChange1pop cx ;保护外循环的CX值loop LoopChange0pop sipop dipop axpop bxpop cxpop dxretSortStudent endp;=============================================================;子程序名:MessTb;功能:输出1个Tab键;============================================================= MessTb proc nearpush dx ;保护相关寄存器push axlea dx,MessTab ;指向输出1个Tab键缓冲区mov ah,9 ;调用字符串输出程序int 21hpop axpop dxretMessTb endp;=================================================================== ;子程序名:Stop;功能是让程序停止运行一下,输入回车键继续执行;=================================================================== Stop proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,1 ;回车int 21hpop cxpop dxpop axretStop endpcode endsend start。

C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)

C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)

C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。

学生可按要求(如总学分不能少于20学分)选课。

课程信息维护,如录入、修改、删除等,课程信息用文件保存。

课程信息浏览?输出。

学生选课功能。

查询功能包括:按学分、课程性质、学生等查询。

统计功能。

统计各门课程的选修人数。

本系统要有通用性、界面美观、操作方便。

要考虑系统安全。

课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。

管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。

输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。

C语言作业及上机习题(仅供参考)

C语言作业及上机习题(仅供参考)

第一次课熟悉win-TC编译环境、熟悉C语言程序结构1.使用C 语言编译环境,输入下面的源程序。

将你的程序命名为hello.c,然后编译运行它。

/* program writes the words "Hello, world" to the screen *File : Hello.c* By : NJCIT* Date : 07-03-09*/#include <stdio.h>main(){printf("Hello, world\n");return(0);}2.main() /*求两数之和*/{int a,b,sum; /* 这是变量定义*/a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}问题:1.一个C语言源程序从哪里开始执行?2. C程序的函数由几部分构成?3. ANSI C 中的注释内容是用什么符号界定?第二次课熟悉printf()函数、常见转义字符及各种数据类型的输出格式1.2. main(){int a=5,b=7,c=-1;float x=67.8564,y=-789.124;char c=‘A’;long n=1234567;unsigned u=65535;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);printf(“%f,%f\n”,x,y);printf(“%-10f%-10f\n”,x,y);printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);printf(“%e,%10.2e\n”,x,y);printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%ld,%lo,%x\n”,n,n,n);printf(“%u,%o,%x,%d\n”,u,u,u,u);printf(“%s,%5.3s\n”,”COMPUTER”,”COMPUTER”);}3. 假设下面的例子都是完整程序的一部分,那么他们每一个将会输出什么?4.加载,编译并运行下面的程序。

C语言程序设计 第一章

C语言程序设计 第一章

1.3
C语言的基本语法成分
1.3.1
C语言的主要“单词”
(2) 关键字:关键字又称保留字,是C 语言规定的具有特 定意义的标识符,它已被C语言开发环境使用,不能做其他用 途使用,每个关键字都有固定的含义。C 语言的关键字分为以 下四类。 1)标识数据类型的关键字:int,long,short,char, float,double,signed,unsigned,struct,union,enum, void,volatile,const。 2)标识存储类型的关键字:auto,static,register, extern,typedef。 3)标识流程控制的关键字:goto,return,break, continue,if,else,while,do,for,switch,case,default。 4)标识运算符的关键字:sizeof。
C语言程序设计
第一章 C语言概述
– C语言发展过程
• 产生背景
– ALGOL 60→CPL语言→BCPL→B语言,写UNIX系统
• 产生过程
– – – – 时间:1972~1973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie
• C标准
Turbo C扩充了11个关键字: asm _cs _ds _es _ss cdecl far huge interrupt near pascal 注意:在C语言中,关键字都是小写的。
<
C语言程序设计
第一章 C语言概述
C语言有 9 种控制语 句,程序书写形式自 由,主要用小写字母 表示,压缩了一切不 必要的成分。
函数体、分程序、复合语句
条件语句 定义i为整形变量 定义a为一维数组 定义f为返回整形值函数; p为指向整形变量的指针变量; 赋值语句,使i+2赋给I i自增值1,i加1赋给I

c程序设计大作业

c程序设计大作业

c程序设计大作业C程序设计大作业C程序设计是一门实践性很强的课程,大作业是检验学生对C语言掌握程度的重要方式。

本次大作业的目的在于通过实际编程练习,加深对C 语言基础语法、数据结构、算法设计和程序调试等方面的理解,同时培养学生的编程思维和解决实际问题的能力。

一、大作业要求1. 题目选择:学生可以从以下题目中任选一题完成:- 学生信息管理系统- 图书馆管理系统- 简易计算器- 字符串处理工具- 图形界面的五子棋游戏2. 功能实现:每个题目都应实现基本功能,例如:- 学生信息管理系统:添加、删除、修改、查询学生信息。

- 图书馆管理系统:图书借阅、归还、查询等。

- 简易计算器:实现基本的加减乘除运算。

- 字符串处理工具:实现字符串的复制、连接、查找、替换等操作。

- 图形界面的五子棋游戏:实现基本的下棋逻辑和胜负判断。

3. 代码规范:代码应遵循良好的编程规范,包括但不限于:- 明确的函数分工,每个函数应有简短的注释说明其功能。

- 变量命名应清晰,避免使用无意义的缩写。

- 代码结构清晰,逻辑性强。

4. 文档编写:提交的作业应包括:- 程序设计说明书:介绍程序的功能、设计思路、实现过程等。

- 源代码:按照题目要求编写的C语言代码。

- 用户手册:简要说明如何使用程序。

5. 提交方式:所有材料应以电子文档形式提交,包括设计说明书、源代码和用户手册。

二、大作业流程1. 选题:学生在教师的指导下选择适合自己能力的题目。

2. 需求分析:明确程序需要实现的功能和性能要求。

3. 设计:设计程序的总体结构和各个模块的详细设计。

4. 编码:根据设计文档编写程序代码。

5. 测试:对编写的程序进行测试,确保功能正确无误。

6. 调试:根据测试结果进行必要的调试,修正程序中的错误。

7. 文档编写:编写程序设计说明书和用户手册。

8. 提交:按照要求提交所有材料。

三、评分标准1. 功能实现:程序是否实现了题目要求的所有功能。

2. 代码质量:代码是否规范、清晰、易读。

c语言大作业课程设计

c语言大作业课程设计

c语言大作业 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,掌握其应用方法;2. 学会使用C语言编程解决实际问题,如数值计算、数据处理等;3. 了解C语言程序设计中常用的算法与数据结构,如排序、查找等;4. 掌握C语言编程规范,提高代码质量。

技能目标:1. 能够独立设计并编写具有实际意义的C语言程序,具备一定的编程能力;2. 学会运用调试工具,如GDB,对程序进行调试,找出并解决程序中的错误;3. 能够阅读和理解C语言源代码,具备一定的代码阅读能力;4. 具备团队协作能力,与他人共同完成复杂的编程任务。

情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学习热情,树立编程自信心;2. 培养学生严谨、认真的学习态度,养成良好的编程习惯;3. 培养学生面对编程难题时的耐心与毅力,具备解决问题的决心;4. 培养学生的创新意识,鼓励尝试新方法,勇于挑战自我。

本课程针对高年级学生,课程性质为实践性较强的编程课程。

在教学过程中,要求学生具备一定的C语言基础,能够通过本课程的学习,将所学的理论知识运用到实际编程中,提高解决实际问题的能力。

课程目标的设定旨在使学生能够通过本课程的学习,掌握C语言的核心知识,培养编程技能,同时注重情感态度价值观的培养,全面提高学生的综合素质。

后续教学设计和评估将围绕这些具体学习成果展开。

二、教学内容本章节教学内容主要包括以下几部分:1. C语言基础回顾:数组、函数、指针等基本概念及其应用;- 数组:一维数组、二维数组、字符数组;- 函数:函数定义、调用、传值与传址;- 指针:指针的概念、指针与数组、指针与函数。

2. 算法与数据结构:排序、查找等常用算法;- 排序:冒泡排序、选择排序、插入排序;- 查找:顺序查找、二分查找。

3. 编程规范与调试技巧:C语言编程规范、GDB调试工具的使用;- 编程规范:命名规则、代码格式、注释;- 调试技巧:设置断点、单步执行、查看变量值。

C语言练习作业及答案

C语言练习作业及答案

C语言练习作业及答案习题一1、C语言源程序最多可能由____ABCD____________部分组成?A)预处理部分B)变量说明部分C)函数原型声明部分D)函数定义部分2、一个完整的C语言源程序最少必须有___C____。

A)若干个主函数B)若干个函数C)且只能有一个主函数D)一个函数3、C语言以函数为源程序的基本单位最主要有利于__B_____。

A)程序设计结构化B)程序设计模块化C)程序设计简单化D提高程序设计有效性4、要使得C语言编写的程序能够在计算机上运行并得出正确结果,必须要先经过______________B_______________________。

A)编辑和链接B)编译和链接C)修改和运行D运行并输入数据5、一个C程序的执行是从______A______。

A)本程序的main函数开始,到main函数结束。

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束6、以下叙述正确的是__A______。

A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误7、以下叙述不正确的是___D_____。

A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面8、C语言规定:在一个源程序中,main函数的位置是___A_____。

A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后习题二一、程序题1、阅读程序写运行结果(1)#includeintmain(){int某=10,y=6,z=3,t;if(某>y){t=某;某=y;y=t;}if(y>z){t=y;y=z;z=t;}if(某>y){t=某;某=y;y=t;}printf(\return0;}运行结果3610(2)#includeintmain(){intn=123;int某,y,z;某=n/100;y=n0/10;z=n;printf(\return0;}运行结果1,2,3(3)#includeintmain(){int某=10,y=6;printf(\printf(\printf(\return0;}运行结果011(4)#includeintmain(){int某=10,y=6,z=3,=0;+=某;+=y;+=z;printf(\return0;}运行结果19(5)#includeintmain(){inta=2,b=3;float某=3.5,y=2.5;printf(\return0;}运行结果3.5(6)#includeintmain(){inta=-100;unignedb,c;longd=32768;floate=4.56;b=a;a=c=d;printf(\a=e;printf(\return0;}本题假设int型数据占两个字节。

2019年201X小学期c,,实践-范文模板 (12页)

2019年201X小学期c,,实践-范文模板 (12页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==201X小学期c,,实践篇一:C语言小学期大作业格式要求学年论文(C程序设计 201X-201X 第一学期)题目:作者:所在学院:专业年级:指导教师:职称:201X年 11 月日信息科学与工程学院学生“C语言程序设计”大作业二、大作业目的:1.2.3.三、要求:1.2.3.四、总体设计, 实现方法,代码、运行结果1.总体设计:2. 各模块的功能:3.实现方法1)流程图:2)代码:3)运行结果:五、总结:新疆大学课程论文(设计)、学年论文评分表篇二:1.201X年小学期C语言程序设计训练_实验一源代码1-1: /*输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按照字母表顺序输出,不出现的不输出)*/ #include <stdio.h> #include<string.h>#include<stdlib.h> #define N 100 void main() {void f(int a[],charstr[]); char str[N]; int a[26]={0}; int i,j; printf("请输入一行字符,以?结尾:\n"); gets(str); if(strlen(str)=='?') {f(a,str); }else{ printf("请重新输入,以?结尾!\n"); for(j=0;j<N;j++) str[j]='\0'; gets(str); f(a,str);} for(j=100;j>0;j--)for(i=0;i<26;i++) if(a[i]==j) printf("%c字母有%d个。

大作业源代码word版

大作业源代码word版

Data.h//此类储存了许多用户输入的参数,放入物质类以供查阅#ifndef DATA#define DATAusing namespace std;#include"Matrix.h"class Data{public:Data(); //同样是无参构造函数Data(double dt,int t,double dx,double f,double A); //同样是有参构造double getdt(); //获得各种奇葩数据dtint gett(); //tdouble getdx(); //dxdouble getf(); //fdouble getA(); //Aprivate:double P_dt; //叠代时间精度int P_t; //叠代次数double P_dx; //空间精度double P_f; //波源频率double P_A; //波源振幅};//很esay的一个类,不说了Data::Data(){P_dt=0.1;P_t=100;P_dx=0.5;P_f=100;P_A=1;}Data::Data(double dt,int t,double dx,double f,double A){P_dt=dt;P_t=t;P_dx=dx;P_f=f;P_A=A;}double Data::getdt(){return P_dt;}int Data::gett(){return P_t;}double Data::getdx(){return P_dx;}double Data::getf(){return P_f;}double Data::getA(){return P_A;}//声明坐标类class Coordinate{public:Coordinate(); //无参构造函数Coordinate(int x,int y,int o); //有参构造函数int getx(); //获取x坐标int gety(); //获取y坐标int getorder(); //获取顺序private:int C_x; //x坐标int C_y; //y坐标int C_order; //顺序,为了区分一些点的先后关系};Coordinate::Coordinate(int x,int y, int o){C_x=x;C_y=y;C_order=o;}Coordinate::Coordinate(){C_x=0;C_y=0;C_order=0;}int Coordinate::getx(){return C_x;}int Coordinate::gety(){return C_y;}int Coordinate::getorder(){return C_order;}#endifMatrix.h//这只是一个普通的矩阵类#ifndef MATRIX#define MATRIXusing namespace std;#include<iostream>template <class T>class Matrix{public:Matrix(int rsz=1,int csz=1); //构造函数,创建矩阵Matrix(const Matrix<T>& M ); //拷贝构造函数~Matrix(); //析构函数,删除矩阵T& operator()(int i,int j)const; //重载下标运算符Matrix<T>& operator=(const Matrix<T>& M); //重载矩阵赋值运算符Matrix<T>& operator=(const T X); //重载常数赋值运算int Rows(); //取矩阵的行数int Columns(); //取矩阵的列数void OutPut(ostream& out)const; // 将矩阵放到输出流out中输出private:int rsize,csize; //矩阵行数和列数T *element; //矩阵的存放空间};//实现构造函数template <class T>Matrix<T>::Matrix(int rsz,int csz){rsize=rsz;csize=csz;element=new T[rsize*csize];}//实现拷贝构造函数template <class T>Matrix<T>::Matrix(const Matrix<T>& M){rsize=M.rsize;csize=M.csize;element = new T[rsize*csize];for(int i=0;i<rsize*csize;i++)element[i]=M.element[i];}//实现析构函数template <class T>Matrix<T>::~Matrix(){delete []element;}//实现下标运算符,方便矩阵元素的赋值和取值template <class T>T& Matrix<T>::operator()(int i,int j)const{return element[(i-1)*csize+j-1];}//实现重载赋值运算符template <class T>Matrix<T>& Matrix<T>::operator=(const Matrix<T>& M){if (this!=&M) //如果不是自己给自己赋值{delete []element;rsize=M.rsize;csize=M.csize;element=new T[rsize*csize];for (int i=0;i<rsize*csize;i++)element[i]=M.element[i];}return *this;}//实现重载运算=常数template<class T>Matrix<T>& Matrix<T>::operator=(const T X){for(int i=0;i<rsize*csize;i++){element[i]=X;}return *this;}//实现取矩阵行数template <class T>int Matrix<T>::Rows(){return rsize;}//实现取矩阵列数template <class T>int Matrix<T>::Columns(){return csize;}//实现一维数组的输出template<class T>void Matrix<T>:: OutPut(ostream& out) const{for(int i=0;i<rsize;i++){for(int j=0;j<csize;j++)out<<element[i*csize+j]<<' ';out<<endl;}}//重载插入运算符<<template<class T>ostream& operator<<(ostream& out,const Matrix<T>& x){x.OutPut(out);return out;}#endifMatter.h//此文件储存了一个重要的类,物质类,储存所有已知信息#ifndef MATTER#define MATTER#include"data.h"#include<iostream>#include<cmath>class Matter{public:Matter(); //缺省构造函数Matter(int n,int m); //有参构造函数Matter(Matter&); //拷贝构造函数void operation(int t); //叠代操作,传入一叠代次数tMatrix<double> getM_potential(); //获取势能矩阵Matrix<double> getM_k(); //获取波速矩阵Matrix<double> getM_source(); //获得波源矩阵Data getM_P(); //获取用户输入基本参数void changeM_P(Data P); //改变用户输入基本参数void changeM_k(Matrix<double>&k); //改变波速矩阵void changeM_source(Matrix<double>&reflex); //改变波源矩阵int getM_n(); //获得总长度int getM_m(); //获得总宽度private:Matrix<double> M_potential; //势能矩阵Matrix<double> M_k; //波速矩阵Matrix<double> M_source; //波源矩阵int M_n; //有限元矩阵长度int M_m; //有限元矩阵宽度Data M_P; //用户输入基本参数};//无参构造Matter::Matter(){M_potential=Matrix<double>();M_k=Matrix<double>();M_source=Matrix<double>();int M_n=1;int M_m=1;M_potential=0;M_source=0;M_k=1200;M_source(M_n/2,M_m/2)=1;}//有参构造Matter::Matter(int n,int m){M_potential=Matrix<double>(n,m);M_k=Matrix<double>(n,m);M_source=Matrix<double>(n,m);M_n=n;M_m=m;M_potential=0;M_source=0;M_k=1200;M_source(M_n/2,M_m/2)=1;}//拷贝构造Matter::Matter(Matter &m){M_potential=m.getM_potential();M_k=m.getM_k();M_P=m.getM_P();M_n=m.getM_n();M_m=m.getM_m();M_source=m.getM_source();}//叠代函数void Matter::operation(int t){//波源计算,根据传过来的参数一叠代次数,确定波源(受迫点)的势能情况。

C语言作业

C语言作业

实验一 C程序的运行环境及简单程序编写(一)一、实验目的1. 了解VC++6.0集成环境的基本操作方法。

2。

了解在该系统上如何编辑、编译、连接和运行一个C程序。

3。

通过运行简单的C程序,初步了解C源程序的特点。

二、实验内容1. 打印输出你的姓名,年龄,地址信息。

2。

编写程序,实现输出*********************************************C语言程序设计*********************************************3. 编写程序,求2个整数的和、差、积、商.实验二C程序的运行环境及简单程序编写(二)一、实验目的1。

编写运行简单的C程序,了解C源程序的特点。

二、实验内容1。

编写程序,已知长方形的长为8cm,宽为3cm,求长方形的周长和面积.2。

在上一题的源代码中,用2种注释方法,添加注释内容:这是一个简单的C语言程序。

3。

编写程序,实现输出三行文字,第一行Print:(1)\\\\\\\\\\(2)&&&&&&&&&&(3)||||||||||实验三数据的存储与运算(一)一、实验目的1. 掌握变量的定义及使用2. 掌握整型数据在程序中的表示及使用二、实验内容1.教材P19例2.12。

编写一个程序,要求用户输入一个美金数量,然后显示出如何用最少的面值为20美元、10美元、5美元和1美元钞票来付款。

运行结果:Ener a dollar amount:93Result:$20 bills:4$10 bills:1$5 bills:0$1 bills:33. 输入2个变量的值,交换这2个变量的值后输出。

Input (x,y):2,3output(x,y):3,2实验四数据的存储与运算(二)一、实验目的1. 掌握整型数据在程序中的表示及使用2。

掌握实型数据在程序中的表示及使用。

二、实验内容1.教材P24例2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计大作业姓名:叶尔凯西学院(系):计科系班级:计科系07-1 班学号: 027设计本程序的目的:关于一些并不太复杂的集体来说,一般需要管理集体中的每个人的基本信息的,本程序专门为一些在校学生的基本信息的管理而设计的,主要目的是通过本程序来实现简单的记录和查找学生的基本信息;程序功能简介:本程序是通过面向对象的最重要的特点“类”来设计出来的,其功能是实现简单的学生基本信息管理。

包括一些要求用户从键盘输入(记录)学生的基本信息、输出学生的基本信息和用学生的学号来查找学生信息表中的某个学生的基本信息等功能;程序功能的详细介绍:本人设计程序时考虑到的很所内容,其中输入输出学生的基本信息是最基本的功能。

下面来给大家介绍程序的核心类的构建:①在程序中共建立了两种类,分别是person 类和 student类。

person作为student类的基类,其内部是如下设计的:class person{public:void SetPersonAddress(char *AddressFromMain);void SetPersonSex(char *SexFromMain);void ShowPersonSex();void ShowPersonAddress();private:char Address[25];char Sex[2];};可以看到,在上面分别声明了四个成员函数和两个数据成员。

四个成员函数的作用是对私有数据成员进行访问(包括输入和输出)。

所以当建立了一个 person 类之后就可以通过它的对象来访问该类的数据成员。

下面分别说明每一个成员函数的具体定义:( 1)设置(输入)人地址的成员函数:void person::SetPersonAddress(char *AddressFromMain){strcpy(Address,AddressFromMain);}通过 strcpy把字符指针的内容送入person 类中的数据成员Address 。

( 2)设置(输入)人性别的成员函数:void person::SetPersonSex(char *SexFromMain){strcpy(Sex,SexFromMain);}通过 strcpy把字符指针SexFromMain 的内容作为地址的存储单元中的内容送入 person 类中 Sex 数据成员。

( 3)输出地址成员函数:void person::ShowPersonAddress(){cout<<Address<<endl;}输出 person 类中的 Address 数据成员的内容;( 4)输出性别的成员函数:void person::ShowPersonSex(){cout<<Sex<<endl;}输出 person 类中的 Sex 数据成员的内容;②接下来就是person 基类的派生类student类的内部设计如下:class student: public person{public:void SetStudentInformation(char*NameFromMain,char *StudentAddressFromMain,char*StudentSexFromMain,char *StudentNumberFromMain, int *score); void ShowStudentInformation();friend void FindStudentNumber(student *data);friend void FindStudentName(student *data);private:intMathResult,EnglishResult,CResult,CompilationLanguageResult,DigitalLogicResult,MarksismResult;char StudentNumber[25];char Name[25];float Average;int total;};当设计 student派生类的时候,最主要的特点就是利用了“类”的一个特点继承。

所以说派生出来的student类也具有基类person 的一些特点。

在继承的方式上本人使用了共有继承方式(public),下面来给大家介绍student类的内部构造:①成员函数共有设置( 输入 ) 学生信息、输出学生信息等两个。

还有一个非成员函数的一个函数,它为该student类的友元函数,其功能是实现查找。

除此之外还有从基类person 类继承下来的一些成员函数;②数据成员分别为整形变量的学生成绩(包括数学成绩、英语成绩、C++成绩、汇编语言成绩、数字逻辑成绩、马克思哲学成绩等),字符数组的学生学号和学生姓名以及整型变量的学生的总分和单精度变量的平均分;下面介绍 student派生类中的各个成员函数的定义部分:设置 ( 输入 ) 学生信息的成员函数:Voidstudent::SetStudentInformation(char*NameFromMain,char*StudentAddressFromMain,char* StudentSexFromMain,char *StudentNumberFromMain, int *score){strcpy(Name,NameFromMain);SetPersonAddress(StudentAddressFromMain);SetPersonSex(StudentSexFromMain);strcpy(StudentNumber ,StudentNumberFromMain);for(int i=0; i<6; i++){switch(i){case 0:MathResult=score[0];case 1:EnglishResult=score[1];case 2:CResult=score[2];case 3:CompilationLanguageResult=score[3];case 4:DigitalLogicResult=score[4];case 5:MarksismResult=score[5];}}total=MathResult+EnglishResult+CResult+CompilationLanguageResult+Digita lLogicResult+MarksismResult;Average=total/6.0;}可以看到在设计 student 类的输入成员函数时其内部同时调用了从基类继承下来的一些成员函数,这就是继承的特点。

下面将会详细地介绍该成员函数的功能:首先是 student类的两个字符数组变量学生姓名和学生学号的赋值通过strcpy来直接实现,也就是可通过该类的成员函数来给数据成员赋值。

还有两个数据成员是不能够被继承下来的基类的两个字符数组学生性别和家庭地址,它们是通过student派生类的成员函数中调用从基类 person 中继承下来的成员函数,从而改变对不能被继承下来的基类的数据成员赋值。

接着就是对 student 类中自己的数据成员学生成绩的赋值,它们是通过一个简单的 switchcase 语句来实现的。

输出学生信息的成员函数:void student::ShowStudentInformation(){cout<<endl;cout<<" 学生的基本信息如下: "<<endl<<endl;cout<<" 学生的姓名 : "<<Name<<endl<<endl;;cout<<"学生的学号为: "<<StudentNumber<<endl<<endl;cout<<" 学生的家庭地址为: ";ShowPersonAddress();cout<<endl;cout<<" 学生的性别为: ";ShowPersonSex();cout<<endl;cout<<" 学生的考试课程成绩如下: "<<endl<<endl;cout<<" 学生的离散数学课程成绩为: "<<MathResult<<"分"<<endl<<endl;cout<<" 学生的英语课程成绩为: "<<EnglishResult<<"分"<<endl<<endl;cout<<" 学生的 C++课程成绩为 : "<<CResult<<"分"<<endl<<endl;cout<<"学生的汇编语言课程成绩为:"<<CompilationLanguageResult<<"分"<<endl<<endl;cout<<" 学生的数字逻辑课程成绩为: "<<DigitalLogicResult<<"分"<<endl<<endl;cout<<" 学生的马克思主义哲学课程成绩为: "<<MarksismResult<<"分"<<endl<<endl;cout<<" 学生的总分为:"<<total<<"分"<<endl<<endl;cout<<" 学生的平均分为:"<<Average<<" 分"<<endl<<endl;}输出学生信息的成员函数的定义中不难发现输出时不仅会输出student派生类自己的数据成员的值还会同时输出不能被继承下来的基类person 中的数据成员的值。

相关文档
最新文档