已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言实验指导书太原理工大学计算机与软件学院二九年三月目 录实验一 c语言的运行环境和运行过程.1实验二 c语言运算符和表达式.7实验三 简单的c程序设计.10实验四 选择结构程序设计.12实验五 循环结构程序设计.16实验六 数 组.21实验七 指 针.25实验八 函 数.27实验九 结构体和公用体.32实验十 文 件.34附:模拟试题(一三)提醒:每次实验结束后,应整理出实验报告,实验报告应包括以下内容:题目;程序清单(手写或打印);运行结果(与程序清单对应);对实验内容的分析和取得的经验;遇到的问题。c语言实验指导书实验一 c语言的运行环境和运行过程【目的与要求】1了解dos、windows环境下c语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。2了解在该系统上如何编辑、编译、连接和运行一个c程序。3通过运行简单的c程序,初步了解c源程序的特点。【上机内容】【基础知识】通过课堂上学习,我们对c语言已有了初步了解,对c语言源程序结构有了总体的认识,那么如何在机器上运行c语言源程序呢?任何高级语言源程序都要“翻译”成机器语言,才能在机器上运行。“翻译”的方式有两种,一种是解释方式,即对源程序解释一句执行一句;另一种是编译方式,即先把源程序“翻译”成目标程序(用机器代码组成的程序),再经过连接装配后生成可执行文件,最后执行可执行文件而得到结果。c语言是一种编译型的程序设计语言,它采用编译的方式将源程序翻译成目的程序(机器代码)。运行一个c程序,从输入源程序开始,要经过编辑源程序文件(.c)、编译生成目标文件(.obj)、连接生成可执行文件(.exe)和执行四个步骤。下面简要介绍如何在turbo c下运行c语言程序。turbo c是美国borland公司推出的pc系列机的c语言编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供了集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。1. turbo c工作环境介绍一个c语言程序的实施是从进入turbo c的集成环境开始的,而进入turbo c的集成环境,一般有两种途径:从dos环境进入和从windows环境进入。(1) 从dos环境进入:在dos命令行上键入:ccd tc(指定当前目录为tc子目录)ctc (进入turbo c环境)这时进入turbo c集成环境的主菜单窗口,屏幕显示如图1所示。(2) 从windows环境进入: 在windows 95/98环境中,如果本机中已安装了turbo c,可以在桌面上建立一个快捷方式,双击该快捷图标即可进入c语言环境。或者从开始菜单中找到“运行”,在运行对话框中键入“c:tctc”,“确定”即可。需要说明的是,以上两种方式有一个共同的前提,即turbo c的安装路径为c:tc,如果你的计算机中turbo c的安装路径不同的话,在上述方式中改变相应路径即可。图1 turboc c集成环境刚进入tc环境时,光带覆盖在“file”上,整个屏幕由四部分组成,依次为:主菜单、编辑窗口、信息窗口和功能提示行(或称快速参考行)。 主菜单显示屏的顶部是主菜单条,它提供了8个选择项:file 处理文件(装入、存盘、选择、建立、换名存盘、写盘),目录操作(列表、改变工作目录),退出turbo c,返回dos状态。edit 建立、编辑源文件。run 自动编编译、连接并运行程序。compile 编译、生成目标文件组合成工作文件。project 将多个源文件和目标文件组合成工作文件。option 提供集成环境下的多种选择和设置(如设置存储模式、选择编译参数、诊断及连接任选项)以及定义宏;也可设置include、output及library文件目录,保存编译任选项和从配置文件加载任选项。debug 检查、改变变量的值、查找函数,程序运行时查看调用栈。选择程序编译时是否在执行代码中插入调试信息。break/watch 增加、删除、编辑监视表达式,及设置、清除、执行至断点。在主菜单中,edit选项仅仅是一条进入编辑器的命令。其他选项均为下拉式菜单,包含许多命令选项,使用方向键移动光带来选择某个选项时,按回车键,表示执行该命令,若屏幕上弹出一个下拉菜单,以提供进一步选择。 编辑窗口编辑窗口是在主菜单下,信息窗口之上的区域,其顶行中间有“edit”标志。在此窗口中可以建立、编辑一个源文件。功能键f5可以扩大编辑窗口到整个屏幕,或恢复分屏式环境。进入编辑窗口的方式有两种:l 按f10功能键,激活主菜单,然后用光标移动键将光带移到“edit”上,按回车键,或者在激活主菜单后直接按字母键e,均可进入编辑窗口;l 按alt+e无条件的进入编辑窗口。进入编辑窗口后,编辑窗口的名字是高亮度的,表示它是活动窗口。窗口的顶部第一行是状态行,给出有关正在被编辑文件的信息,如当前光标所在的行、列;编辑模式(插入/改写);正在编辑文件的文件名等等,当需要编辑修改时,在编辑窗口中灵活地使用光标移动键以及编辑命令即可达到预期的效果。表1 常用编辑命令命令功能命令功能home将光标移到行首end将光标移到行尾ins插入/改写两种状态的切换del删除光标所在处的字符pgup向上翻页pgdn向下翻页 光标左右移动 光标上下移动ctrl+y删除光标所在的行ctrl+t删除光标所指的一个单词ctrl+u放弃操作backspac删除光标左边字符ctrl+kb设置(开始)块头标志ctrl+kk设置(结尾)块尾标志ctrl+kv块搬动到光标处ctrl+kc块拷贝到光标处ctrl+ky块删除ctrl+kh取消块定义在插入模式下(用ins键转换)向编辑窗口内输入代码,按回车键结束一行(tc编辑器不能自动换行)。一行最多为248个字符,窗口宽77列,当一行内字符多于77列时,窗口随着字符的输入而左右移动,若发现有错误,可移动光标到出错处更正之;再按一次ins键,转换为替换模式,输入的字符将替换光标所在位置的字符。 信息窗口编译和调试源程序时,信息窗口显示诊断信息、警告信息、出错信息以及错误在源程序中的位置。功能键f5可以扩大和恢复信息窗口,按f6或alt+e,光标从信息窗口跳到编辑窗口。 功能键提示行屏幕底行是功能键提示行,显示当前状态下功能键(俗称turbo c热键)的作用,如表2所示。正确使用功能键可以简化操作。表2 turboc c功能键热键简单说明热键简单说明f1help:以分页的形式显示帮助信息f2save:保存当前正在编辑的文件f3load:装入一个源程序文件f5zoom:缩放活动窗口f6switch:活动窗口开关(切换)f7trace:跟踪到函数中f8step:单步跟踪,但不进入函数内部f9make:对当前文档进行编辑、连接f10menu:激活主菜单,光标跳到主菜单2. turbo c环境中运行c语言程序的步骤(1) 编辑源文件在主菜单下,直接按alt+f键,或按f10后将光带移到“file”选项上,按回车键,在“file”下面出现一个下拉菜单,菜单中有以下选项:load f3 表示加载或装入一个文件pick alt+f3 从指定的文件列表中选择文件装入编辑器。new 表示新文件,缺省文件名为noname.c。save f2 将正在编辑的文件存盘。write to 将正在编辑的程序写入指定的文件中,若文件名已存在,则重写。directory 表示文件目录。change dir 改变驱动器及目录os shell 进入turbo c命令行模式,命令exit可返回集成环境quit alt+x 退出turbo c,返回dos状态。建立一个新文件,可用光标移动键将“file”菜单中的光带移到“new”处,按回车键,即可打开编辑窗口。此时,编辑窗口是空白的,光标位于编辑窗口的左上角,屏幕自动处于插入模式,可以输入源程序。屏幕右上角显示缺省文件名为noname.c,编辑完成之后,可用f2或选择“save”或“write to”进行存盘操作,此时系统将提示用户将文件名修改成为所需要的文件名。若编辑一个磁盘上已存在的程序,可使用菜单中的load或pick将程序装载。(2) 源程序的编译、连接直接按f9键,或将菜单“compile”中的光带移到“make exe file”项上,按回车键,就可实现对源程序的编译、连接。若有错误,则在信息窗口显示出相应的信息或警告,按任意键返回编辑窗口,光标停在出错位置上,可立即进行编辑修改。修改后,再按f9键进行编辑、连接。如此反复,直到没有错误为止,即可生成可执行文件。注意:c程序的连接是在编译后自动完成的。(3) 执行程序直接按ctrl+f9键,即可执行.exe文件;或在主菜单中(按f10进入主菜单)将光带移到“run”选项,按回车键,弹出一个菜单,选择“run”选项,回车。这时并不能直接看到输出结果。输出结果是显示在用户屏幕上,在tc屏幕上看不到,直接按复合键alt+f5,或选择“run”菜单中的“user screen”选项,即可出现用户屏幕,查看输出结果。按任意键返回tc集成环境。另外,选择“run”菜单下的“run”项,或直接按ctrl+f9键,可将c程序的编译、连接、运行一次性完成。如果程序需要输入数据,则在运行程序后,光标停留在用户屏幕上,要求在用户输入数据,数据输入完成后程序继续运行,直至输出结果。如果运行结果不正确或其他原因需要重新修改源程序,则需重新进入编辑状态。修改源程序,重复以上步骤,直到结果正确为止。(4) 退出turbo c集成环境退出turbo c环境,返回操作系统状态。可在主菜单选择“file”菜单的“quit”选项,或者直接按alt+x。在执行退出turbo c环境时,系统将检查当前编辑窗口的程序是否已经存盘,若未存盘,系统将弹出一个提示窗口,提示是否将文件存盘,若按“y”则将当前窗口内的文件存盘后退出;若按“n”则不存盘退出。【示例】【例1】编程实现在屏幕上显示如下三行文字 hello,world! wolcome to the c language world! everyone has been waiting for.在turbo c的集成环境下,键入如下源文件。按alt+f组合键打开file菜单,file菜单中write to选项可将默认noname.c文件名改为任意文件名(不需要输入.c,系统会自动加上)。程序example.c如下:main()printf(hello,world!n);printf(wolcome to the c language world!n);printf(everyone has been waiting for.n);然后用ctrl+f9编辑执行example.c,用alt+f5查看结果,即在屏幕上显示题目要求的三行文字。按任意键重新返回turbo c的编辑环境。注意,在运行程序之前最好先存盘。【例2】输入并运行程序,写出运行结果。main()int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %dn”,sum);运行方法同上,最后结果为:sum is 579【例3】输入并运行如下程序,写出运行结果。main()int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%dn,c);int max(int x,int y)int z;if (xy) z=x;else z=y;return(z);这个程序的功能是对于任意输入的两个整数,输出较大的那个数。所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3,5”,回车,在用户屏幕上就会输出:max=5【练习】1输入并运行例题中程序,熟悉调试c程序的的方法与步骤。2写出一个c程序的构成。3参照例题,编写一个c程序,输出以下信息:* hello,world!*4编写一个c程序,输入a、b、c三个数,输出其中最大者。试想,如果求四个数中的最大者,则程序该如何编写。实验二 c语言运算符和表达式【目的与要求】1掌握c语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2学会使用c语言的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。3进一步熟悉c程序的编辑、编译、连接和运行的过程。【上机内容】【示例】【例1】输入并运行以下程序,写出运行结果。main()char c1,c2;c1=97;c2=98;printf(%c %cn, c1, c2);在此基础上1)加一个下面printf语句,并运行之。printf(%d,%dn,c1,c2 );2)再将第3行改为:int c1,c2;再使之运行。3)再将第4行改为:c1=300; c2=400;再使之运行,分析其运行结果。在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。【例2】分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main()char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%cb%ctab%cn,c1,c2,c3);printf(“tb%c %c”,c4,c5);在该程序中,主要考查对转义字符的掌握情况。【例3】分析下面程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。main()int i , j , m , n ;i=8; j=10;m=+i; n=j+;printf(“%d,%d,%d,%dn”,i,j,m,n);分别作以下改动之后,先分析再运行:1)将第四行改为:m=i+; n= + j;2)程序改为:main() int i , j ;i=8; j=10;printf(“%d,%d”, i+, j+);3)在2)的基础上,将printf语句改为:printf(“%d,%d”, + i, + j );4)再将printf语句改为:printf(“%d,%d,%d,%d”,i,j,i+,j+);5)程序改为:main()int i , j , m=0 , n=0 ;i=8; j=10;m+= i +; n -= -j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);此程序主要考查自加、自减运算符以及复合运算符的用法。【练习】1要将“china”译成密码,密码规律是:用原来的字母后面第5个字母代替原来的字母。例如,字母“a”后面第5个是“f”,用“f”代替“a”。因此,“china”应译为“hmnsf”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为c、h、i、n、a,经过运算,使其分别变为h、m、n、s、f,并输出。2求下面算术表达式的值。(1)x+a%3*(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5先自己分析,再试着用程序求解,看得到的结果是否一致。3写出下面表达式运算后a的值,设原来a=10。设a和n已定义成整型变量。(1)a+=a (2)a-=2(3)a*=2+3 (4)a/=a+a(5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a先自己分析,再试着用程序求解,看得到的结果是否一致。实验三 简单的c程序设计【目的与要求】1理解c语言程序的顺序结构2掌握常用的c语言语句,熟练应用赋值、输入、输出语句。【上机内容】【示例】【例1】按格式要求输入/输出数据。#include stdio.hmain()int a,b;float x,y;char c1,c2;scanf(“a=%d,b=%d”,&a,&b);scanf(“%f,%e”,&x,&y);scanf(“%c%c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);运行该程序,必须按如下方式在键盘上输入数据a=3,b=7 8.5,71.82 aa 请同学们写出输出结果【例2】输入三角形三边长,求三角形面积。#include “math.h”main()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%f”,area);【例3】已知圆半径,圆柱高,求圆周长,圆柱体积。main()float r,h,l,v,pi;pi=3.1415926;scanf(“%f,%f”,&r,&h);l=2*pi*r;v=pi*r*r*h;printf(“圆周长为:%6.2fn”,l);printf(“圆柱体积为:%6.2f”,v);【例4】输入一个摄氏温度,要求输出华氏温度。公式为f=9/5*c+32main()float c,f;scanf(“%f”,&c);f=9.0/5*c+32;printf(“c=%5.2f,f=%5.2fn”,c,f);【练习】1已知圆半径r=1.5,圆柱高h=3, 求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。2输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)实验四 选择结构程序设计【目的与要求】1了解c语句中表示逻辑量的方法(以0代表“假”以1代表“真”);2学会正确使用关系运算符、逻辑运算符和关系表达式、逻辑表达式;3熟练掌握if语句和switch语句的使用。【上机内容】【示例】【例1】已知三个数a,b,c,找出最大值放于max中。分析:需定义四个变量a,b,c和max,a,b,c保存输入的任意三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中ifelse 形式。第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。max即为a,b,c中的最大值。include stdio.hmain()int a,b,c,max; /*定义四个整型变量*/scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); /*注意输入数据的格式*/if(a=b) max=a; /*若a=b,则max=a*/else max=b; /*否则max=b*/if (cmax) max=c; /*c是最大值*/printf(max=%d,max);若输入下列数据,分析程序的执行顺序并写出运行结果(1)a=1,b=2,c=3(2)a=2,b=1,c=3(3)a=3,b=2,c=1(4)a=3,b=1,c=2(5)a=3,b=3,c=2(6)a=2,b=1,c=2【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上 (包括90):a 80至90分(包括80):b 70至80分(包括70):c 60至70分(包括60):d 60分以下: e方法一:(用if嵌套)分析:由题意知如果某学生成绩在90分以上,等级为a;否则,如果成绩大于80分,等级为b;否则,如果成绩大于70分,等级为c;否则,如果成绩大于60分为d;否则,如果成绩小于60分,等级为e。当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,用if嵌套结构,先判断输入的成绩是否在0100之间。#includestdio.hmain()int score;char grade;printf(nplease input a student score:);scanf(%f,&score);if(score100|score=90) grade=a; else if(score=80) grade=b; else if(score=70) grade=c; else if(score=60) grade=d; else grade=e; printf(nthe student grade:%cn,grade); 输入若干测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。方法二:用switch语句分析:switch 语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有a(除100以外),b,c,d类的成绩的共同特点是十位数相同,此外都是e类。则由此可得把score除10取整,化为相应的常数。#includestdio.hmain()int g,s;char ch;printf(ninput a student grade:);scanf(%d,&g);s=g/10;if(s10) printf(ninput error!);else switch (s) case 10: case 9: ch=a; break; case 8: ch=b; break; case 7: ch=c; break; case 6: ch=d; break; default: ch=e; printf(nthe student scort:%c,ch); 输入测试数据,同方法一一样调试程序并写出结果。【例3】有一函数: 用scanf函数输入x的值(分别为x=10三种情况),求y值。分析:y是一个分段函数表达式。要根据x的不同区间来计算y的值,所以应使用if语句。main()int x,y;printf(“please input x:”);scanf(“%d”,&x);if(x1) y=x;else if (xc&b= =c(2) a|b+c&b-c(3) !(ab)&!c|1(4) !(x=a)&(y=b)&0(5) !(a+b)+c-1&b+c/23有3个整数a、b、c,由键盘输入,输出其中最大的数。4给出一百分制成绩,要求输出成绩等级a、b、c、d、e。90分以上为a,8089为b,7079分为c,6069分为d,60分以下为e。5给一个不多于5位的正整数,要求:a.求出它是几位数;b.分别打出每一位数字;c.按逆序打出各位数字,例如原数为321,应输出123。6输入4个整数,要求按由小到大的顺序输出。实验五 循环结构程序设计【目的与要求】熟练掌握while、dowhile和for三种循环语句的应用。【上机内容】【示例】【例1】求5!main()int n,t;n=1;t=1;while(t=5)n=n*t;t=t+1;printf(%d!=dn,5,n);【例2】求和s=1!+2!+3!main()int n,s=0,t=1;for(n=1;n=3;n+)t=t*n;s=s+t;printf(s=%d,s);【例3】求和s=1!+3!+5!main()int s=0,t,i,j;for(i=1;i=3;i+) t=1;for(j=1;j=2*i-1;j+) t=t*j;s=s+t;printf(s=%dn,s);【例4】求和s= 3+33+333main()int s=0,t=3,i;for(i=1;i=3;i+)s=s+t;t=10*t+3;printf(“%d”,s);【例5】有一数列:2/1,3/2,5/3,8/5,求出这个数列的前10项之和。main()int n,t,;float a=2,b=1,s=0;for(n=1;n=10;n+) s=s+a/b;t=a;a=a+b;b=t;printf(“%f”,s); 【例6】打印所有的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。main() int i,j,k,n;for(n=100;n=999;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(%dn,n);【例7】一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。main() int n,s,j;for(n=1;n=100;n+)s=0;for(j=1;jn),使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。#includestdio.hmain()int m,n,k;printf(enter two numbers:);scanf(%d,%d,&m,&n);if(m0&n0) /*限定两个正整数*/ k=m%n; while(k!=0)m=n;n=k;k=m%n; printf(the greatest common divistor is:%dn,n);else printf(nonpositive values not allowedn);【例9】用牛顿迭代法求方程2x3-4x2+3x-6=0在1.0附近的根。#include math.hmain()float x,x0,f,f1;x=1.0;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;while(fabs(x-x0)=1e-5);printf(%6.2fn,x);【例10】打印下列图案 * * *main() int i,j;for(i=1;i=4;i+) for(j=1;j=4-i;j+)printf( ); for(j=1;j=2*i-1;j+)printf(*); printf(n); 【例11】判断m是否是素数。#include main()int m,i,k;scanf(%d,&m);k=sqrt(m+1);for(i=2;i=k+1) printf(%d is a prime numbern,m);else printf(%d is not a prime numbern,m);【练习】1输入两个正整数m和n,求其最大公约数和最小公倍数。 2求sn=a+aa+aaa+aaa 之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。3求和1!+2!+3!+4!+20!4用迭代法求x=。求平方根的迭公式为:要求前后两次求出的x的差的绝对值小于10-55用牛顿迭代求方程2x3-4x2+3x-6=0在1.5附近的根。6打印下列图案*实验六 数 组【目的与要求】 1掌握数组的定义、赋值和输入输出的方法;2掌握字符数组的使用;3掌握与数组有关的算法(例如排序算法)。【上机内容】【示例】【例1】在键盘上输入n个整数,将这些数按照从小到大的次序排列输出。分析:c中数组长度必须是确定大小,即指定n的值。排序的方法有多种,在此使用“起泡排序”和“选择排序”法设计算法。方法一:起泡排序从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(n-1)次比较后,最大的数已放在最后,第二遍只需考虑前(n-1)个数,以此类推直到第(n-1)遍比较后就可以完成排序。源程序如下:#includestdio.h#define n 10main()int an,i,j,temp;printf(please input %d numbersn,n);for(i=0;in;i+)scanf(%d,&ai);for(i=0;in-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;printf(the array after sort:n);for(i=0;in;i+)printf(%5d,ai);方法二:选择排序首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。#includestdio.h#define n 10main()int an,i,j,r,temp;printf(please input %d numbersn,n);for(i=0;in;i+)scanf(%d,&ai);for(i=0;in-1;i+)r=i;for(j=i+1;jn;j+)if(ajar) r=j;if(r!=i)temp=ar;ar=ai;ai=temp;printf(the array after sort:n);for(i=0;in;i+)printf(%5d,ai);printf(n);【例2】青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。main()int i;float a11,max,min,ave;printf(n输入评委所打的分数:n);for(i=1;i=10;i+)scanf(%f,&ai);max=min=ave=a1;for(i=1;i=10;i+)if(maxai) min=ai;ave+=ai;ave=(ave-max-min)/8;printf(选手所得最后分数:%6.2fn,ave);【例3】输入一串字符,计算其中空格的个数。#include main()char c80;int i,sum=0;gets(c);for(i=0;ci!=0;i+)if(ci= ) sum=sum+1;printf(空格数为:%dn,sum);【例4】有一个34的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。#define m 3#define n 4main( )int max,i,j,r,c;static int amn=123,94,-10,218,3,9,10,-83,45,16,44,-99;max=a00;for(i=0;im;i+)for(j=0;jmax)max= aij;r=i;c=j;printf(“max=%d , row =%d , colum=%d n”,max , r, c);【例5】求矩阵下三角形元素之和。#define n 6main()int i,j,sum=0;int ann=0;printf(input 55 data:n);for(i=1;in;i+)printf(input the %d line data:n,i); for(j=1;jn;j+)scanf(%d,&aij); for(i=1;in;i+)for(j=1;jn;j+) printf(%5d,aij); printf(n); for(i=1;in;i+)for(j=1;j=i;j+)sum=sum+aij;printf(sum=%dn,sum);【练习】1已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。2将一个数组中的数据按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。3有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“查无此数”。4编一程序,将两个字符串连接起来,不要用strcat函数5求一个33矩阵对角线元素之和。6打印出以下的杨辉三角形(要求打印出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 7.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。实验七 指 针【目的与要求】 1掌握指针的概念,指针变量的定义和引用;2学会使用指针处理数组中的数据;3学会用指针处理字符串5了解指针数组和指向指针的指针。【上机内容】【示例】【例1】分析下面程序的输出结果 main()int a,b,*p1,*p2; a=10;b=20; p1=&a; p2=&b; printf(%d,%dn,*p1,*p2); p1=&b; p2=&a; printf(%d,%dn,*p1,*p2);【例2】使用指针的方法,将数组中的数据逆序存放,并与下标法比较。#define n 10main() int an,*p,*q,t,i; for(i=0;i10;i+) scanf(%d, a+i); p=a;q=a+n-1; while(pq) t=*p;*p=*q;*q=t; p+;q-; for(i=0;i10;i+) printf(%5d,ai);【例3】利用指针求字符串的长度。#include string.hmain() char str81,*p; printf(input string:); gets(str); p=str; while(*p!=0) p+; printf(length of the string is:%dn,p-str);【例4】利用指针交换数组a和数组b中对应的元素。main()int *pa,*pb,temp,i; int a5=11,12,13,14,15,b5=21,22,23,24,25; for(pa=a,pb=b;paa+5;pa+,pb+) temp=*pa;*pa=*pb;*pb=temp; for(i=0;i5;i+) printf(a%d=%d ,i,ai); printf(n); for(i=0;i5;i+) printf(b%d=%d ,i,bi); printf(n);【练习】1输入有一行字符,将字符串中的字符逆序后输出。2输入有一行字符,编程序将每个单词的第一个字母改为大写。3“回文”是一种顺序读和反序读都一样的字符串,例如:“121”“abcba” “abccba”编写程序,判断任一字符串是否为回文。4修改上题,使其不区分大小写。实验八 函 数【目的与要求】 1掌握c语言函数的定义方法、函数的声明及函数的调用方法。2了解主调函数和被调函数之间的参数传递方式。【上机内容】【示例】【例1】写一判断素数的函数,在主函数输入一个整数,输出是否素数的信息。源程序如下:int prime(int n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论