版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息系统程序设计实验(C语言),一、课程设计目的,C语言程序设计课程设计是电子信息、光信息专业集中实践性环节之一,是学习完C语言程序设计课程后进行的一次全面的综合练习,其目的在于加深对程序设计基本知识的理解,掌握使用C语言进行模块化软件设计的基本方法,提高通过编写程序解决实际问题的能力,为今后从事设计工作和后续各种编程课程的学习打好基础。,二、课程与相关课程的联系与分工,先修课为C语言程序设计和算法与数据结构。后续课为数据库原理与应用和软件系统基础。 本课程设计是为了让学生巩固C语言程序设计课程学到的知识,熟练C开发工具,运用算法与数据结构课程学到的算法设计思想解决实际应用问题。并为后续课程数
2、据库原理及应用和软件系统基础等奠定基础。,教学要求,为了使学生从课程设计中取得实际效果,对课程设计题目分成二类:一类为基本设计题目,主要是程序设计的常用算法的综合训练,要求学生独立完成;另一类为综合设计题目,具有较高的难度和工作量,以23人组成的项目小组、团队合作的方式完成。学生可根据自己的实际情况选择综合设计题目完成课程设计,鼓励学生选择综合设计题目、培养团队合作的能力。,基本要求:,要求学生做好预习,掌握设计过程中涉及到的算法,按设计流程编程,上机调试通过,验证结果并进行分析、完成课程实验设计报告,最后对所完成的工作进行答辩。,实验安排,实验安排,实验安排,实验安排,课程实验的实施过程,整
3、个课程实验在综合实验阶段要分成以下几个阶段进行:开题,系统设计,系统编码实现,系统测试,系统评价与验收。 (1) 开题 课程设计题目来自教师指定的参考题目,也可自由选题,但要老师批准。特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。,课程实验的实施过程,(2) 系统设计 系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细的分工。在确定解决方案框架过程中,考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的功能以及函数之间的调用关系。每个明确的功能模块程序一般不超过60行,否则要进一步划分。,课程实验的实施
4、过程,(3)系统编码实现 小组成员根据初步的系统设计方案,对系统编程实现。 (4) 系统测试 在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。,课程实验的实施过程,(5) 书写课程设计报告 课程设计报告应至少包含以下内容: 问题描述:题目要解决的问题是什么。 设计说明:模块设计和主要算法思想(用流程图表示)等。 调试报告:调试过程中遇到的主要问题及解决方法;对设计和编码的回顾讨论和分析;改进设想;经验和体会等。 。,课程实验的实施过程,(6) 系统评价与验收 通过答辩的形式对程序的功能进行评价与验收,课程设计指导方式,前面基础实验由教师布置任务,学生在课堂上调试完成,写出实验报告,
5、提交上来。 综合实验,由教师召开课程设计动员会,进行分组,指定课程设计的题目和内容,讲解部分题目要求。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成题目。最后由指导教师进行验收及成绩评定。,课程实验考核方法及成绩评定,1、通过程序实现、设计报告和学习态度等综合考评,评定成绩。,课程实验考核方法及成绩评定,2、评分标准 从以下五个方面评出课程设计完成后的综合分: 设计报告占30% 系统完成情况及编程工作量占30% 编程难度和程序亮点占10% 回答教师所提出的问题占20% 课程设计过程中的工作态度(考勤)占10%,课程实验考核方法及成绩评定,(2) 以项目小组、团队合作方式完成的综合
6、设计题目,对每一组按以上标准给出综合分,并将该分作为这组中最优秀同学的得分,其他同学的分数根据其在组中所承担的任务和表现进行相应的调整。 (3) 根据课程综合实验设计的选题新颖性、独立分析解决问题的能力和创新精神等,予以适当加分。,主要教材及参考书,参考教材: 2 曹哲. C语言实验与课程设计. 机械工业出版社. 2010. C语言课程设计作者:刘博,董学文编著:机械工业出版社 C语言程序设计综合实验指导主编:颜晖,张引 出版社:浙江大学出版社,指导书:,C程序设计基础与实验作者:颜晖 出版社:浙江大学出版社 C程序设计题解与上机指导(第二版)作者:谭浩强主编 清华大学出版社 C语言实验与课程
7、设计. 王新,孙雷编著清华大学出版社,两大上机环境,VC+,Visual C+ 6.0 基于Windows平台 支持C和C+,需建工程/工作区,可能死机 Microsoft Visual C+ 6.0 图标 TC,Turbo C 2.0 基于DOS平台,不支持鼠标、复制/粘贴 标准C D:TCTC.BAT 或 D:TCBINTC.EXE,VC+上机关键操作,建立文件 FileNewFileC+Source 输入文件名并选择路径 编写并保存代码 编译:BuildBuild 按提示建立workspace 运行:BuildExecute 关闭:FileClose Workspaces,TC上机关键操
8、作,注:按Alt+第一字母进入相应主菜单项 建立文件:FileNew 编写代码:Edit 保存:FileSave 输入文件名 编译:CompileBuild all 运行:RunRun 查看结果:RunUser screen,TC上机快捷键(1),进入,退出,全屏/窗口 Ctrl-Enter切换全屏/窗口模式 F10进入主菜单 程序编辑,存盘,装入 Insert,Delete,BackSpace,Home,End Alt-E进入程序编辑窗口 F2源程序存盘 F3打开源程序 编译、连接 Compiler、Link、Build All,TC上机快捷键(2),运行、中止 Ctrl-F9运行程序 Al
9、t-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),关于Turbo C环境(1),设定工作目录 FileChange dir菜单项,键入工作目录 按Alt-F进
10、入File主菜单,或F10进入主菜单行 装入文件 FileLoad菜单项 回车并在列表中选择源文件 新建文件:FileNew 修改后保存文件 常规保存FileSave 或FileWrite to将文件另存为,关于Turbo C环境(2),编译文件 CompileBuild all菜单项 按Alt-C进入Compile主菜单,或按F10 成功指示:Success 编译结果 Linking E:xxxxxx.EXE 运行文件 RunRun菜单项,Ctrl-F9 按Alt-R进入Run主菜单,关于Turbo C环境(3),观看运行结果 RunUser screen,Alt-F5 单步跟踪 RunSt
11、ep over,F8 观察变量/表达式 Break/watchAdd watch,Ctrl-F7 按Alt-B进入Break/watch主菜单,关于VC+环境,启动位置 开始菜单Microsoft Visual Studio 6.0 Microsoft Visual C+ 6.0 编译错误时错误列表 编译子窗口可拉大,滚动轮显示不同错误,双击错误点 死机问题(编译死机,红无法关闭窗口) Ctrl-Alt-Del启动任务管理器 应用程序结束任务 重新运行VC+ 6.0 窗口直接关闭,程序最后追加getchar();语句,上机部分问题(1)保存问题,文件保存 新建文件的操作步骤错误 TurboC:
12、FileNew,FileSave,xxx.C VC+中步骤:新建文件C+Sourcexxx.C 源程序的扩展名必须为C,不能为其它,也不能有多个 基本名由字母、数字、下划线、减号等组成,基本名不要包含小数点、空格、加号等,最好不要超过8个字符,各级目录名也等同命名 不合适的文件名如: ex1-1.txt,ex1.1.c,ex1.1,ex1-1.cpp 上机考以源程序为依据,注意源程序保存,上机部分问题(2)拼写问题,d /n int n: #include; ()混淆 includ,stido mian,pritf,%d n int n; #include,上传系统的要求,源程序的编写、运行、
13、调试、上传可以使用Visual C+环境 但编程题的自动判分必须使用TurboC编译 D:TCTC.BAT或D:TCBINTC.EXE 并且程序的文件名、各级目录名 不能使用中文,仅字母、数字、下划线、减号 注意输出与样例应严格一致,包括大小写 Yes、YES、yes互不相同,实验一 基础实验,1、复习回顾基本语句 2、强调结构程序设计的概念 学会画算法流程图。 3、通过例题,习题加强基本的程序设计的能力,1、基本控制结构(特别注意+,-运算符进入条件表达式),流程控制语句 条件语句ifelse switch语句 循环语句 for语句、while语句、dowhile语句 提前结束本次循环语句c
14、ontinue 循环或多分支终止语句break 无条件转移语句goto 返回语句return,要特别注意各控制结构的流程,基本控制结构,复合表达式语句 C语言允许把一组语句括在花括号之中构成一个语句块,称之为复合语句。例如 char ch; ch=getchar(); putchar(ch); ,2、基本控制结构的使用,字符图形的输出(考试),最大公约数最小公倍数,素数(考试),穷举法,迭代法的简单实用,例题1.3(考试),1. main() int i,j; for(i=1;i=4;i+) for(j=1;j=i;j+) printf(“ “); printf(“*n”); ,可选的C框架,
15、#include void main() /*某些编译器的要求*/ ,严格的C框架,#include int main() /*理论上int可以省略*/ return 0; /*省略时编译器可能给出警告 */ ,部分辅助调用,#include void main() getchar(); /*等待按回车后窗口才关闭*/ ,综合程序的开发流程,我们已了解到编码只是软件开发的一个阶段,而且是处在实现阶段。对于C 语言的初学者,由于没有正式接受系统化开发方法的指导,往往会形成一个错误的认识: 程序的开发就是编码。也就是说,拿到问题后,马上就开始写程序。这种做法的不良后果 初学者无法体会到,是因为他们
16、所面临的需要解决的问题,无论从规模而言,还是从难易 程度而言,实在是太小了。,所以在直接编写程序的过程中,大脑已经让初学者无意识地完成了问题的定以和设计过程。但是,这种侥幸的“个体化”做法对于复杂的现实问题的解决是绝对行不通的。虽然目前我们还谈不到软件项目的开发,但是相对初学阶段,我们已经可以解决较为复杂的问题了,即进入综合程序的阶段,因此,必须从现在开始,树立正确的开发观,为今后专业化开发打好基础。,综合程序的开发流程,遵循软件的开发流程,大型综合程序的开发经历问题定义、分析、设计、编码、测试 和维护几个阶段。,综合程序的开发流程,问题定义,问题定义阶段是整个过程中占用时间最少的阶段,在这个
17、步骤中我们的任务是明确要解决的问题是什么。如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会浪费时间和金钱,结果是毫无意义的。 在综合程序训练时期,欲解决的问题可由教师提供,或者由学生自行选题。假若是后者,那么学生必须动动脑筋,寻找身边有哪些事情可用计算机解决,然后确定一个可行的。 例如,某位同学非常熟悉Windows 系统中自带的扫雷游戏,于是他以此为题,即自己实现。,程序分析,这个阶段的任务仍然不是具体地解决问题,而是理解问题和分析问题,确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。 例如:开局功能、挖雷功能、标记雷功能、标记疑问功能、自动挖开功
18、能。 到这里,程序分析的工作就结束了。接下来,将进入下一阶段程序设计的工作。可能的输入或输出数据是什么。,程序设计,著名计算机科学家Nikiklaus Wirth 提出了公式:程序=算法+数据结构,这一公式反映 了程序的两个要素:算法和数据结构,实际上,程序还应当有另外两个要素:程序设计方法 和语言工具。 这四个方面是一个程序设计人员所应具备的知识。算法是灵魂,数据结构是加工对象,语言是工具,程序设计需要好的设计方法。,C语言程序设计 第二章 程序的灵魂算法,程序设计包括的内容: 数据结构:数据的类型和组织形式 算法:操作步骤的描述,Nikiklaus Wirth提出:,教材认为:,程序,=算
19、法+数据结构+程序设计方法+语言工具和环境,灵魂,加工对象,工具,程序设计,程序这个阶段的设计工作,应该对要解决的问题设计出具体的解决方案,得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用C 语言书写的程序。 当然,程序设计将采用结构化程序设计方法,自顶向下逐步求精地设计出综合程序的实现“蓝图”。为此,我们首先介绍结构化程序设计方法,然后列举描述算法的常用工具,,什么是结构化程序设计呢?,结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。,设计工具,在理想情况下,设计的描述应该采用自然语言来表达,不熟悉软件的人不需要重新学习就可以理
20、解。但是,自然语言在语法和语义上往往具有多义性,常常要依赖上下文才能把问题交代清楚,而且即使可以描述,也需要大量的篇幅,非常烦琐。所以必须使用简洁的方式表达整体结构,用约束性强的方式来表达算法。设计工具可以对设计进行无歧义的描述,能指明控制流程、处理功能以及其它方面的实现细节。俗话说“千言万语抵不过一幅画”,下面的三种常用工具是图形方式的工具。,层次图,层次图用来描述软件的层次结构,图中的一个矩形框代表一个模块,方框间的连线表示调用关系。,学生成绩管理系统,成绩录入,成绩查询,成绩输出,程序流程图,程序流程图是历史最悠久使用最广泛的描述软件设计的方法。它的主要优点是对控制流程的描述很直观,便于
21、初学者掌握,但这种用箭头代表控制流的方法,容易使程序员不受任何约束,可以完全不顾结构化程序设计的精神,随意转移控制。,盒图(NS图),盒图上能明确表达功能域,不可能任意转移控制,很容易确定局部和全局数据的作用域, 很容易表现嵌套关系,而且也可以表示模块的层次结构。所以坚持使用盒图作为设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。,图形工具表示设计确实比较直观,但画起来比较费劲,所以描述设计还可以使用伪码这个常用的语言工具。伪码是一种“混合”语言,它使用一种语言通常是某种自然语言的词汇,同时却使用某种结构化程序设计语言的语法。这样,它具有严格的关键字外部语法,而表示实际
22、操作和条件的内部语法又是灵活自由的,书写方便,也比较好懂。,考试统计问题算法的伪码表示。,总结,怎样表示一个算法 自然语言表示 2.2节例。易懂,文字冗长,易歧义性 流程图表示 用流程图符号构成,直观,易懂 N-S流程图表示 伪代码表示 计算机语言表示,顺序结构 选择结构 循环结构,C语言程序设计 第二章 程序的灵魂算法,传统流程图流向混乱、可读性差,所以应该采用结构化流程图。 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序 优点:结构清晰,易读,提高程序设计质量和效率,三种基本结构 顺序结构,C语言
23、程序设计 第二章 程序的灵魂算法,选择结构,二分支选择结构,多分支选择结构,C语言程序设计 第二章 程序的灵魂算法,循环结构,当型循环结构,直到型循环结构,注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构,C语言程序设计 第二章 程序的灵魂算法,三种基本结构的共同特点: 只有一个入口; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环”。,C语言程序设计 第二章 程序的灵魂算法,算法的概念 为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建造房子等。 算法核心是解决“做什么”和“怎么做”的问题。 例:求15之积。 可以有多种方法,一般采用简
24、单和运算步骤少的。准确、高效 计算机算法类别 数值运算算法 非数值运算算法,C语言程序设计 第二章 程序的灵魂算法,简单算法举例 例2.1 方法1:累乘 方法2:用循环结构解决,灵活、通用。 例2.2 通过循环选择打印 例2.3 判断闰年 例2.4 累加求级数的和,循环改变正负号和分母加1。 例2.5 判断素数,课后认真思考,加深什么是算法的概念,C语言程序设计 第二章 程序的灵魂算法,算法的特性 有穷性在合理范围内可完成 确定性无歧义性 有零个或多个输入从外界得到信息 有一个或多个输出问题的答案 有效性每步有确定的结果,例题 1输入二个整数m和n,输出其中的最大值,#include main
25、() int m,n; scanf(%d, ,1、选择结构程序设计,实验练习,例判断点是否在圆上: 由键盘输入一个点的坐标, 要求编程判断这个点是否在单位圆上,点在圆上输出Y, 不在圆上输出 N。使用小数点后3位精度进行判断。,第一组自测数据 键盘输入 0.707,0.707 正确输出 Y,第二组自测数据 键盘输入 0.5,0.5 正确输出 N,提示 (1)平面上的点与圆的关系分为在圆内、在圆上、在圆外三种,本题要求判断是否在圆上; (2)判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度(本题为0.001)的方法实现。,#include stdio.h #include math.h
26、 void main() float a,b; scanf(%f,%f, ,参考程序:,简单计算器,下面程序是实现一个简单的运算器(保留两位小数点),如果由键盘输入10+50,计算机可以输出结 果60.00;如果输入86,计算机输出48.00;如果输入20/4,计算机输出5.00;如果输入8-6,计算机 输出2.00,请在空处填上适当的代码,运行通过后并提交。,第一组自测数据 键盘输入 45*2,第二组自测数据 键盘输入 50.1-23,#include stdio.h void main() float a,b,c; char op; scanf(%f%c%f, ); switch (op)
27、 case +: ; case -: _; case *: _; case /: _ ; default: printf(error); printf(result= , c); ,参考程序: #include int main() float a,b,c; char op; scanf(%f%c%f, ,例题2 输出100以内所有偶数,#include main() int i; for (i=1;i=100;i+) if ( i%2=0 ) printf(%dt,i); printf( n ); ,C语言程序设计 第二章 程序的灵魂算法,练习 求1+2+3+。+100的算法流程图。,计算数
28、列和,有数列:,编程实现,由键盘输入n,计算输出数列前n项和。(结果保留四位小数),#include main() int i,t,n; float a=2,b=1,s=0; scanf(%d, ,参考程序:,回忆:例题1.3(考试),1. main() int i,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() int n,i,j,k; scanf
29、(%d, ,参考程序:,由键盘输入正数n,要求输出中间数字为n的菱形图案。要求菱形左边紧靠屏幕左边。,键盘输入 4 正确输出 1 121 12321 1234321 12321 121 1,键盘输入 3 正确输出 1 121 12321 121 1,参考程序:,参考程序: # include # include main() int n,i,j,k,h; scanf(%d, ,* c语言程序设计课程设计 * * 程序设计:XX系XX专业XXX XXXX年XX月XX日 _,练习(完成这样的设计程序),1、软件封面(参考),1、一元二次方程求根 2、循环 3、。 0、退出 请选择(0-n):,2、
30、登录成功后主菜单(参考选择菜单),实验题目1-1,上机要求:按程序功能要求编写程序, 程序功能:从键盘上输入5个整数(设每个整数取值1至5),按示例格式输出5行数字图形,每行的数字及数字个数与输入数相对应。 如输入: 5 4 3 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个空格;以此类推。,再如输入: 2 3 2 1 2 则输出(表示空格,表示回车): 示例说明:输出共5行,
31、居中对齐形状。输入的第1个数为2,则输出的第1行有2个2,数字之间含有1个空格,第1个2之前有5-2=3个空格;以此类推。,实验二 数组与函数,一、复习数组概念,数 组,排序问题 找出矩阵中最大值所在的位置 进制转换,本章要点,什么是数组? 为什么要使用数组? 如何定义数组? 如何引用数组元素? 二维数组的元素在内存中按什么方式存放? 什么是字符串? 字符串结束符的作用是什么? 如何实现字符串的存储和操作,包括字符串的输入和输出? 怎样理解C语言将字符串作为一个特殊的一维字符数组?,数组:相同类型数据的有序集合,在内存中连续存放。 由数组名和下标惟一地确定每个数组元素 每个元素都属于同一类型
32、一批相同类型的变量使用同一个数组变量名,用下标来相互区分。 优点:表述简洁,可读性高;便于使用循环结构,定义数组 类型名 数组名数组长度 引用数组元素 数组名下标 int a10; a0 = a9 = 0; ak = temp;,区分数组的定义和数组元素的引用,下标不要越界,数组长度为常量,使用一维数组编程,数组和循环 for(i = 0; i n; i+) printf(%d , ai); 数组下标作为循环变量,通过循环,逐个处理数组元素,一维数组示例,例 1 用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。1, 1, 2, 3, 5, 例2 输入5个整数,将它们
33、存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。 例 3 输入n(n10),再输入n个数 (1) 求最小值 (2) 求最小值和它所对应的下标 (3) 将最小值与第一个数交换,输出交换后的n个数 例 4 输入n(n10),再输入n个数,用选择法将它们从小到大排序后输出。,用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。 1, 1, 2, 3, 5, 8, 13, 用数组计算并存放fibonacci数列的前20个数 f0 = f1 = 1 fn = fn-1 + fn-2 2n19,例 1 计算fibonac
34、ci数列,输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。 输入:2 9 8 9 6 9 输出:1 输入:2 9 8 9 6 7 输出:Not Found,例2 在数组中查找一个给定的数,#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, ,例 2源程序,Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 1,
35、Enter 5 integers: 2 9 8 1 9 Enter x: 7 Not Found,#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, ,例 2 思考(1),Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 1 Index is 4,#include int main(void) int i, sub, x; int a5; printf(“Enter 5 integers:
36、 ); for(i = 0; i 5; i+) scanf(%d, ,例 2 思考(2),Enter 5 integers: 2 9 8 1 9 Enter x: 9 Index is 4,输入n(n10), 再输入n个数, 输出最小值和它所对应的下标。 用index记录最小值对应的下标 aindex就是最小值,例 3(2) 求最小值及其下标,#include int main(void) int i, index, n; int a10; printf(“Enter n: ); scanf(%d, ,求最小值及下标,Enter n: 6 Enter 6 integers: 2 9 -1 8
37、1 6 min is -1 sub is 2,输入n(n a0,例 3(3) 交换最小值,例 选择法排序,输入n(n10), 再输入n个数,用选择法将它们从小到大排序后输出。 设 n=5 3 5 2 8 1,(1) 1 5 2 8 3 (2) 2 5 8 3 (3) 3 8 5 (4) 5 8,流程图,练习,一、统计不同数字个数 由键盘输入20 个整数,统计不同数字的个数。,自测数据 键盘输入 70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11 正确输出 16,参考程序:,#includestdio.h main() int a20
38、; int i,t,p=0; for(i=0;i20;i+) scanf(%d, ,将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及它的行下标和列下标,并输出该矩阵。 1 程序解析 2 二维数组的定义和引用 3 二维数组的初始化 4 使用二维数组编程,找出矩阵中最大值所在的位置,二维数组,多维数组的空间想象,二维数组: 一个表格或一个平面矩阵,一维数组: 一列长表或一个向量,多维数组: 多维空间的一个数据列阵,三维数组: 三维空间的一个方阵,2 二维数组的定义和引用,1、定义 类型名 数组名行长度列长度 int a32; 定义1个二维数组a,3行2列,6个元素 int b510;
39、定义1个二维数组a,5 行 10 列, 50 个元素,4 使用二维数组编程,行下标和列下标分别做为循环变量, 通过二重循环,遍历二维数组 通常将行下标做为外循环的循环变量 列下标 内循环,定义1个 3*2 的二维数组a,数组元素的值由下式给出,按矩阵的形式输出a。 aij = i + j(0i2,0j1),例 生成一个矩阵并输出,int a32; a00 a01 a10 a11 a20 a21,0 1 1 2 2 3,#include int main(void) int i, j; int a32; for(i = 0; i 3; i+) for(j = 0; j 2; j+) aij =
40、i + j; for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij); printf(n); return 0; ,a00 a01 a10 a11 a20 a21,i = 0 j = 0 i = 0 j = 1 i = 1 j = 0 i = 1 j = 1 i = 2 j = 0 i = 2 j = 1,源程序,0 1 1 2 2 3,例 输入一个以回车结束的字符串(少于10个字符),它由数字字符组成,将该字符串转换成整数后输出。 1 程序解析 2 一维字符数组 3 字符串,进制转换,程序解析-进制转换,#include int ma
41、in(void) int i, n; char s10; printf(“Enter a string: ); /* 输入字符串 */ i = 0; while(si = getchar( ) != n) i+; si = 0; n = 0; /* 将字符串转换为整数 */ for(i = 0; si != 0; i+) if(si = 0) n = n * 10 + (si - 0); else break; printf(digit = %dn, n); return 0; ,Enter a string: 123 digit = 123,一维字符数组,字符串的存储和运算可以用一维字符数组
42、实现 一维字符数组的定义、引用、初始化与其他类型的一维数组一样。 char str80; 定义一个含有80个字符型元素的数组str char t5=H, a, p, p, y; 初始化数组 t,输出数组 t 的所有元素 for(i=0; i5; i+) putchar( ti );,字符串,字符串常量 用一对双引号括起来的字符序列 一个字符串结束符 0 Happy 6个字符 H a p p y 0,有效字符,字符串结束符,字符串的有效长度:有效字符的个数,字符串与一维字符数组,字符串:一个特殊的一维字符数组 把字符串放入一维字符数组(存储) 对字符串的操作 = 对字符数组的操作,2. 对字符串的操作,把字符串放入一维字符数组(存储) 对字符串的操作 = 对字符数组的操作 普通字符数组:数组元素的个数是确定的,一般用下标控制循环 字符串:没有显式地给出有效字符的个数,只规定在字符串结束符 0 之前的字符都是字符串的有效字符,一般用结束符 0 来控制循环 循环条件:si != 0,3. 字符串的存储赋值和输入,把字符串放入一维字符数组(存储) 对字符串的操作 = 对字符数组的操作 存储 数组初始化 static char s6= Hello; 赋值 s0=a; s1=0; 或者 static char s6= a;,a”2 个字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民政救助政策考试题库及答案
- 2026五年级数学 人教版数学乐园实践工作坊
- 智能汽车服务平台
- 低压配电房值班制度
- 会计工作交接制度
- 企业消防安全三级检查制度
- 仪器校准制度
- 京东服务商制度
- 二甲医院院内会诊制度
- 文员下单错误奖惩制度
- 2026年南京机电职业技术学院单招职业适应性测试题库(含答案详解)
- 专题学习《改革开放简史》
- 养生馆公司章程标准文本范例
- 地下车库消防系统施工方案
- 灵活用工人员安全培训课件
- 用电安全进校园宣传课件
- 2026年中国速冻水饺市场运行(产业链、市场规模、价格等)现状及未来发展趋势分析
- 实物期权理论视角下汽车产业并购的价值评估与策略优化研究
- (新教材)2026年人教版一年级下册数学 第二单元 20以内的退位减法 整 理和复习 课件
- 2026年无锡科技职业学院单招综合素质考试必刷测试卷必考题
- 初中地理教学中地图技能培养的教学策略研究课题报告教学研究课题报告
评论
0/150
提交评论