欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c语言实验指导书15227.pdf

    • 资源ID:83514974       资源大小:1.34MB        全文页数:38页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言实验指导书15227.pdf

    实验一 基本类型的程序设计方法(4 学时)一实验类型 验证性 二实验目的 1.掌握所用的 C 语言环境的基本操作方法。2.掌握编辑、编译、连接和运行 C 程序。3.掌握 C 程序的数据类型、运算符,表达式。三实验容和要求 1.C 语言上机步骤 开机,启动 Microsoft Visual C+6。建立工程文件:在“文件”菜单中选择“新建”命令项,在弹出的“新建”对话框的“工程”选项卡中选择“Win32 Console Application”选项,在“工程”框中输入工程文件名 sy1,在“c:位置”下拉框中输入或选择文件夹,单击“确定”;在以下弹出的两个对话框中分别单击命令按钮“完成”和“确定”。建立 C+源文件:在“工程”菜单中选择“添加到工程”“新建”命令项,在弹出的“新建”对话框的“文件”选项卡中选择“C+Source File”,在右边的“文件”框中输入文件名 sy11后单击“确定”。输入源程序:在弹出的文件编辑窗口中输入下面的源程序:#include void main()printf(Hello,World!n);(printf(Welcome to the C language world!n);printf(Everyone has been waiting for.n);编译:用“编译”菜单的“编译”命令项对源文件 sy11.cpp 进行编译,如果程序有语法或语义错误,在屏幕下面的窗口会出现错误信息;这时候要修改源程序、保存后重新编译。直到修改了全部错误,屏幕下面的窗口会出现下面的信息:表示已通过编译,生成了目标程序 sy11.obj。调试:接下来进行调试,完成调试后,生成可执行程序文件 sy1.exe。运行:最后用“编译”菜单的“!执行 sy1.exe”命令项运行可执行程序文件 sy .exe。运行结果如下:2.用同样的方法,完成下面程序的运行 1)输入并运行下面的程序,运行后记录并分析结果。#include main()char c1,c2;/*第 2 行*/c1=97;c2=98;/*第 3 行*/printf(%c%cn,c1,c2);在此基础上:在程序最后增加一个语句,再运行,并分析结果。printf(%d%dn,c1,c2);a c 97 98 将第 2 行改为:int c1,c2;再次运行,并分析结果。a c 97 98 再将第 3 行改为:c1=305;c2=340;1 c 305 340 再使之运行,分析运行结果。2)输入并运行下面的程序#include main()char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%c b%ctc%ctabcn,c1,c2,c3);printf(ttb%c%cn,c4,c5);在上机前先用人工分析程序,写出应得结果,上机后将二者对照。3)上机调通以下程序。输入下面的程序#include main()int i,j,m,n;i=8;j=10;m=+i;/*第5行*/n=j+;/*第6行*/printf(%d,%d,%d,%dn,i,j,m,n);运行程序,注意 i、j、m、n 各变量的值;然后分别作以下改动并运行:将第 5、6 行改为如下以后再运行:m=i+;n=+j;将程序改为:#include main()int i,j;i=8;j=10;printf(%d,%dn,i+,j+);/*第5行*/在的基础上,将第 5 行 printf 语句改为:printf(%d,%dn,+i,+j);再将 printf 语句改为:printf(%d,%d,%d,%dn,i,j,i+,j+);将程序改为:#include main()int i,j,m=0,n=0;i=8;j=10;m+=i+;n-=-j;printf(i=%d,j=%d,m=%d,n=%dn,i,j,m,n);4)运行以下程序,并分析其输出结果#include main()short i;i=-2;printf(n i:dec=%d,oct=%o,hex=%x,unsigned=%un,i,i,i,i);【注意】在 VC+6.0 中,short 和 int 类型的数据在存中占用 4 个字节。5)按格式要求输入、输出数据。#include main()int a,b;float x,y;char c1,c2;scanf(a=%d,b=%d,&a,&b);scanf(%f,%e,&x,&y);scanf(%c%c%c,&c1,&c1,&c2);/*第8行*/printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2);运行该程序,按如下方式在键盘上输入数据:a=3,b=7 85,71.82 aA 请同学们写出输出的结果。【思考】程序第 8 行中,为什么变量 c1 要输入两次?6)运行以下程序,并分析其输出结果#include main()float f;f=3.1415;printf(n%f,%4.3f,%5.3f,%-10.3f,%10.3fn,f,f,f,f,f);7)运行以下程序,并分析其输出结果#include main()int a,b;float c,d;char c1,c2;a=61;b=62;c=31.5;d=-68.87;c1=a;c2=A;printf(n);printf(a=%d,b=%dn,a,b);printf(c=%f,d=%fn,c,d);printf(c=%e,d=%en,c,d);printf(c1=%c,%cn,c1,c2);【注意】在 VC+6.0 中,实数的指数形式是:X.XXXXXXeXXX 8)以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并把他们在屏幕上输出。完成以下填空,并把程序调通,写出当输入为 45,34.5,A时程序的运行结果。#include main()int a;float b;char c;scanf(%d,%f,%c,);printf(a=n,a);printf(b=n,b);printf(c=n,c);9)指出以下程序的错误并改正,并上机把程序调通。#include main()int a;scanf(%f,a);printf(a=%f,a);char c;c=A;printf(%f,c)四思考题 1.编写程序,用 getchar 函数读入两个字符 c1,c2,然后分别用 putchar 函数和 printf 函数输出这两个字符。并思考以下问题:变量 c1,c2 应定义为字符型或整型?还是二者皆可?要求输出 c1 和 c2 的 ASCII 码,应如何处理?用 putchar 函数还是 printf 函数?整型变量和字符型变量是否在任何情况下都可以互相代替?2.设圆半径 r=2,圆柱高 h=3,求圆周长,圆柱底面积,圆柱体积。用 scanf 输入数据,用 printf 输出计算结果,输出时要求有文字说明,取小数点后两位数字。3.将 5 位整数按逆序输出,并按位求和。实验二 程序流程控制(4 学时)一实验类型 验证和设计 二实验目的 1.掌握嵌套 if-else 语句与 if 的比较。2.掌握 for 语句与 while 语句的比较。3.掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何正确地控制计数型循环结构的次数。4.熟悉用 while 语句,do-while 语句和 for 语句实现循环的方法。5.掌握在程序设计中用循环的方法实现各种算法(如穷举、选代、递推等)。6.掌握选择结构与循环结构的嵌套。7.掌握用 break 语句和 continue 语句改变循环状态的方法。三实验容和要求 1.已知三个数 a,b,c,找出最大值放在 max 中。#include main()int a,b,c,max;printf(请输入 3 个整数(中间用逗号分开):);scanf(%d,%d,%d,&a,&b,&c);if(a=b)max=a;else max=b;if(cmax)max=c;printf(max=%dn,max);若输入下列数据,分析程序的执行顺序并写出输出结果。序号 输入的 3 个整数 a、b、c 输出 max 1 1,2,3 2 1,3,2 3 2,1,3 4 2,3,1 5 3,1,2 6 3,2,1 2.输入某学生的成绩,经处理后给出学生的等级,等级如下:90 分以上(包括 90):A 8090 分(包括 80):B 7080 分(包括 70):C 6070 分(包括 60):D 60 分以下:E 方法一:用嵌套的 if 语句#include stdio.h main()int score;char grade;printf(请输入学生成绩:);scanf(%d,&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(n 成绩等级是%cn,grade);输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中 100分,60 分,0 分以及小于 0 和大于 100 的数据。如果稍不注意就会出现小的程序缺陷。方法二:用 switch 语句 分析:switch 语句是用于处理多分支的语句。注意,case 后的表达式必须是一个常量表达式,所以在用 switch 语句之前,必须把 0100 之间的成绩分别化成相关的常量。所有 A(除 100 以外)、B、C、D 类的成绩的共同特点是十位数相同,此外都是 E 类。则由此可把score 除十取整,化为相应的常数。请同学们自己根据分析写出完整的程序段,并编译、运行、查看结果。3.程序分析 下面是一个计算 e 的近似值(使误差小于给定的)的程序。#include main()double e=1.0,x=1.0,y,delta;int i=1;printf(请输入给定的误差:);scanf(%lf,&delta);y=1/x;while(y=delta)e=e+y;i+;x=x*i;y=1/x;printf(计算结果是:%12.10lfn,e);阅读上面的程序,写出程序所依据的计算公式。当输入的 delta 是什么值时,能分别使程序按下面的要求运行:不进入循环;只循环一次;只循环两次;进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?原程序中 while 语句中的 y=delta,分别换成 ydelta,y=delta,ydelta,y=detax 观察程序运行将会有什么变化。把程序中的 while 结构改写成 do-while 结构,再运行程序,说明两种结构的区别。将程序改成用 for 循环结构,计算前 50 项,并运行程序,写出运行结果。4.有一数列:2/1,3/2,5/3,8/5,求出这个数列的前 10 项之和。#include 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(%fn,s);要求:跟踪执行,观察 s、t、a、b 的变化。方法:使用功能键 F10 单步跟踪执行程序,可以在监视窗口设置要观察的变量或表达式。3 计算两个数的最大公约数。算法:输入两个整数 m、n,并求 m 除以 n 的余数 k。当 k0,将除数 n 作为被除数 m,余数 k 作为除数 n,继续求 m 除以 n 的余数 k;反复做第步,直到余数为 0 结束循环。结束循环后,除数 n 就是 m 与 n 的最大公约数。请同学们根据算法写出完整的程序,并编译、运行、检查结果的正确性。四思考题 停止调试 运行的程序 单步运行此处 监视窗口 1.求整数 N 的阶乘。2.求两个数的最小公倍数。3.从键盘上输入三个实数,它们分别代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的 C 程序;如果能构成三角形,求出三角形的面积(取小数 2 位)。用下面的数据运行程序,记录程序的输出结果:a b c 类型 三角形面积 1.58 2.37 1.58 3.21 4.25 5.16 2.48 2.48 2.48 2.35 9.28 3.83 【提示】已知三角形边长 a、b、c,计算三角形面积 s 的公式是:4.编写程序:输入 6 名学生 5 门课程的成绩,分别统计出每个学生 5 门课程的平均成绩。五注意事项 1 if-else 语句书写时应采用分层缩进的格式;switch 语句的句法格式。2.while 语句的句法格式及用法。3.for 语句的正确使用方法。注意它的初始值、终止条件及步长的确定。4.当循环不能停止(出现死循环),应该用 Ctrl+break 中断程序的运行。2cbap)cp)(bp)(ap(ps其中实验三 指针和数组(4 学时)一实验类型 验证性 二实验目的 1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;2.掌握与数组有关的算法(特别是排序算法)。3.了解指针的概念,学会定义和使用指针变量。4.掌握指针、变量和数组的关系及使用方法。三实验容和要求 1.在键盘上输入 N 个整数,试编制程序使该数组中的数按照从大到小的次序排列。分析:C 中数组长度必须是确定大小,即指定 N 的值。#define N 10 main()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;jN-1-i;j+)if(ajaj+1)temp=aj;aj=aj+1;aj+1=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5d,ai);2.有一个 34 的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。#include#define M 3#define N 4 main()int max,i,j,r,c;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=%dn,max,r,c);输入并调试、运行程序,记录程序的输出;若将 a00改为 1230,程序运行结果有错,应如何修改程序?3.测试、运行自己编写的程序。(1)编写程序,将数组中所有奇数放在另一个数组中返回。(2)输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。(3)求两个矩阵之和。4.以下程序的功能是求数组 num 中小于零的数据之和,程序中存在错误,请上机调试并改正。main()int num20;int sum,i;for(i=0;i=19;i+)scanf(“%d”,&numi);for(i=0;i=19;i+);if(numi0)sum+=numi;printf(“sum=%6d”,sum);5.运行下列程序,写出运行结果。#include stdio.h main()int a5,*p,j;for(j=0;j5;j+)aj=j+1;p=a;for(j=0;jn2)swap(pointer1,pointer2);if(n1n3)swap(pointer1,pointer3);if(n2n3)swap(pointer2,pointer3);printf(the sorted numbers are:%d,%d,%dn,n1,n2,n3);swap(int*p1,int*p2)int p;p=*p1;*p1=*p2;*p2=p;7.程序填空并调试:下面的程序可以实现从 10 个数中找出最大数和最小值的功能,请填空完成并上机调试。#include int max,min;find(int*p,int n)int*q;max=min=*p;for(q=_;_;q+)if(_)max=*q;else if(_)min=*q;main()int i,numl0;printf(Input 10 numbers:n);for(i=0;il0;i+)scanf(%d,&numi);find(num,10);printf(max=%d,min=%dn,max,min);四思考题 1.将一个数组中的值按逆序重新存放,例如,原来顺序为 8,6,5,4,1,要求改为 1,4,5,6,8。2.最常用的排序方法除了冒泡排序外,还有选择排序。程序设计思路:设有 10 个元素 a0a9,将 a0与 a1a9比较,若 a0比 a1a9都小,则不进行交换,即无任何操作。若 a1a9中有一个以上比 a0小,则将其中最小的一个(假设为 ai)与 a0交换,此时 a0中存放了 10 个中最小的数。第二遍将 a1与 a2a9比较,将剩下 9 个数中的最小者 ai与 a1对换,此时 a1中存放的是 10 个中第 2 小的数。依此类推,共进行 9 遍比较,a0到 a9就已按由小到大顺序存放。n 个数的选择排序的 N-S 图如下:定义变量、输入 n 及数组 a 各元素 for(i=0;in-1;i+)k=i for(j=i+1;jn;j+)真 假 ajak k=j 交换 ak与 ai 输出已排序的 n 个数 用冒泡排序同样的主函数,请根据上面的 N-S 图编写选择排序函数。3.下面的程序用来实现将一个 33 的矩阵转置。#include stdio.h void tranf(int(*p)3)int t,i,j;for(i=0;i3;i+)for(j=0;ji;j+)t=pij;pij=pji;pji=t;main()int i,j,a33;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);tranf(a);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,aij);printf(n);将上面程序 tranf 函数中的的方括号改成*号的表示形式,调试并运行程序。程序输入:1 2 3 4 5 6 7 8 9,记录程序的输出。4.用指向指针的方法对 n 个整数排序并输出。要求将排序单独写一个函数。n 和各个整数在主函数中输入,最后在主函数中输出。实验四 函数调用和变量存储类别(4 学时)一实验类型 验证和设计 二实验目的 1.掌握定义函数的方法;2.掌握函数实参与形参的对应关系以及“值传递”的方式;3.掌握函数的嵌套调用和递归调用的方法;4.全局变量和局部变量动态变量、静态变量的概念和使用方法。三.实验容和要求 1 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。【提示】设有两个正整数 m 和 n 实验五介绍了求最大公约数的算法 若最大公约数为 h,则最小公倍数 l=m*n/h。实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include int hcf(int m,int n)/*求最大公约数的函数*/int lcd(int m,int n,int h)/*求最小公倍数的函数*/void main()int m,n,h,l;printf(请输入两个正整数 m、n:);scanf(%d,%d,&m,&n);h=hcf(m,n);printf(%d 和%d 的最大公约数是:%dn,m,n,h);l=lcd(m,n,h);printf(%d 和%d 的最大公约数是:%dn,m,n,l);程序调试通过后,用 m=350、n=125 和 m=96、n=64 两组数据运行程序,记录程序的输出。2.上机调试下面的程序,记录系统给出的出错信息,并指出错误原因。main()int x,y;printf(%dn,sum(x+y);int sum(a,b);int a,b;return(a+b);3.编写求 n!的函数 f(int n),在主函数中输入两个整数 m、n,然后调用函数求:【注意】函数 f 的类型应用 long 或 double。四思考题 1.编写程序,任意输入 10 个整数的数列,并按从小到大的顺序进行排序,然后在删除重复数。10 个整数用 scanf 函数输入。排序的方法很多,教材 P134 介绍了冒泡排序法,算法如下:定义变量,输入排序数据数 n 和待排序的 n 个数据。n 个数排序要进行 n-1 遍。n)!-(mn!m!Cnm以下是一遍排序(第 i 遍)的算法:设本趟排序中没有交换,即 flag=0。从下标 j=n-1 的元素起,到 i+1 个元素,比较 aj与 aj-1:若 ajaj-1,将 aj与aj-1交换;并置 flag=1。若没有交换(flag=0),排序完成,退出循环。输出排序结果。上述算法的、在 main 函数中实现,其余各步调用 sort 函数完成。主函数如下:#include int a100;/*外部数组 */void main()int i,n;void sort(int);/*说明被调函数 */printf(请输入排序的数据个数 n:);scanf(%d,&n);printf(请输入要排序的%d 个整数:,n);for(i=0;in;i+)scanf(%d,&ai);sort(n);/*调用 sort 函数完成排序 */printf(排序结果:);for(i=0;in;i+)printf(%6d,ai);printf(n);关于如何删除重复数,请大家自己完成。五注意事项 1.参数是一个函数与外界的接口,其有无、多少,取决于在实现该函数功能时是否需要已知数据,以及需要多少,它的所需,即为参数。2.注意函数调用返回的特点:返回调用处,而后继续执行下面的语句。3.函数中无 return 语句时,函数的类型定义为 void 或 int,不可定义为其他。4.当被调函数定义在主调函数之后时,应在主调函数中说明被调函数,否则,调用时将出现错误。5.当一个程序由 2 个或 2 个以上的源程序文件组成时,必须将这些源程序文件组织在一个工程项目文件中。在编译时,系统会分别对项目文件中的每个文件进行编译,然后将所得到的目标文件连接成一个整体,再与系统的有关资源连接,生成一个可执行文件,最后执行这个文件。实验五 动态空间管理(2 学时)一实验类型 验证和设计 二实验目的 1.了解变量存储类别。2.了解动态空间管理。3.了解筛法求素数。4.要求学生认识程序员再动态存储管理的作用。三实验容和要求 1.检验函数 malloc、calloc 和 free#include#include void F_WithFree(void)int*p=(int*)malloc(5*sizeof(int);if(p=NULL)printf(allocation failure);/提示动态链表 exit(1);printf(%xn,p);void F_NoFree(void)int*p=(int*)calloc(5,sizeof(int);if(p=NULL)printf(allocation failure);exit(1);printf(%xn,p);int main()F_WithFree();F_WithFree();F_NoFree();F_NoFree();return 0;运行结果 2.筛选法求质素#include#include void Sieve(int n);void Display(int*p,int n);int main()Sieve(18);return 0;void Sieve(int n)int i,j,*s=(int*)calloc(n+1,sizeof(int);if(s=NULL)printf(allocation failure);exit(1);s0=s1=1;for(i=2;in+1;i+)if(si=0)for(j=2*i;jn+1;j=j+1)sj=1;Display(s,n+1);free(s);void Display(int*p,int n)int i;for(i=0;i2)请改正程序中的错误,使它能得到正确结果。注意:不得增行或删行,也不得更改程序的结构。#include /*found*/fun(n)/*found*/int c;if(n=1|n=2)c=1;else c=fun(n-1)+fun(n-2);return(c);void main()int a,b;printf(“Please input a:”);scanf(“%d”,&a);b=fun(a);printf(“The result is%dn”,b);程序 2:下列给定程序中,函数 fun 的功能是:通过某种方式实现两个变量值的交换,请改正程序中的错误,使它能得到正确结果。注意:不得增行或删行,也不得更改程序的结构。#include int fun(int*x,int y)/*found*/int t;t=x;x=y;return(y);void main()int a=3,b=8;printf(%d%dn,a,b);b=fun(&a,b);printf(%d%dn,a,b);程序 3:下列给定程序中,函数 fun 的功能是:求 s 的值。设 )12()12()2(.7565343122222kkks 请改正程序中的错误,使它能得到正确结果。注意:不得增行或删行,也不得更改程序的结构。#include /*found*/fun(int k,float*s)int n;float w,p,q;n=1;*s=1.0;/*found*/while(n=k)w=2.0*n;p=w-1.0;q=w+1.0;*s=*s*w*w/p/q;n+;void main()int a;float result;printf(“Please input a:”);scanf(“%d”,&a);fun(&result,a);printf(“The result is%lfn”,result);4编程(根据给出的编程要求完成程序的编制及录入,然后上机进行程序的运行及调 试)。(1)编写一函数 digh(m,k),它将回送整数 m 从左边开始的第 k 个数字的值,例如:digh(8542,3)=5,digh(12,4)=0。(2)请编写函数 fun(n),其功能是:计算并输出下列多项式值。要求 main 函数中函数调用使用传地址的方式来完成。nns21121.4131211(3)编写函数 fun(x,n)用递归方法求 x 的 n 次方,n 为不小于 0 整数。(4)用递归方法编写函数 Ack(m,n),对于 m0,n0,Ack(m,n)定义为:Ack(0,n)=n+1 Ack(m,0)=Ack(m-1,1)Ack(m,n)=Ack(m-1),Ack(m,n-1)实验七 字符串(2 学时)一实验类型 综合 二实验目的 1.要求学生掌握小型库的设计方法。2.要求学生理解程序设计对库的依赖性。三实验容和要求 1.输入一串字符,计算其中空格的个数。#include stdio.h#include string.h main()char c30;int i,sum=0;gets(c);for(i=0;istrlen(c);i+)if(ci=)sum=sum+1;printf(The number of spaces is:%dn,sum);2.测试、运行自己编写的程序。按照下面算法编一个程序,将两个字符串连接起来,不能用 strcat 函数。定义整型变量 i、j,字符串 s1、s2 输入字符串 s1、s2 当字符串 s1 尚未结束,改变字符串 s1 的下标,使之到 s1 结束处 当字符串 s2 尚未结束,将字符串 s2 逐个字符连接到字符串 s1 的后面 为字符串 s1 添加结束标志 输出连接后的字符串 3.有一个字符串,有若干个字符,今输入一个字符,要求程序将字符串中指定的字符删去,用外部函数实现。整个程序由 4 个文件组成,这 4 个文件如下:sy64a.cpp#include void main()extern void enter_string(char str);extern void delete_string(char str,char ch);extern void print_string(char str);/*以上 3 行声明在本函数中要调用在其他文件中定义的 3 个函数*/char c;char str80;enter_string(str);printf(请输入欲删除的字符:);scanf(%c,&c);delete_string(str,c);print_string(str);sy64b.cpp#include void enter_string(char str80)/*定义外部函数 enter_string*/printf(请输入字符串:);gets(str);/*从键盘输入字符串到数组 str*/sy64c.cpp#include void delete_string(char str,char ch)/*定义外部函数 delete_string*/int i,j;for(i=j=0;stri!=0;i+)if(stri!=ch)strj+=stri;strj=0;sy64d.cpp#include void print_string(char str)/*定义外部函数 printr_string*/printf(删除指定字符后的结果:%sn,str);建立工程 sy64,然后在工程 sy64 中建立这 4 个文件,调试并运行程序:输入字符串:abcdceccfg 输入要删去的字符:c 记录运行后的输出结果。实验八 结构体(2 学时)一 实验类型 综合型 二实验目的 1.掌握结构体类型的概念和定义方法与使用。2.掌握指向结构体变量的指针变量的概念和应用。三实验容和要求 1.定义一个结构体类型,其成员包括:学号(num),(name20),性别(sex),年龄(age),三门课的成绩(score3)。2 按上面的结构体类型定义一个结构体数组并初始化,然后调用一个函数 count,在该函数中计算出每个学生的总分和平均分,最后返回主函数输出所有各项数据(包括原有的和新求出的)。【提示】在定义结构体类型时应预留出准备计算结果的成员项。设结构体变量为函数参数,将各数据传给 count 函数。#include stdio.h struct student char num9,name20,sex;int age,score3,sum;float av;st3=06040106,Li Ping,M,18,87,89,91,06040125,Chen Fen,F,19,78,75,81,06040132,Wang Yifei,M,19,65,67,69;void count(struct student*p)int i,j;for(i=0;i3;i+)pi.sum=0;for(j=0;j3;j+)pi.sum+=pi.scorej;pi.av=pi.sum/3.0;void main()int i,j;count(st);printf(The students information:n);printf(Num Name Sex Age Score Sum Averagen);for(i=0;i3;i+)printf(%-10s%-12s%-3c%5d ,sti.num,sti.name,sti.sex,sti.age);for(j=0;j=90)num=num+1;printf(平均成绩在 90 分以上的学生人数:%2d 人n,num);fclose(fp);建立并调试、运行程序,记录程序的输出结果。5 统计上题 cj.dat 文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件 stud.dat 中。#include stdio.h main()FILE*fp1,*fp2;float x,y,z;fp1=fopen(cj.dat,r);fp2=fopen(stud.dat,w);while(!feof(fp1)fscanf(fp1,%f,%f,%f,&x,&y,&z);printf(%.0f,%.0f,%.0f,%.0fn,x,y,z,x+y+z);fprintf(fp2,%.0f,%.0f,%.0f,%.0fn,x,y,z,x+y+z);fclose(fp1);fclose(fp2);建立并调试、运行程序,记录程序的输出结果。6、思考题 (1)编程实现 Date 结构体替换 age 变量的上述程序。(2)参照课本进一步理解算法“三天打鱼两天晒网”。三注意事项 1 当程序编译成功但运行结果不正确时,则表示产生逻辑错误。此时应:查看程序的层次是否正确,尤其要注意复合语句的括号和位置等。采用分段检查的方法。在程序中的不同位置设几个函数语句,输出相关变量的值,逐段检查。最后检查算法是否正确。2 当读文件时,一定要保证指定路径上有该文件,否则打开文件失败;当写文件时,一定要保证指定盘有足够的存储空间,否则创建文件失败;对文件操作完毕后,一定要关闭文件。

    注意事项

    本文(c语言实验指导书15227.pdf)为本站会员(得****3)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开