版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《信息系统程序设计实验(C语言)》一、课程设计目的《C语言程序设计》课程设计是电子信息、光信息专业集中实践性环节之一,是学习完《C语言程序设计》课程后进行的一次全面的综合练习,其目的在于加深对程序设计基本知识的理解,掌握使用C语言进行模块化软件设计的基本方法,提高通过编写程序解决实际问题的能力,为今后从事设计工作和后续各种编程课程的学习打好基础。二、课程与相关课程的联系与分工
先修课为《C语言程序设计》和《算法与数据结构》。后续课为《数据库原理与应用》和《软件系统基础》。本课程设计是为了让学生巩固《C语言程序设计》课程学到的知识,熟练C开发工具,运用《算法与数据结构》课程学到的算法设计思想解决实际应用问题。并为后续课程《数据库原理及应用》和《软件系统基础》等奠定基础。教学要求
为了使学生从课程设计中取得实际效果,对课程设计题目分成二类:一类为基本设计题目,主要是程序设计的常用算法的综合训练,要求学生独立完成;另一类为综合设计题目,具有较高的难度和工作量,以2—3人组成的项目小组、团队合作的方式完成。学生可根据自己的实际情况选择综合设计题目完成课程设计,鼓励学生选择综合设计题目、培养团队合作的能力。基本要求:要求学生做好预习,掌握设计过程中涉及到的算法,按设计流程编程,上机调试通过,验证结果并进行分析、完成课程实验设计报告,最后对所完成的工作进行答辩。实验安排实验安排实验安排实验安排课程实验的实施过程
整个课程实验在综合实验阶段要分成以下几个阶段进行:开题,系统设计,系统编码实现,系统测试,系统评价与验收。(1)开题课程设计题目来自教师指定的参考题目,也可自由选题,但要老师批准。特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。课程实验的实施过程(2)系统设计系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细的分工。在确定解决方案框架过程中,考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的功能以及函数之间的调用关系。每个明确的功能模块程序一般不超过60行,否则要进一步划分。课程实验的实施过程(3)系统编码实现小组成员根据初步的系统设计方案,对系统编程实现。(4)系统测试在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。课程实验的实施过程(5)书写课程设计报告课程设计报告应至少包含以下内容:①问题描述:题目要解决的问题是什么。②设计说明:模块设计和主要算法思想(用流程图表示)等。③调试报告:调试过程中遇到的主要问题及解决方法;对设计和编码的回顾讨论和分析;改进设想;经验和体会等。。课程实验的实施过程(6)系统评价与验收通过答辩的形式对程序的功能进行评价与验收课程设计指导方式
前面基础实验由教师布置任务,学生在课堂上调试完成,写出实验报告,提交上来。综合实验,由教师召开课程设计动员会,进行分组,指定课程设计的题目和内容,讲解部分题目要求。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成题目。最后由指导教师进行验收及成绩评定。课程实验考核方法及成绩评定
1、通过程序实现、设计报告和学习态度等综合考评,评定成绩。课程实验考核方法及成绩评定2、评分标准
从以下五个方面评出课程设计完成后的综合分:①设计报告占30%②系统完成情况及编程工作量占30%③编程难度和程序亮点占10%④回答教师所提出的问题占20%⑤课程设计过程中的工作态度(考勤)占10%课程实验考核方法及成绩评定(2)以项目小组、团队合作方式完成的综合设计题目,对每一组按以上标准给出综合分,并将该分作为这组中最优秀同学的得分,其他同学的分数根据其在组中所承担的任务和表现进行相应的调整。(3)根据课程综合实验设计的选题新颖性、独立分析解决问题的能力和创新精神等,予以适当加分。主要教材及参考书
参考教材:
[2]曹哲.C语言实验与课程设计.机械工业出版社.2010.《C语言课程设计》作者:刘博,董学文编著:机械工业出版社《C语言程序设计综合实验指导》主编:颜晖,张引出版社:浙江大学出版社指导书:《C程序设计基础与实验》作者:颜晖出版社:浙江大学出版社《C程序设计题解与上机指导(第二版)》作者:谭浩强主编清华大学出版社C语言实验与课程设计.王新,孙雷编著清华大学出版社两大上机环境VC++,VisualC++6.0基于Windows平台支持C和C++,需建工程/工作区,可能死机MicrosoftVisualC++6.0图标TC,TurboC2.0基于DOS平台,不支持鼠标、复制/粘贴标准CD:\TC\TC.BAT或D:\TC\BIN\TC.EXEVC++上机关键操作建立文件File~New~File~C++Source输入文件名并选择路径编写并保存代码编译:Build~Build按提示建立workspace运行:Build~Execute关闭:File~CloseWorkspacesTC上机关键操作注:按Alt+第一字母进入相应主菜单项建立文件:File~New编写代码:Edit保存:File~Save输入文件名编译:Compile~Buildall运行:Run~Run查看结果:Run~UserscreenTC上机快捷键(1)进入,退出,全屏/窗口Ctrl-Enter 切换全屏/窗口模式F10 进入主菜单程序编辑,存盘,装入Insert,Delete,BackSpace,Home,EndAlt-E 进入程序编辑窗口F2 源程序存盘F3 打开源程序编译、连接Compiler、Link、BuildAllTC上机快捷键(2)运行、中止Ctrl-F9 运行程序Alt-F5 察看用户屏幕Ctrl-Break 停止程序运行调试F8/F7 单步跟踪Ctrl-F7 增加观察变量Ctrl-F2 停止程序调试Ctrl-F8 设置断点C语言相关文件编写程序必须的步骤编辑(Edit)预编译预处理命令:#include,#define,#if等编译(Compile)源文件→目标文件.C→.OBJ,.ASM→.OBJ连接(Link)、组建(Build=编译+连接)目标文件+库文件→执行文件.OBJ+.LIB→.EXE运行(Run)调试(Debug)关于TurboC环境(1)设定工作目录File~Changedir菜单项,键入工作目录按Alt-F进入File主菜单,或F10进入主菜单行装入文件File~Load菜单项回车并在列表中选择源文件新建文件:File~New修改后保存文件常规保存File~Save或File~Writeto将文件另存为…关于TurboC环境(2)编译文件Compile~Buildall菜单项按Alt-C进入Compile主菜单,或按F10成功指示:Success编译结果LinkingE:\xxx\xxx.EXE运行文件Run~Run菜单项,Ctrl-F9按Alt-R进入Run主菜单关于TurboC环境(3)观看运行结果Run~Userscreen,Alt-F5单步跟踪Run~Stepover,F8观察变量/表达式Break/watch~Addwatch,Ctrl-F7按Alt-B进入Break/watch主菜单关于VC++环境启动位置开始菜单~MicrosoftVisualStudio6.0~MicrosoftVisualC++6.0编译错误时错误列表编译子窗口可拉大,滚动轮显示不同错误,双击错误点死机问题(编译死机,红×无法关闭窗口)Ctrl-Alt-Del启动任务管理器应用程序~结束任务重新运行VC++6.0窗口直接关闭,程序最后追加getchar();语句上机部分问题(1)-保存问题文件保存新建文件的操作步骤错误TurboC:File~New,File~Save,xxx.CVC++中步骤:新建-文件-C++Source-xxx.C源程序的扩展名必须为C,不能为其它,也不能有多个基本名由字母、数字、下划线、减号等组成,基本名不要包含小数点、空格、加号等,最好不要超过8个字符,各级目录名也等同命名不合适的文件名如:ex1-1.txt,,ex1.1,ex1-1.cpp上机考以源程序为依据,注意源程序保存上机部分问题(2)-拼写问题d%/nintn:#include<stdio.h>;()<>[]{}混淆includ,stidomian,pritf%d\nintn;#include<stdio.h>上传系统的要求源程序的编写、运行、调试、上传可以使用VisualC++环境但编程题的自动判分必须使用TurboC编译D:\TC\TC.BAT或D:\TC\BIN\TC.EXE并且程序的文件名、各级目录名不能使用中文,仅字母、数字、下划线、减号注意输出与样例应严格一致,包括大小写Yes、YES、yes互不相同实验一基础实验1、复习回顾基本语句2、强调结构程序设计的概念学会画算法流程图。3、通过例题,习题加强基本的程序设计的能力1、基本控制结构(特别注意++,--运算符进入条件表达式)流程控制语句
⑴条件语句 if~else~switch语句⑵循环语句 for语句、while语句、do~while语句⑶提前结束本次循环语句 continue⑷循环或多分支终止语句 break⑸无条件转移语句 goto⑹返回语句 return要特别注意各控制结构的流程基本控制结构复合表达式语句
C语言允许把一组语句括在花括号之中构成一个语句块,称之为复合语句。例如
{charch; ch=getchar(); putchar(ch);}2、基本控制结构的使用字符图形的输出(考试),最大公约数最小公倍数,素数(考试),穷举法,迭代法的简单实用例题1.3(考试)1.main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=i;j++)
printf(““);printf(“******\n”);
}}
可选的C框架#include<stdio.h>voidmain()/*某些编译器的要求*/{…………}严格的C框架#include<stdio.h>intmain()/*理论上int可以省略*/{……
return0;
/*省略时编译器可能给出警告*/}部分辅助调用#include<stdio.h>voidmain(){…………
getchar();
/*等待按回车后窗口才关闭*/}综合程序的开发流程我们已了解到编码只是软件开发的一个阶段,而且是处在实现阶段。对于C语言的初学者,由于没有正式接受系统化开发方法的指导,往往会形成一个错误的认识:程序的开发就是编码。也就是说,拿到问题后,马上就开始写程序。这种做法的不良后果初学者无法体会到,是因为他们所面临的需要解决的问题,无论从规模而言,还是从难易程度而言,实在是太小了。所以在直接编写程序的过程中,大脑已经让初学者无意识地完成了问题的定以和设计过程。但是,这种侥幸的“个体化”做法对于复杂的现实问题的解决是绝对行不通的。虽然目前我们还谈不到软件项目的开发,但是相对初学阶段,我们已经可以解决较为复杂的问题了,即进入综合程序的阶段,因此,必须从现在开始,树立正确的开发观,为今后专业化开发打好基础。综合程序的开发流程遵循软件的开发流程,大型综合程序的开发经历问题定义、分析、设计、编码、测试和维护几个阶段。综合程序的开发流程问题定义
问题定义阶段是整个过程中占用时间最少的阶段,在这个步骤中我们的任务是明确要解决的问题是什么。如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会浪费时间和金钱,结果是毫无意义的。在综合程序训练时期,欲解决的问题可由教师提供,或者由学生自行选题。假若是后者,那么学生必须动动脑筋,寻找身边有哪些事情可用计算机解决,然后确定一个可行的。例如,某位同学非常熟悉Windows系统中自带的扫雷游戏,于是他以此为题,即自己实现。程序分析
这个阶段的任务仍然不是具体地解决问题,而是理解问题和分析问题,确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。例如:开局功能、挖雷功能、标记雷功能、标记疑问功能、自动挖开功能。到这里,程序分析的工作就结束了。接下来,将进入下一阶段——程序设计——的工作。可能的输入或输出数据是什么。程序设计
著名计算机科学家NikiklausWirth提出了公式:程序=算法+数据结构,这一公式反映了程序的两个要素:算法和数据结构,实际上,程序还应当有另外两个要素:程序设计方法和语言工具。这四个方面是一个程序设计人员所应具备的知识。算法是灵魂,数据结构是加工对象,语言是工具,程序设计需要好的设计方法。<>
C语言程序设计
第二章程序的灵魂——算法程序设计包括的内容:数据结构:数据的类型和组织形式算法:操作步骤的描述NikiklausWirth提出:
程序=数据结构+算法教材认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
灵魂加工对象工具程序设计程序这个阶段的设计工作,应该对要解决的问题设计出具体的解决方案,得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用C语言书写的程序。当然,程序设计将采用结构化程序设计方法,自顶向下逐步求精地设计出综合程序的实现“蓝图”。为此,我们首先介绍结构化程序设计方法,然后列举描述算法的常用工具,什么是结构化程序设计呢?结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。设计工具
在理想情况下,设计的描述应该采用自然语言来表达,不熟悉软件的人不需要重新学习就可以理解。但是,自然语言在语法和语义上往往具有多义性,常常要依赖上下文才能把问题交代清楚,而且即使可以描述,也需要大量的篇幅,非常烦琐。所以必须使用简洁的方式表达整体结构,用约束性强的方式来表达算法。设计工具可以对设计进行无歧义的描述,能指明控制流程、处理功能以及其它方面的实现细节。俗话说“千言万语抵不过一幅画”,下面的三种常用工具是图形方式的工具。层次图层次图用来描述软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用关系。学生成绩管理系统成绩录入成绩查询成绩输出程序流程图程序流程图是历史最悠久使用最广泛的描述软件设计的方法。它的主要优点是对控制流程的描述很直观,便于初学者掌握,但这种用箭头代表控制流的方法,容易使程序员不受任何约束,可以完全不顾结构化程序设计的精神,随意转移控制。盒图(N—S图)盒图上能明确表达功能域,不可能任意转移控制,很容易确定局部和全局数据的作用域,很容易表现嵌套关系,而且也可以表示模块的层次结构。所以坚持使用盒图作为设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。图形工具表示设计确实比较直观,但画起来比较费劲,所以描述设计还可以使用伪码这个常用的语言工具。伪码是一种“混合”语言,它使用一种语言——通常是某种自然语言——的词汇,同时却使用某种结构化程序设计语言的语法。这样,它具有严格的关键字外部语法,而表示实际操作和条件的内部语法又是灵活自由的,书写方便,也比较好懂。考试统计问题算法的伪码表示。
>
总结怎样表示一个算法自然语言表示2.2节例。易懂,文字冗长,易歧义性流程图表示用流程图符号构成,直观,易懂
N-S流程图表示伪代码表示计算机语言表示
顺序结构选择结构循环结构<>
C语言程序设计
第二章程序的灵魂——算法
传统流程图流向混乱、可读性差,所以应该采用结构化流程图。结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)
结构化程序:由三种基本结构反复嵌套构成的程序优点:结构清晰,易读,提高程序设计质量和效率三种基本结构顺序结构ABAB流程图N-S图<>
C语言程序设计
第二章程序的灵魂——算法PAB真假PBA真假选择结构kA1A2AiAnk=k2k=k1k=knk=ki......二分支选择结构多分支选择结构<>
C语言程序设计
第二章程序的灵魂——算法循环结构当型循环结构直到型循环结构PA假真当P为真AAP真假A直到P为真注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构<>
C语言程序设计
第二章程序的灵魂——算法
三种基本结构的共同特点:只有一个入口;只有一个出口;结构内的每一部分都有机会被执行到;结构内不存在“死循环”。<<>
C语言程序设计
第二章程序的灵魂——算法
算法的概念为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建造房子等。算法核心是解决“做什么”和“怎么做”的问题。例:求1……5之积。可以有多种方法,一般采用简单和运算步骤少的。准确、高效计算机算法类别数值运算算法非数值运算算法<>
C语言程序设计
第二章程序的灵魂——算法简单算法举例例2.1方法1:累乘方法2:用循环结构解决,灵活、通用。例2.2通过循环选择打印例2.3判断闰年例2.4累加求级数的和,循环改变正负号和分母加1。例2.5判断素数课后认真思考,加深什么是算法的概念<>
C语言程序设计
第二章程序的灵魂——算法算法的特性有穷性—在合理范围内可完成确定性—无歧义性有零个或多个输入—从外界得到信息有一个或多个输出—问题的答案有效性—每步有确定的结果例题1输入二个整数m和n,输出其中的最大值#include<stdio.h>main(){intm,n;scanf("%d",&m);scanf("%d",&n);if(m>=n)printf("%d\n",m);elseprintf("%d\n",n);}1、选择结构程序设计实验练习例判断点是否在圆上:由键盘输入一个点的坐标,要求编程判断这个点是否在单位圆上,点在圆上输出Y,不在圆上输出N。使用小数点后3位精度进行判断。[第一组自测数据][键盘输入]0.707,0.707↙[正确输出]Y[第二组自测数据][键盘输入]0.5,0.5↙[正确输出]N[提示](1)平面上的点与圆的关系分为在圆内、在圆上、在圆外三种,本题要求判断是否在圆上;(2)判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度(本题为0.001)的方法实现。#include"stdio.h"#include"math.h"voidmain(){floata,b;scanf("%f,%f",&a,&b);if(fabs(a*a+b*b-1)<1e-3)printf("Y\n");elseprintf("N\n");}}参考程序:简单计算器下面程序是实现一个简单的运算器(保留两位小数点),如果由键盘输入10+50,计算机可以输出结果60.00;如果输入8*6,计算机输出48.00;如果输入20/4,计算机输出5.00;如果输入8-6,计算机输出2.00,请在空处填上适当的代码,运行通过后并提交。[第一组自测数据][键盘输入]45*2↙[第二组自测数据][键盘输入]50.1-23↙#include"stdio.h"voidmain(){floata,b,c;charop;scanf("%f%c%f",
);switch(op){case'+':
;case'-':
_;case'*':
_;case'/':
__;default:printf("error");}printf("result=
",c);}参考程序:#include<stdio.h>intmain(){floata,b,c;charop;scanf("%f%c%f",&a,&op,&b);switch(op){case'+':c=a+b;break;case'-':c=a-b;break;case'*':c=a*b;break;case'/':c=a/b;break;default:printf("error");break;}printf("result=%.2f",c);}例题2输出100以内所有偶数#include<stdio.h>main(){inti;for(i=1;i<=100;i++){if(i%2==0)printf("%d\t",i);}
printf("\n");}>
C语言程序设计
第二章程序的灵魂——算法练习求1+2+3+。。。+100的算法流程图。<计算数列和有数列:编程实现,由键盘输入n,计算输出数列前n项和。(结果保留四位小数)#include<stdio.h>main(){inti,t,n;floata=2,b=1,s=0;scanf("%d",&n);for(i=1;i<=n;i++){s=s+a/b;t=a;a=a+b;b=t;}printf("%.4f\n",s);}参考程序:回忆:例题1.3(考试)1.main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=i;j++)
printf(““);printf(“******\n”);
}}
由键盘输入正数n,要求输出2*n+1行的菱形图案。要求菱形左边紧靠屏幕左边。菱形图案#include"stdio.h"#include"math.h"main(){intn,i,j,k;scanf("%d",&n);for(i=1;i<=2*n+1;i++){k=abs(n+1-i);for(j=1;j<=k;j++)printf("");for(j=1;j<=2*n+1-2*k;j++)printf("*");printf("\n");}}参考程序:由键盘输入正数n,要求输出中间数字为n的菱形图案。要求菱形左边紧靠屏幕左边。[键盘输入]4↙[正确输出]1121123211234321123211211[键盘输入]3↙[正确输出]1121123211211参考程序:参考程序:#include<stdio.h>#include<math.h>main(){intn,i,j,k,h;scanf("%d",&n);for(i=-n+1;i<=n-1;i++){for(j=0;j<abs(i);j++)printf("");for(k=1;k<=n-abs(i);k++)printf("%d",k);for(h=n-abs(i)-1;h>=1;h--)printf("%d",h);printf("\n");}}*****************************************《c语言程序设计》课程设计*****************************************程序设计:XX系XX专业XXXXXXX年XX月XX日_练习(完成这样的设计程序)1、软件封面(参考)1、一元二次方程求根2、循环3、。。。。。0、退出请选择(0---n):2、登录成功后主菜单(参考选择菜单)实验题目1-1上机要求:按程序功能要求编写程序,程序功能:从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。如输入:
54321则输出(□表示空格,↙表示回车):5□5□5□5□5↙□4□4□4□4↙□□3□3□3↙□□□2□2↙□□□□1↙示例说明:输出共5行,居中对齐形状。输入的第1个数为5,则输出的第1行有5个5,数字之间含有1个空格,第1个5之前有5-5=0个空格;输入的第2个数为4,则输出的第2行有4个4,数字之间含有1个空格,第1个4之前有5-4=1个空格;以此类推。再如输入:
23212则输出(□表示空格,↙表示回车):□□□2□2↙□□3□3□3↙□□□2□2↙□□□□1↙□□□2□2↙示例说明:输出共5行,居中对齐形状。输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。实验二数组与函数一、复习数组概念数组排序问题找出矩阵中最大值所在的位置进制转换本章要点什么是数组?为什么要使用数组?如何定义数组?如何引用数组元素?二维数组的元素在内存中按什么方式存放?什么是字符串?字符串结束符的作用是什么?如何实现字符串的存储和操作,包括字符串的输入和输出?怎样理解C语言将字符串作为一个特殊的一维字符数组?数组:相同类型数据的有序集合,在内存中连续存放。由数组名和下标惟一地确定每个数组元素每个元素都属于同一类型一批相同类型的变量使用同一个数组变量名,用下标来相互区分。优点:表述简洁,可读性高;便于使用循环结构定义数组类型名数组名[数组长度]引用数组元素数组名[下标]inta[10];a[0]=a[9]=0;a[k]=temp;区分数组的定义和数组元素的引用下标不要越界数组长度为常量
使用一维数组编程数组和循环for(i=0;i<n;i++)
printf("%d",a[i]);数组下标作为循环变量,通过循环,逐个处理数组元素
一维数组示例例1用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。1,1,2,3,5,……例2输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“NotFound”。例3输入n(n<10),再输入n个数(1)求最小值(2)求最小值和它所对应的下标(3)将最小值与第一个数交换,输出交换后的n个数例4输入n(n<10),再输入n个数,用选择法将它们从小到大排序后输出。用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。1,1,2,3,5,8,13,……用数组计算并存放fibonacci数列的前20个数f[0]=f[1]=1f[n]=f[n-1]+f[n-2]2≤n≤19例1计算fibonacci数列输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“NotFound”。输入:298969输出:1输入:298967输出:NotFound例2在数组中查找一个给定的数#include<stdio.h>intmain(void){inti,flag,x;inta[5];printf(“Enter5integers:");for(i=0;i<5;i++)scanf("%d",&a[i]);printf(“Enterx:");scanf("%d",&x);flag=0;
for(i=0;i<5;i++)if(a[i]==x){printf("Indexis%d\n",i);flag=1;break;}
if(flag==0)
printf("NotFound\n");return0;}例2源程序Enter5integers:29819Enterx:9Indexis1Enter5integers:29819Enterx:7NotFound#include<stdio.h>intmain(void){inti,flag,x;inta[5];printf(“Enter5integers:");for(i=0;i<5;i++)scanf("%d",&a[i]);printf(“Enterx:");scanf("%d",&x);flag=0;
for(i=0;i<5;i++)if(a[i]==x){printf("Indexis%d\n",i);flag=1;break;}
if(flag==0)
printf("NotFound\n");return0;}例2思考(1)Enter5integers:29819Enterx:9Indexis1Indexis4#include<stdio.h>intmain(void){inti,sub,x;inta[5];printf(“Enter5integers:");for(i=0;i<5;i++)scanf("%d",&a[i]);printf(“Enterx:");scanf("%d",&x);sub=-1;
for(i=0;i<5;i++)if(a[i]==x)sub=i;
if(sub!=-1)printf("Indexis%d\n",i);
elseprintf("NotFound\n");return0;}例2思考(2)Enter5integers:29819Enterx:9Indexis4输入n(n<10),再输入n个数,输出最小值和它所对应的下标。用index记录最小值对应的下标a[index]就是最小值例3(2)求最小值及其下标#include<stdio.h>intmain(void){inti,index,n;inta[10];printf(“Entern:");scanf("%d",&n);printf(“Enter%dintegers:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);
index=0;for(i=1;i<n;i++)if(a[i]<a[index])index=i;
printf("minis%d\tsubis%d\n",a[index],index);return0;}求最小值及下标Entern:6Enter6integers:29-1816minis-1subis2
输入n(n<10),再输入n个数,将最小值与第一个数交换,输出交换后的n个数。用index记录最小值对应的下标a[index]就是最小值最小值与第一个数交换a[index]<==>a[0]例3(3)交换最小值例选择法排序35281输入n(n<10),再输入n个数,用选择法将它们从小到大排序后输出。设n=535281(1)15283(2)2583(3)385(4)58流程图输入数组ak=0k<n-1a[i]<a[index]index=i假(0)假(0)真(非0)真(非0)i=i+1交换a[index]和a[k]输出数组aindex=ki=k+1k=k+1i<n假(0)练习
一、统计不同数字个数由键盘输入20个整数,统计不同数字的个数。[自测数据][键盘输入]7051422192996713665934438221139223311↙[正确输出]16参考程序:
#include"stdio.h"main(){inta[20];inti,t,p=0;for(i=0;i<20;i++){scanf("%d",&a[i]);for(t=0;t<i;t++)if(a[t]==a[i])break;if(t==i)p++;}printf("%d",p);}将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及它的行下标和列下标,并输出该矩阵。
1程序解析2二维数组的定义和引用3二维数组的初始化4使用二维数组编程
找出矩阵中最大值所在的位置二维数组多维数组的空间想象二维数组:一个表格或一个平面矩阵一维数组:一列长表或一个向量多维数组:多维空间的一个数据列阵三维数组:三维空间的一个方阵2二维数组的定义和引用1、定义类型名数组名[行长度][列长度]inta[3][2];定义1个二维数组a,3行2列,6个元素intb[5][10];定义1个二维数组a,5行10列,50个元素4使用二维数组编程行下标和列下标分别做为循环变量,通过二重循环,遍历二维数组通常将行下标做为外循环的循环变量列下标内循环定义1个3*2的二维数组a,数组元素的值由下式给出,按矩阵的形式输出a。a[i][j]=i+j(0≤i≤2,0≤j≤1)例
生成一个矩阵并输出inta[3][2];a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]011223#include<stdio.h>intmain(void){inti,j;inta[3][2];for(i=0;i<3;i++)for(j=0;j<2;j++)a[i][j]=i+j;for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%4d",a[i][j]);printf("\n");}return0;}a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]i=0j=0i=0j=1i=1j=0i=1j=1i=2j=0i=2j=1源程序011223例
输入一个以回车结束的字符串(少于10个字符),它由数字字符组成,将该字符串转换成整数后输出。1程序解析2一维字符数组3字符串进制转换程序解析-进制转换#include<stdio.h>intmain(void){inti,n;chars[10];
printf(“Enterastring:");
/*输入字符串*/i=0;while((s[i]=getchar())!='\n')i++;s[i]='\0';
n=0;/*将字符串转换为整数*/for(i=0;s[i]!='\0';i++)if(s[i]<='9'&&s[i]>='0')n=n*10+(s[i]-'0');else
break;printf("digit=%d\n",n);return0;}Enterastring:
123digit=123一维字符数组字符串的存储和运算可以用一维字符数组实现一维字符数组的定义、引用、初始化与其他类型的一维数组一样。charstr[80];
定义一个含有80个字符型元素的数组strchart[5]={'H','a','p','p','y'};初始化数组t
t[0]t[1]t[4]t
Happy输出数组t的所有元素for(i=0;i<5;i++)putchar(t[i]);字符串字符串常量用一对双引号括起来的字符序列一个字符串结束符'\0'"Happy"6个字符'H''a’'p’'p’'y''\0'有效字符字符串结束符字符串的有效长度:有效字符的个数字符串与一维字符数组字符串:一个特殊的一维字符数组把字符串放入一维字符数组(存储)对字符串的操作===>对字符数组的操作2.对字符串的操作把字符串放入一维字符数组(存储)对字符串的操作===>对字符数组的操作普通字符数组:数组元素的个数是确定的,一般用下标控制循环字符串:没有显式地给出有效字符的个数,只规定在字符串结束符
'\0'
之前的字符都是字符串的有效字符,一般用结束符
'\0'
来控制循环循环条件:s[i]!='\0'3.字符串的存储-赋值和输入把字符串放入一维字符数组(存储)对字符串的操作===>对字符数组的操作存储数组初始化staticchars[6]="Hello";赋值s[0]='a';s[1]='\0';或者staticchars[6]="a";"a”2个字符'a'和'\0''a'1个字符常量区分"a"和'a'字符串的输入字符串的存储字符数组初始化:staticchars[6]="Happy";赋值:s[0]='a';s[1]='\0';输入'\0'代表空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋买卖合同格式模板
- 2024舞蹈教室租赁合同样本
- 2024年家庭居室装修工程协议
- 年西安市设备技术转让合同样本-合同范本
- 2024工程建设招标投标协议合同范本
- 简约技术专利权转让合同
- 2024公司股份转让合同股份转让后可以毁约
- 2024年车辆矿石运输合同范本
- 废料回收权转让协议
- 公司流动资金借款合同
- 高效沟通与管理技能提升课件
- 消防维保方案 (详细完整版)
- 四年级上册英语课件- M3U1 In the school (Period 3 ) 上海牛津版试用版(共15张PPT)
- 档案馆建设标准
- 高边坡支护专家论证方案(附有大量的图件)
- 苏教版五年级上册数学试题-第一、二单元 测试卷【含答案】
- 人员定位矿用井口唯一性检测系统
- 电力系统数据标记语言E语言格式规范CIME
- 历史纪年与历史年代的计算方法
- 快递物流运输公司 国际文件样本 形式发票样本
- 管理信息系统题目带答案
评论
0/150
提交评论