还剩57页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
语言上机实验C南昌大学信息工程学院2][[[
(1)变量”为单精度类型,n为整型;
(2)计算当n的取值分别为20,50,100,200时的五值,说明什么问题?
(3)修改程序,不给出n值,而改为求n值,直到最后一项的数值小于IO』为止
(4)对修改后的程序,输出n值以及总的项数n0输出格式为k值;n二值程序如下#includestdio.h#includemathmain()(int n;float s=0,for(n=l;n=20;n++)s+=l/(n*n);=squar(6*s);Printf(%f\n,);
3.从键盘输入一个0〜1000之间的任意整数,输出该整数的所有因子例如输入12,其因子为1,2,3,4,6,12要求o1采用while循环语句实现2输出格式为Inpul12Output1,2,3,4,6,12#include stdio.hmainint i=0,n=0;printf input:;scanf%d,n;printfHoutput:;vvhilei=nifn%i==0printf%d;,i;
4.编程实现由用户从键盘输入一串字符以回车键结束,统计其中数字、大、小写字母、空格、其它字符的个数要求1通过键盘输入字符2给出相应的输入/输出信息提示并按照数字、大写字母、小写字母、空格、其它字符数的顺序输出结果include stdio.hmain{char c,surr1=0,sum2=0,space=0,number=0,other=0;c=getchar;whilec!-\n*ifc=rAc=Z suml++;else ifc=ac=z sum2++;else ifc=0c=,9number++;else ifc=-space++;else other++;c=getchar;printf,,%d,%d,%d,%d,%d,sum1,sum2,space,number,other;}
5.计算并输出1000以内最大的10个素数以及它们的和要求1在程序内部加必要的注释2由于偶数不是素数,可以不考虑对偶数的处理3虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理4输出形式为素数1+素数2+素数+…+素数10=总和值#includensldio.h#includemath.hint fintx〃检查素数函数int i;fori=2;isqrtx;i++〃检查该数是不是素数,从2开始到它的平方根为止ifx%i==0return0;〃不是素数返回0return1;//是素数返回1void main{int a
[10],sum=0,i,j,count=0;fori=999,j=0;count!=10;i-=2〃计算器等于10为循环结束条件,i-=2为只检查奇数iff⑴〃调用函数{count++;〃计数器加一a[j]=i;〃赋值给数组j++;}forj=0;j10;j++{sum+=a[j];〃计算十个数的总和printfC%d,a[j];ifj9printf+”;〃前9个符号为+elseprintf=;〃最后一个符号为一printf%d\n”,sum;五.思考题
1.对于多分支选择结构何时使用if语句的嵌套,何时使用switch语句?在if语句里面标签可以重复(但一般不那么写),而switch里面的case的标签就不能重复;if相对于switch来说,速度要慢一点,看起来没switch简洁、明了;它们都是用来实现选择结构程序设计的,也就是分支结构;
2.小结三种形式的循环使用的区别1do-while中循环体至少执行一次;
2、while和do-whilc中在while后指定条件,循环体中包含使循环趋于结束的语句;for在exp3中可含使循环趋于结束的语句,也可含在循环体中
3、while和do-while中,循环变量初始化语句应放在while和do-while语句前;for可在expl中实现循环变量初始化一\实验项目名称函数
二、实验目的
1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法;
2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;
3.在编程过程中加深理解函数调用的程序设计思想
三、实验内容
1.多模块的程序设计与调试的方法;
2.函数的定义和调用的方法;
3.用递归方法进行程序设计具体内容
1.编写一个函数primeNumintnum,它的功能是判别一个数是否为素数如果num是素数,返回该数;否则返回值要求1在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息输出格式为num isprime或num isnot prime2分别输入以下数据0,1,2,5,9,13,59,121,运行程序并检查结果是否正确
2.编写函数computNum int num,它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回例如输入数据是123,返回值为6要求num由主函数输入,调用该函数后,在主函数内输出结果
3.编写函数,mulNuminta,intb,它的功能是用来确定a和b是否是整数倍的关系如果a是b的整数倍,则函数返回值为1,否则函数返回值为0要求1在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明例如在主函数中输入10,5,则输出10is multiple of
5.2分别输入下面几组数据进行函数的正确性测试1与
5、5与
5、6与
2、6与
4、20与
4、37与9等,并对测试信息加以说明
4.编写一个计算组合数的函数combinNumint m,int n计算结果由函数返Hl计算组合数的公式是cm,n=m!/n!*m-n!要求1从主函数输入m和n的值对mn、mn和m=n的情况作分别处理后调用函数combinNumm,n,在主函数内输出结果值2对mn、mn和m=n的情况各取一组数据进行测试,检查程序的正确性3修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行
5.整数a,b的最大公约数是指既能被a整除又能被b整除的最大整数整数a,b的最小公倍数是指既是a的倍数又是b的倍数的最小整数编写两个函数,一个函数gcd的功能是求两个整数的最大公约数,另一个函数mul的功能是求两个整数的最小公倍数要求1两个整数在主函数中输入,并在主函数中输出求得的最大公约数和最小公倍数2首先将两个整数a和b作为实参传递给函数gcd,求出的最大公约数后,由函数gcd带值返回主函数,然后将最大公约数与两个整数a、b一起作为实参传递给函数mul,以此求出最小公倍数,再由函数mul带值返回主函数3修改函数gcd,函数gcd采用递归调用的编写方法,两个整数a和b的最大公约数的递归公式是如果b=O,那么gcd a,b=x,否则gcd a,b=gcd b,a%b然后将最大公约数与两个整数a、b一起传递给函数mul,求出最小公倍数,再由o函数mul将最小公倍数返回主函数4修改程序,采用全局变量的处理方法,将最大公约数和最小公倍数都设为全局变量,分别用函数gcd和函数mul求最大公约数和最小公倍数,但其值不是由函数返回,而是通过全局变量在函数之间传递的特性将结果反映在主函数中
四、实验步骤及结果打开编程软件,分别写入以下代码:#includestdio.hint PrimeNumint num;/*声明判断函数*/void mainint i,num;printfnPlease inputnum:;scanfn%dn,num;i=PrimeNumnum;/*调用判断函数*/if i==0printf%d isnot prime”,num;elseprintf%d isprime,num;int PrimeNumint numint n,m;if num==l/*l不是素数*/m=0;else{for n=2;nnum;++nif num%n==0break;/*若能被整除,说明不是素数,停止循环*/if n=numm=num;elsem=0;}return m;/*返回m*/#include stdio.hint computNumint num;/*声明函数*/void mainint num,n;printf请输入不多于10位的整数:;scanfn%dn,num;n=computNumnum;/*调用函数*/printfM%d;n;int computNumint numint nj;n=l;j=O;for n=l;nll;4-+nj=j+num%10;/*将数的每一位数加到j上*/num=num/10;return j;/*直接返回j*/#includestdio.hint mulNumint a,int b;/*声明函数*/void mainint a,b,c;printfPIease inputa andb:\n;scanf%d,%d,a,b;c=mulNuma,b;/*调用函数*/ifba/*大的数是小的数的倍数,所以要判断两个数的大小*/c=b;b=a;a=c;ifc=l/*两数是倍数关系*/printfn%d ismultipleof%d\a,b;else/*不成倍数关系*/printfH%d isnot multipleof%d\a,b;int mulNuminta,int bintc;if%b==O||b%a=0/*判断是否能被整除刃ac=l;elsec=0;return c;
四、#include stdio.h实验语言的编程环境1C一.实验目的
1.初步了解c程序的编译、连接和运行的过程
2.掌握和理解C程序的结构二.实验内容
1.使用TC
2.运行一个简单的C程序三.实验环境PC微机;DOS操作系统或Windows操作系统;Turbo C程序集成环境四.实验步骤
1.启动Turbo C如果用户计算机系统已经安装了Turbo C编译系统,则在DOS命令状态下键入命令tc进入Turbo C集成环境后,首先在屏幕上显示Turbo C主菜单窗口在该窗口,有8个菜单条目我们需要清楚知道每一个菜单的意义:int combinNumint m,int n;/*声明函数*/void mainintm,n,c;printfPIease inputm and n:;scanf”%d,%d”,m,n;/*输入两个数*/ifmn||m0||n0/*判断输入的两个数是否符合数学要求*/printfMath error!\n\,m\,cannot smaller than\n\!\n\,,m\H or\n\H canvtsmallerthan0!;else—c=combinNumm,n;/*调用函数*/printfncm,n=m!/n!*m-n!=%d\c;int combinNumintm,int nint accmulNumint m;/*声明阶乘函数*/int i,j,k,h;i二accmuINumm;/*调用阶乘函数*/j=accmuINumn;k=accmulNumm-n;h=i/j*k;return h;}int accmulNumintm/*求数的阶乘的函数*/int ij;j二l;for i=l;i=m;++ij=j*i;return j;修改方案在文件目录下创建头文件user.h,头文件内有如下内容int combinNuminta,int b;intaccmulNuminta;在主程序预处理中加入#泊日血©”
1150.11”,将主程序保存为main.cpp,被调用程序保存为user.cpp,在命令提示符中先后输入cl user.cpp/c、clmain.cpp/c、link main.obj user.obj,得至!J程序main.exeo五#include stdio.hint gcdint a,int b;/*声明求公约数函数*/int mulinta,int b;/*声明公倍数函数*/void maininta,b,c,d;printf请输入a,b\nn;scanfn%d,%dn,a,b;c=gcda,b;/*调用公约数函数*/d=mula,b;/*调用公倍数函数*/printf最大公约数是%d,最小公倍数是%d,c,d;int gcdint a,int b/*公约数函数*/int i,j,k;j=ab b:a;for i=j;i=l;—iif a%i==0b%i==0k=i;break;/*第一次出现能同时被ab整除的是最小公约数*/return k;int mulinta,int bint gcdinta,int b;/*调用公约数函数*/int h,k;k=gcda,b;h二a*b/k;/*公约数和公倍数的数学关系*/return h;使用递归调用修改方案将函数int gcdinta,int b的定义改为:int gcdinta,int bintc,i;for;b!=0;i=a;a=b;b=i%b;c=gcda,b;ifb==Oc=a;return c;采用全局变量修改方案#include stdio.hint k=O,h=O;int gcdinta,int b;int mulinta,int b;void maininta,b,c,d;scanf%d,%d,a,b;gcda,b;mula,b;printf最大公约数是%d,最小公倍数是:%d”,k,h;intgcdinta,int bint i,j;j=ab b:a;for i=j;i=l;-iif a%i==0b%i==0k=i;break;return k;int mulinta,int bintgcdinta,int b;k=gcda,b;h=a*b/k;return h;
五、思考题或实验感想
1.小结函数的定义及调用方法;答函数的定义的一般形式为类型标识符函数名(形式参数表列)(声明部分语句部分)函数的调用很灵活,可以由主函数点用其他函数,其他函数也可以互相调用,要调用函数必须要先声明“类型标识符函数名();”然后才能调用
2.小结函数中形参和实参的结合规则;答
(1)、在定义函数中指定的形参,在未出现函数调用时,它们不占内存中的存储单元
(2)、实参可以是常量、变量或表达式,在调用时将实参的值赋给形参
(3)、在被定义的函数中,必须指定形参的类型
(4)、实参和形参和类型应相同或赋值兼容
(5)、在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参
3.编写和调试包含多模块的程序时,容易出现什么样的错误?根据自己的实践总结一下答容易出现变量的重定义,被定义函数中有未声明的标识符,函数返回值的类型和函数类型不对应,几个函数互相调用时未声明一*、实验项目名称数组
二、实验目的
1.掌握数组的基本概念,包括数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出
2.掌握字符数组与字符串的使用方法理解字符数组与其它数组的区别、理解字符串及其特点掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理
3.掌握与数组相关的算法,包括排序算法和查找算法等
三、实验内容进行有关数组的程序设计具体内容
1.编程实现对任意一个一维数组,从中找出数组元素的最大值和最小值要求1数组为整型数组10个元素2使用scanf函数实现数组元素的输入在输入前给出必要的提示3输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置4如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查如果需要数组元素不断改变,应怎样修改程序?
2.编程实现在给定的字符串中查找满足条件的第一个字符要求1字符串采用初始化的方式处理2通过scanf函数读入一个任意字符3在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明如果不存在该字符,则要给出相应的信息
3.编程实现首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组n xn,形成n xn阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵注意数组不允许动态定义例如原始数据n=4结果数据123481114163591035910811141612341527615276要求1本题中所涉及到的循环都采用for语句2在输入/输出时进行必要的说明
(3)对输入的2〜10之间的整数(例如4)以n=4的格式输出
(4)输入一个n xn矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)
(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据
(6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明
(7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性
4.编程实现“折半查找”的过程折半查找的处理过程是在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找要求
(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据己排序)
(2)用scanf函数输入一个要找的数
(3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素如果该数不在数组中,则输出“无此数”信息
(4)任意输入一些数据,检查程序的正确性
(5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”最后通过测试几组差别较大的数据检查程序的正确性
(6)修改程序,改为函数调用的形式编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找在主函数中输入数据(无序),调用上述函数,输出结果
5.编程实现三个学生、五门课程的成绩分别存放在4X6矩阵的前3X5歹U,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分输入/输出格式举例如下Input(输入成绩)6587685678cr8394678591cr7175698489crOutput输出结果*■
658768567870.
58394678584.
0917169848977.
755219.
0256.
0204.
0258.
0232.00average
73.
085.
368.
086.
077.3要求1数组类型为实型,输入成绩由scanf函数实现2输出已输入的原始成绩数据3X5o3计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组4X6o4j计算单科平均成绩后输出
6.编写函数catStrcharstrl[],char str2[]用于进行两个字符串的连接,编写函数lenStr用于统计一个字符串的长度编写函数cmpStr用于判断两个字符串的大小要求1不允许使用字符处理库函数2在主函数以初始化的方式输入两个字符串strl、str2o调用函数lenStr计算字符串的长度3调用函数cmpStr判断两个字符串的大小,如果strl大于等于str2,调用函数catStr进行两个字符串的连接,将strl连接在str2后,否则,将str2连接在strl后,调用函数lenStr统计连接后的字符串长度4在主函数中输出两个原始字符串和各自的长度以及处理后字符串及其长度
四、实验步骤在编程软件中写如以下代码、#include stdio.hvoid maininta[IO],ij,k,max,min;printf”请输入10个数\nn;for i=0;i10;++iscanfH%dn,a[i];printf原始数据:;for i=;il;++iprintf%dn,afil;printfn\n;max=初始化max和min*/min=al0];for i=0;i10;++iif a[i]=maxmax=a[i];if a[i]=minmin=a[i];/*找最大值和最小值*/File处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS oEdit建立、编辑源文件Run控制运行程序如果程序已经编译连接好,且Debug/Source Debugging以及Option/Compiler/Code generation/OBJ DebugInformation开关置为On,则可以用此菜单初始化调试阶段Compile编译并生成目标程序与可执行文件Project允许说明程序中包含哪些文件的管理条目Options可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录InckideOutput及Library文件目录,保存编译任选项和从配置文件加载任选Debug检查、改变变量的值,查找函数,程序运行时查看调用栈选择程序编译时是否在执行行代码中插入调试信息Break/Watch增加、删除、编辑监视表达式,及设置、清除、执行至断点特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单而选择Edit项目后,只是进入编辑器为了从主菜单中选择所需要的功能,可以用以下两种方式之一
(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(一与一)选择需要的菜单,然后按回车(Enter)键
(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,0,D,B),此时就会出现相应的子菜单例如,按Alt+F表示选择文件子菜单(File)o当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(t与I)来移动该高亮度线,从而选择所需要的功能在菜单调用时,按Esc键后将直接返回到活动窗口
2.输入程序输入以下程序printf最大值为for i=0;i10;++i/*应对有多个最值的情况*/if a[i]==maxprintf第%d个”,i+1;printf数,%d\n,max;printff最小值为for i=;i10;++iifafi]==minprintf“第%d个”,i+1;primf“数,%d”,min;修改为20个元素的方案将程序中所有的10改为20即可如果数组元素不断改变,只需将代码中的10改成元素个数即可
二、#include stdio.h#include string.hvoid mainintj,n;char i;char c[]={MI ama student};/*初始化字符串*/printf给定字符串为%s\n请输入要查找的字符”,c;scanfn%cH,i;n=strlenc;/*得到函数给定字符串的长度*/for j=O;jn;++jif intc[j]==intiprints字符串中满足条件的第一个字符为第%1个字符”,j+l;break;/*找到符合条件的第一个字符,结束循环*/if j=nprintf字符串中不存在满足条件的字符!#include stdio.hvoid mainint nj,k,z,x,max,min,a[l]f1];printf请输入一个2到10之间的数”;scanfu%dn,n;printf请输入一个n*n数组\nn;for j=O;jn;++jfor k=0;kn;++kscanfM%dn,a[j][k];printf原始数组为:n=%d\n;n;forj=O;jn;++j{for k=0;kn;++kprintf%5d”,a[j][k];/*输出原始数组*/printf\n;/*输出n个数后换行,使数组为n*n的格式*/}max二初始化最大值和最小值*/min=a
[0]
[0];z=0;x=0;for j=O;jn;++jfor k=;kn;++kifa[j][k]maxmax=a[j][k];z=j;/*得到最大值的行数*/for j=O;jn;++jfor k=0;kn;++kifa[j][k]minmin=a[j][k];x=j;/*得到最小值的行数*/for j=O;jn;++j{k=a|z][j];a[z][j]=a[x]|j];a|x|[j]=k;/*交换最大值所在行和最小值所在行*/}printff结果数据\nH;for j=O;jn;++j/*输出结果*/{for k=0;kn;++kprintfH%5dn,aU][k];printf,\nn;修改程序得到最大值和最小值所在行,只需在程序末尾加上语句printf最大值在第%1行,最小值在第%d行”,z,x;在输入数组元素时要注意尽量不要重复出现最大值和最小值,程序会以最值中第一个出现的值作为最值
四、#include stdio.hvoid maininta
[20];int nj,i,k;printf给定的数组为\nn;forn=0;n20;++n{a[n]=2*n+3;/*给定数组的初始化*/printfH%d\a[n];}printf,\nM;printf请输入要查找的数”;scanf%dH,j;intm=20;for n=O;n=m;/*折半查找*/{i=n+m/2;ifa[i]jn=i+l;else ifa[i]jm=i-l;else ifa[i]=j{printf该数在数组的第%d位上”,i+l;break;}/*输出找到的数,结束循环*/}ifnmprintf无此数}按要求修改后的程序为#include stdio.hvoid arr;/*声明排序函数*/int seaintj;/*声明折半查找函数*/inta
[20];/*定义全局变量*/void mainint n,j,i,h;printf”请输入20个数据\n;forn=0;n20;++nscanf%d”,a[n];/*输入无序的20个数据*/arr;/*调用排序函数*/printf”\n请输入要查找的数”;scanfn%dH,j;h=seaj;/*调用折半查找函数*/ifh==0printf无此数elseprintf“该数在已排序数组的第%€1位”,h;void arr/*排序函数*/int z,n;for intn=0;n20;++nfor int k=0;k19-n;++kifa[k]a[k+l]z=a[k];a[k]=a[k+l];a[k+l]=z;printf将数组排序,得\nM;for n=0;n20;++nprintf(n%d”闾n|);/*输出已排序的数组*/int seaintjint n,i,h,m=20;for n=0;n=m;i=n+m/2;ifa[i]jn=i+l;else ifafi]jm=i-l;else ifa[i]=j{h=i+l;break;}/*找到该数后停止循环*/if nmh=0;return h;/*返回h值*/
五、#include stdio.hvoid mainintj,k;float a
[3]
[5],d
[3]={0},b
[6]={0},c
[5]={0};printfInput输入成绩\nH;for j=O;j3;++jfor k=0;k5;++k scanfH%f,a[j][k];for j=O;j3;++jfor k=0;k5;++k dU]=dU]+aU][k]/5;for k=0;k5;++kfor j=O;j3;++j b[k]=b[k]+aU][k];for j=O;j3;++jb
[5]=b
[5]+d[j];for k=0;k5;++kc[k]=b[k]/3;printf\nOutput输出结果”;for j=O;j3;++j{printf\n;for k=0;k5;++kprintf”%-
7.0口a皿k];printfC,%-
7.ir,d[j];}printfn\n;for k=0;k6;++kprintfH%-
7.ir,b[k];printfn\nAverage:\n;for k=0;k5;++kprintf%-
7.1f;c[k];-A-
八、#include stdio.hvoid catStrchar strl[],char str2[];/*声明连接两个字符串的函数*/int lenStrchar str[];/*声明统计长度的函数*/int cmpStrchar str1[],char str2[];/*声明比较字符串大小的函数*/charstr3[]={,,H;void mainintn,j,k,lenl,len2,len3;char c,strl[]={H,},str2[]={,H,};printf请输入strl:;getsstrl;printf请输入str2:;getsstr2;printfnstrl原长为:%d\nstr2原长为:%d\n”,lenStrstrl,lenStrstr2;/*调用统计长度的函数并输出原始长度*/j=cmpStrstrl,str2;/*调用比较大小函数*/ifj==l/*将小字符串连接在大字符串后面*/{printf\%s\“大于\”%s\”\n”,strl,str2;catStrstrl,str2;/*调用连接两个字符串的函数*/printf合成的字符串为:%s\nH,str3;else{printf,V%sV/hTV,%s\\n,,strl,str2;catStrstr2,strl;printf合成的字符串为:%s\nn,str3;}printf合成的字符串长度为%d”,lenStrstr3;/*输出合成字符串的长度*/int lenStrcharstr[]/*统计字符串大小的函数*/intn,j,k;for n=0;;++nifstr[n]==\0{return n;break;}}int cmpStrcharstr1[J,charstr2[]/*比较字符串大小的函数*/intn;for n=0;strl[n]!-\0*str2[n]!-\0;++n{if intstr1[n]intstr2[n]{return1;break;}ifintstrl[n]intstr2[n]{return0;break;}}return1;#include stdio.h void main{printf Howare you!\n;
3.运行程序按Ctrl+F9运行程序,如果没有报错,而且程序需要输入数据,则屏幕会切换到运行窗口,等待用户输入数据,并输出结果在人们未来得及看清结果之前,屏幕很快又转回程序编辑窗口为了看清结果,可以按Alt+F5查看运行结果,再按空格键回到编辑窗口
4.保存文件按F2键,弹出一个对话框,在对话框中输入文件名,如examl.c
5.退出TC程序按A11+X键,弹出对话框,提示是否真的要退出TC,如果输入Y就会退出TC也可以选择File-Quit,就会退出Turbo C++
3.0环境,回到Windows环境
6.打开已经存在的文件1首选启动TC2按F3,弹出对话框3在该对话框中,输入文件名即可五.思考题void catStrcharstr1[],charstr2[]/*将str2连在strl后面,将得到的新字符串存入str3*/intnj;int lenStrcharstr[];for n=O;nlenStrstr1;++nstr3[n]=strl[n];for n=0;nlenStrstr2;++nstr3[n+lenStrstrl]=str2[n];str3[lenStrstr1+lenStrstr2]=,\0*;/*结束字符串str3*/
五、思考题或实验感想小结有关数组和字符串的程序设计方法首先要定义数组,必要时进行初始化然后要善于使用字符库函数,注意使用函数时不要重定义要注意数组的第一个下标是0数组和字符串的输入输出要善于利用for循环使用字符串库函数时要记得预处理
一、实验项目名称指针
二、实验目的
1.掌握指针的基本概念和基本用法包括变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;
2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;
3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;
4.掌握指针与函数的关系并能够利用指针处理函数问题;
5.了解指向指针的指针的概念及其使用方法;
6.能够使用指针进行程序设计
三、实验内容有关指针的程序设计
1.编程实现任意输入的1个数,求其平均值要求110个数采用scanf语句读入2利用指针实现对这1个数的访问3要求平均值的精度为小数后面2位
2.编程实现将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序要求1整数数组由初始化方式输入任意整数由scanf函数输入;2实现过程采用指针处理;3输出原始数组数据以及插入数据后的数组数据并加以相应说明
3.编写函数newcopy char*new,char*o1d,它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中要求1在主函数中以初始化方式输入一个字符串;2调用newcopy函数;3在主函数中输出处理后的结果
4.编程实现输入三个整数,按由大到小的顺序输出要求1通过scanf函数输入三个数据并存入三个变量中;2利用指针实现从大到小输出;3修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;4修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;5体会指针对不同数据处理的特点
四、实验步骤及结果、#include stdio.hvoid maininta|10|,n,sum=0;float aver;/*定义平均数为浮点型刃int*p=a;/*初始化*/printfPlease input10numbersAn;for n=0;n10;++nscanf%d”,a[n];/*输入十个数*/for n=0;n10;++nsum=sum+*p+n;/*使用指针访问数据*/aver=floatsum/n;printfMAverage is%.2f,aver;/*精确到小数点后两位*/—、#include stdio.hvoid arrint*a,intn;/*定义排序函数*/void insertint*a,int num;/*插入并排序函数*/intn=10;/*定义数据个数,可修改*/void mainint*a,num,j,k,b
[10];printf请输入个数据\n;for j=O;jn;++jscanfT%d”,b|j];/*输入原始数据*/a=b
[0];/*初始化*/arra,n;/*调用排序函数*/printfT排序好的数据为\n;for j=O;jvn;++jprintf%d”,*a+j;/*输出排序好的原始数据*/printf\n请输入要插入的数:;scanf%dH,num;printf插入%1后的数据为\n,num;inserta,num;/*调用插入并排序函数*/}void arrint*a,intn/*排序函数*/intk,j,h;for k=0;k10;++kfor j=O;jn-k-l;++jif*a+l+j*a+j{h=*a+l+j;*a+l+j=*a+j;*a+j=h;void insertint*a,intnum{void arrint*a,intn;*a+n=num;/*将插入的数排在数组最后一位*/arra,n+1;/*将新数组重新排序*/for j=O;jn+l;++jif*a+j==num{k寸bre;k;}/*找到插入的数在数组中的位置列forj=0;jn+l;++jprintf%d,*a+j;printf”\n插入的数据排在数组的第%d位”,k+1;#include stdio.hvoid newcopychar*newl,char*old;void main{_char*new1,*old,a
[10];/*new是不能当做变量,所以用new1*/old=a;new仁a;/*字符串的初始化*/printf请输入字符串:\nM;scanf%s”,a;newcopynew1,old;/*调用函数*/printf新的字符串为\nn;printf%s”,newl;void newcopychar*newl,char*old intn,j=O;for;*old!=\0;++okiif*oldz|||*old,a,{*newl+j=*old;++j;}/*排除原字符串中的小写字母,将其他字符存入新字符串*/*newl+j+\0,;/*结束新字符串,否则新字符串的输出会故障*/
四、#include stdio.hvoid mainvoid exchangeint*ql,int*q2,int*q3;inta,b,c,*q],*q2,*q3;printf请输入个数\n;scanf%d,%d,%d”,a,b,c;ql=a;q2=b;q3=c;/*将三个数的地址存入qlq2q3中*/exchangeq1,q2,q3;/*调用排序函数*/printfH3个数从大到小排列为\n%d,%d,%dH,a,b,c;voidexchangeint*ql,int*q2,int*q3void swapint*ql,int*q2;/*调用交换函数*/if*ql*q2swapq1,q2;/*若*q1小于*q2,交换地址位置*/if*ql*q3swapql,q3;if*q2*q3swapq2,q3;}_void swapint*ql,int*q2/*交换函数*/|intn;n=*ql;*ql=*q2;*q2=n;修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出只需将程序中的所有int改为char,将%d改为%c即可修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出#includestdio.h#includestdlib.h#includeconio.hint cmpchar*pl,char*p2/*字符串比较函数*/{int i=0;while*p1+i==*p2+iif*pl+i++=-\Or return0;/*这里是先判断*pl+i==\0,然后再是i++*/return*pl+i-*p2+i;void sortchar*a
[3]/*排序函数*/char*t6mp;inti,j;fori=0;i3-1;i++/*选择排序*/forj=i+l;j3;j++ifcmpa[i],a|j]0{temp=a[i];afj]=temp;}voidmain{inti;chars
[3]
[81],*p
[3];/*设定每个字符串不超过字节*/printf”请输入3个字符串;fori=0;i3;i++getssfi];p[i]=s[i];}sortp;printf字符串从小到大排序为\n;fori=0;i3;i++printf%s\nH,pLiJ;
五、思考题或实验感想小结函数指针、数组指针、字符串指针的使用对于指针的使用,最重要的是搞清楚函数指针、数组指针和字符串指针的概念,不能混乱起来函数指针变量指向一个函数,然后通过该指针变量调用此函数函数指针中,函数名代表该函数的入口地址函数指针只能指向函数的入口而不能指向函数中的某一条指令处,因此不能用*p+l表示函数的下一条指令数组元素的指针就是数组元素的地址C语言中规定数组名代表数组中首元素的地址,所以p=a[O]和p=a等价p+i,a+i就是a[i]的地址,或者指向数组的第i个元素*p+i或*a+i是p+i或a+i所指向的数组元素,即a[i]指向数组的指针变量可以带有下标,如p[i]与*p+i等价字符串指针实际上是把字符串的第一个字符赋给指针变量指针变量只能指向一个字符变量或其他字符型数据,不能同时指向多个字符数据总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法
(1)在使用TC
3.0时,要求建立的文件名称为.c文件,而不是.cpp
(2)在使用TC
3.0编程时,每个C程序都要在程序首部写出“includesldio.h”,这个文件是基本输入输出文件,只有写上它,printf函数和scanf函数才能正常使用
(3)每个程序只有一个main()函数
(4)在程序输入中,注意区分输入法,使用的是美式英文输入方式,而不是中文等其他方式
(5)在程序执行过程中,要求每题都要执行,但是不能执行多次,不然容易出现死机现象
(6)编程后,要注意保存路径,以便以后使用
(7)注意,每做完一题后,最好关闭TC
3.0环境,然后再重新打开并新建新的程序;或者,在程序菜单file中选择来关闭以前编辑的程序,然后再重新新建如果不进行上述工作时,可能会出现一个TC环境中出现多个程序段,造成结果出错或不能执行
2.总结C语言程序的结构和书写规则总结C程序结构下面通过几个简单的示例,介绍C语言程序的基本构成和书写格式,使读者对C语言程序有一个基本的了解在此基础上,再进一步了解C语言程序的语法和书写规则在以上示例中,一个完整的C语言程序结构有以下两种表现形式
(1)仅由一个main函数又称主函数构成,
(2)由一个且只能有一个main函数和若干个其他函数结合而成,如图1-lb所示其中,自定义函数由用户自己设计图1-1C语言程序结构示意图结合以上示例,可以看出C语言程序结构有以下基本特点
(1)C语言程序是由函数如main函数和max函数组成的,每一个函数完成相对独立的功能,函数是C语言程序的基本模块单元main是函数名,函数名后面的一对圆括号“”是用来写函数的参数的参数可以有,也可以没有(本程序没有参数),但圆括号不能省略
(2)一个C语言程序总是从main函数开始执行主函数执行完毕,程序执行结束
(3)C语言编译系统区分字母大小写C语言把大小写字母视为两个不同的字符,并规定每条语句或数据说明均以分号结束分号是语句不可缺少的组成部分
(4)主函数main既可以放在max函数之前,也可以放在max函数之后习惯上,将主函数main放在最前面
(5)C语言程序中所调用的函数,既可以是由系统提供的库函数,也可以是由设计人员自己根据需要而设计的函数,printf函数是C语言编译系统库函数中的一个函数,它的作用是在屏幕上按指定格式输出指定的内容;max函数是由用户自己设计的函数,它的作用是计算两个数中的较大值语言程序的书写规则
(1)C源程序是由一个主函数和若干个其它函数组成的
(2)函数名后必须有小括号,函数体放在大括号内
(3)C程序必须用小写字母书写
(4)每句的末尾加分号
(5)可以一行多句
(6)可以一句多行
(7)可以在程序的任何位置加注释一个完整的C语言程序,是由一个main函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main函数构成实验数据类型、运算符和表达式2一.实验目的
1.了解C语言中数据类型的意义;
2.掌握不同数据类型之间的赋值的规律;
3.学会有关C语言的有关运算符,以及包含这些运算符的表达式,特别是是++和一运算符的使用
4.进一步熟悉C程序的编辑环境二.实验内容
1.用printf函数来输入表达式运行结果
2.观察实验步骤中表达式的结果三.实验环境PC微机DOS操作系统或Windows操作系统Turbo C程序集成环境四.实验步骤
1.当x=5,y=6,z=7时xyyxx!=yx==z-2x=x-2x=zx=z以上表达式的值分别为1;1;1;1;3;0;
1.
2.当x=0,y=-l,z=l时xyxllyyzyllzxyx|y以上表达式的值分别为();1;1;1;;五.思考题
1.J”和“二=”有什么区别?
2.和和有什么区别答1“二”是赋值运算符;而“==”是关系运算符且“二=”的优先级高于“=”,运算时,“二=”自左至右结合,但自右至左结合答2“”是按位与运算符;而“”是逻辑与运算符,“|”是按位或运算符;而“厂是逻辑或运算符实验控制语句3一.实验目的
1.熟练掌握if、if…else、if…elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构
2.熟练掌握while语句、do...while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构
3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧进一步学习调试程序,掌握语法错误和逻辑错误的检查方法二.实验内容
1.选择结构程序设计;
2.if语句的使用;
3.使用switch语句实现多分支选择结构;
4.三种循环语句的应用;
5.循环结构的嵌套;
6.break和continue语句的使用三.实验环境PC微机DOS操作系统或Windows操作系统Turbo C程序集成环境四.实验步骤
1.编程实现输入一个整数,将其数值按照
①小于1,
②1〜99,
③10〜999,
④100以上四个类别分类并显示要求1将变量定义为整型2输入整数前,利用puts/printf给出提示信息3输出结果时要有必要的说明,例如输入358时,显示358is100to9994该程序利用if语句实现运行程序,分别输入9,21,321,4321数据检查输出信息的正确性程序如下#includestdio.hvoid mainIinti;scanf%d\n”,i;ifi10printfC%d is0to10\n”,i;ifi=10i99printf%d is1to99\n,i;ifi=100i999printfu%d is100to999\n,i;ifi=1000printfC%d is1000to+oo\,i;n。
个人认证
优秀文档
获得点赞 0