版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计实验指导书C语言程序设计实验指导书桂林电子科技大学信息科技学院2015.01前言 上机实验的目的和要求一 上机实验的目的上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下:1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真
2、正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。二 上机实验前的准备工作1 了解所用的计算机系统的性能和使用方法;2 复习和掌握与本实验有关的教学内容;3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;4 准备好调试和运行时所需的数据。三 上机实验的步骤1 调出C语言编译系统,进入C语言工作环境;2 输入自己编制好的程序;3 检查输入是否有错,及时更正;4 进行编译和连接;5 运行程序,
3、分析结果。四、实验结束,整理实验报告实验报告应包括以下内容:1 上机题目;2 程序清单;3 运行结果;4 对结果的分析和本次获得的经验和体会。实验一 C语言程序初步数据类型、运算符和表达式一 实验目的1 熟悉C语言运行环境Microsoft Visual C+ 6.0中文版。2 掌握语言程序的书写格式和语言程序的结构,初步了解C源程序的特点。3 掌握C语言上机步骤,了解如何编辑、编译、调试和运行一个C程序的方法。4 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对他们赋值的方法。5 掌握不同的类型数据之间赋值的规律。二 实验内容1 C语言上机步骤 开机,启动Microsof
4、t Visual C+ 6。 建立工程文件:在“文件”菜单中选择“新建”命令项,在弹出的“新建”对话框的“工程”选项卡中选择“Win32 Console Application”选项,在“工程”框中输入工程文件名sy1,在“c:位置”下拉框中输入或选择文件夹,单击“确定”;在以下弹出的两个对话框中分别单击命令按钮“完成”和“确定”。 建立C+源文件:在“工程”菜单中选择“添加到工程”“新建”命令项,在弹出的“新建”对话框的“文件”选项卡中选择“C+ Source File”,在右边的“文件”框中输入文件名sy11后单击“确定”。 输入源程序:在弹出的文件编辑窗口中输入下面的源程序:#inclu
5、de <stdio.h>void main() printf("Hello,World!n"); printf("Welcome to the C language world!n"); printf("Everyone has been waiting for.n"); 编译:用“编译”菜单的“编译”命令项对源文件sy11.cpp进行编译,如果程序有语法或语义错误,在屏幕下面的窗口会出现错误信息;这时候要修改源程序、保存后重新编译。直到修改了全部错误,屏幕下面的窗口会出现下面的信息:表示已通过编译,生成了目标程序sy11
6、.obj。 调试:接下来进行调试,操作如下图所示。完成调试后,生成可执行程序文件sy1.exe。 运行:最后用“编译”菜单的“!执行sy1.exe”命令项运行可执行程序文件sy1.exe。运行结果如下:2 用同样的方法,完成下面程序的运行1 输入并运行下面的程序,运行后记录并分析结果。#include <stdio.h>main() char c1,c2; /* 第2行 */ c1=97;c2=98; /* 第3行 */ printf ("%c %cn",c1,c2);在此基础上: 在程序最后增加一个语句,再运行,并分析结果。printf ("%d %
7、dn", c1, c2); 将第2行改为:int c1,c2;再次运行,并分析结果。 再将第3行改为:c1=305;c2=340;再使之运行,分析运行结果。2 输入并运行下面的程序#include <stdio.h>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);在上机前
8、先用人工分析程序,写出应得结果,上机后将二者对照。三 分析与讨论1 下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。2 总结程序的结构和书写规则。四 思考题1 请写出C语言程序的构成和运行C语言程序的一般步骤。2 编写一个C语言程序,输入a、b、c三个数,输出其中最大者。试想,如果求四个数中的最大者,则程序该如何编写。五 注意事项1 当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。2 当需要用比较复杂的逻辑表达式时,要避免发生优先级上的错误,可以使用最高优先级的运算符()将其括起来,这样既增加可
9、读性,又不会出现不必要的错误。实验二 顺序结构与输入/输出方法一 实验目的1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。2 掌握C语言中赋值语句的使用。3 掌握C语言中各种数据的输入/输出方法,能正确使用各种格式转换符。4 理解C语言程序的顺序结构。二 实验内容上机调通以下程序。1 输入下面的程序#include <stdio.h>main() int i,j,m,n; i=8;j=10; m=+i; /* 第5行 */ n=j+; /* 第6行 */ printf("%d,%d,%d,%dn",i,j,m
10、,n);运行程序,注意i、j、m、n各变量的值;然后分别作以下改动并运行: 将第5、6行改为如下以后再运行:m=i+;n=+j; 将程序改为:#include <stdio.h>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 <stdi
11、o.h>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);2 运行以下程序,并分析其输出结果#include <stdio.h>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个字节。3 按格式要求输入、输出数据。#include <
12、;stdio.h>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=785,71.82aA
13、请同学们写出输出的结果。【思考】程序第8行中,为什么变量c1要输入两次?4 运行以下程序,并分析其输出结果#include <stdio.h>main() float f; f=3.1415; printf("n %f,%4.3f,%5.3f,%-10.3f,%10.3fn",f,f,f,f,f);4 运行以下程序,并分析其输出结果#include <stdio.h>main() int a,b; float c,d; char c1,c2; a=61;b=62;c=31.5;d=-68.87;c1='a'c2='A'
14、 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.XXXXXXe±XXX5 以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并把他们在屏幕上输出。完成以下填空,并把程序调通,写出当输入为45,34.5,A<回车>时
15、程序的运行结果。#include <stdio.h>main() int a; float b; char c; scanf("%d,%f,%c", ); printf("a= n",a); printf("b= n",b); printf("c= n",c);6 指出以下程序的错误并改正,并上机把程序调通。#include <stdio.h>main() int a; scanf("%f",a); printf("a=%f, a); char c; c=A;
16、printf("%f,c)三 思考题1 编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。并思考以下问题: 变量c1,c2应定义为字符型或整型?还是二者皆可? 要求输出c1和c2的ASCII码,应如何处理?用putchar函数还是printf函数? 整型变量和字符型变量是否在任何情况下都可以互相代替?2 设圆半径r=2,圆柱高h=3,求圆周长,圆柱底面积,圆柱体积。用scanf输入数据,用printf输出计算结果,输出时要求有文字说明,取小数点后两位数字。实验三 逻辑运算和选择结构程序设计一 实验目的1 掌握C语言表示
17、逻辑量的方法(0代表“假”,1代表“真”);2 学会正确使用逻辑运算符和逻辑表达式;3 熟练掌握if语句和switch语句。二 实验内容 1 已知三个数a,b,c,找出最大值放在max中。#include <stdio.h>main() int a,b,c,max; printf("请输入3个整数(中间用逗号分开):"); scanf("%d,%d,%d",&a,&b,&c); if(a>=b) max=a; else max=b; if(c>max) max=c; printf("max=%dn
18、",max);若输入下列数据,分析程序的执行顺序并写出输出结果。序号输入的3个整数a、b、c输出max11,2,321,3,232,1,342,3,153,1,263,2,12 输入某学生的成绩,经处理后给出学生的等级,等级如下:90分以上(包括90):A 8090分(包括80):B7080分(包括70):C 6070分(包括60):D60分以下:E方法一:用嵌套的if语句#include "stdio.h"main() int score; char grade; printf("请输入学生成绩:"); scanf("%d"
19、;,&score); if(score>100|score<0) printf("n输入成绩错误!n"); else if(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); 输入测试数据,调试
20、程序。测试数据要覆盖所有路径,注意临界值,例如此题中100分,60分,0分以及小于0和大于100的数据。如果稍不注意就会出现小的程序缺陷。方法二:用switch语句分析:switch语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除100以外)、B、C、D类的成绩的共同特点是十位数相同,此外都是E类。则由此可把score除十取整,化为相应的常数。请同学们自己根据分析写出完整的程序段,并编译、运行、查看结果。三 思考题1 有一函数:x (-5<x<0)y = x-1 (x=0)
21、x+1 (0<x<10)要求输入x的值,输出y的值。分别用: 不用嵌套的if语句; 用嵌套的if语句; 用switch语句编写程序。2 从键盘上输入三个实数,它们分别代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序;如果能构成三角形,求出三角形的面积(取小数2位)。用下面的数据运行程序,记录程序的输出结果:abc类型三角形面积1.582.371.583.214.255.162.482.482.482.359.283.83【提示】已知三角形边长a、b、c,计算三角形面积s的公式是:四 注意事项:1 if-else语句书写
22、时应采用分层缩进的格式。2 switch语句的句法格式。实验四 循环结构程序设计一 目的和要求1 掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何正确地控制计数型循环结构的次数。2 熟悉用while语句,do-while语句和for语句实现循环的方法。3 掌握在程序设计中用循环的方法实现各种算法(如穷举、选代、递推等)。4 掌握选择结构与循环结构的嵌套。二 实验内容1 程序分析下面是一个计算e的近似值(使误差小于给定的)的程序。#include <stdio.h>main() double e=1.0,x=1.0,y,delta; int i=1; printf(&qu
23、ot;请输入给定的误差:"); scanf("%lf",&delta); y=1/x; 1.0 1 1 1 1 while(y>=delta) e=1+1 i=2 x=2 y=1/2 e=e+y; 2+1/2 3 2*3 1/6i+; 2+1/2+1/6 4 2*3*4 1/24 x=x*i; 2+ +1/(n-1)! n n! 1/n!y=1/x; printf("计算结果是:%12.10lfn",e); 阅读上面的程序,写出程序所依据的计算公式。 当输入的delta是什么值时,能分别使程序按下面的要求运行: 不进入循环; 只循
24、环一次; >0.5 <=1 只循环两次; >=0.5 >1/6 进入死循环(程序将永远循环下去)。<=0 为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句? 原程序中while语句中的y>=delta,分别换成y>delta,y=delta,y<delta,y<=detax观察程序运行将会有什么变化。 把程序中的while结构改写成do-while结构,再运行程序,说明两种结构的区别。 将程序改成用for循环结构,计算前50项,并运行程序,写出运行结果。2 有一数列:2/1,3/2,5/3,8/5,求出这个数列的前10项之和。#
25、include <stdio.h>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结束循环
26、。 结束循环后,除数n就是m与n的最大公约数。请同学们根据算法写出完整的程序,并编译、运行、检查结果的正确性。三 思考题编写程序:输入6名学生5门课程的成绩,分别统计出每个学生5门课程的平均成绩。四、注意事项1 while语句的句法格式及用法。2 for语句的正确使用方法。注意它的初始值、终止条件及步长的确定。3 当循环不能停止(出现死循环),应该用Ctrl+break中断程序的运行。实验五 数组一 实验目的1 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2 掌握字符数组和字符串函数的使用;3 掌握与数组有关的算法(特别是排序算法)二、实验内容编程序并上机调试运行。1 调试下列错误程序
27、,使之具有如下功能:输入12个整数,按每行3个数输出这些整数,最后输出12个整数的平均值。写出调试过程。#include <stdio.h>#define N 12main() int i,aN,av; for(i=0;i<N;i+) scanf("%d",ai); for(i=0;i<N;i+) printf("%d",ai);if(i%3= =0) printf("n"); for(i=0;i!=N;i+) av+=ai; printf("av=%fN",av);上面给出的程序有错误和缺
28、陷,请找出程序中的错误并改正。【提示】请注意输入提示、变量赋初值、循环结束条件、输出格式等问题。2 编写程序,输入9个整数到3×3二维数组,输出: 1 2 3 1 1 2 3 4 5 6 4 5 5 6 7 8 9 7 8 9 93 有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。#include <stdio.h>#define M 3#define N 4main() 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;i&l
29、t;M;i+) for(j=0;j<N;j+) if(aij>max) max=aij; r=i; c=j; printf("max=%d,row=%d,colum=%dn",max,r,c); 输入并调试、运行程序,记录程序的输出;若将a00改为1230,程序运行结果有错,应如何修改程序?4 按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。 定义整型变量i、j,字符串s1、s2 输入字符串s1、s2 当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处 当字符串s2尚未结束,将字符串s2逐个字符连接到字符串s1的后面 为字符串s1
30、添加结束标志 输出连接后的字符串s14=s20S1ABCd/0S10 s11 s12 s13 s14 S2EFHI/0三 思考题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小的数
31、。依此类推,共进行9遍比较,a0到a9就已按由小到大顺序存放。n个数的选择排序的N-S图如下:真假定义变量、输入n及数组a各元素for(i=0;i<n-1;i+)k=ifor(j=i+1;j<n;j+)aj<akk=j交换ak与ai输出已排序的n个数用冒泡排序同样的主函数,请根据上面的N-S图编写选择排序函数。四、注意事项1 在C语言中,数组元素的下标从0开始,最大下标总是比定义的数组长度少1。2 在C语言中,定义数组时,其长度必须指定且必须用常量表示。实验六 函数一 实验目的1 掌握定义函数的方法;2 掌握函数实参与形参的对应关系以及“值传递”的方式;3 掌握函数的嵌套调用
32、和递归调用的方法;4 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。二 实验内容1 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。【提示】设有两个正整数m和n 实验五介绍了求最大公约数的算法,下面介绍用递归求m和n的最大公约数h的方法。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则: 若最大公约数为h,则最小公倍数l=m*n/h 。实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include <stdio.h>int hcf(int m
33、,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和
34、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 。4 有一个字符串,内有若干个字符,今输入一个字符,要求程序将字符串中指定的字符删去,用外部函数实现。整个程序由4个文件组成,这4个文件如下:sy64a.cpp#include <
35、;stdio.h>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); pri
36、nt_string(str);sy64b.cpp#include <stdio.h>void enter_string(char str80) /* 定义外部函数enter_string */ printf("请输入字符串:"); gets(str); /* 从键盘输入字符串到数组str */sy64c.cpp#include <stdio.h>void delete_string(char str,char ch) /* 定义外部函数delete_string */ int i,j; for(i=j=0;stri!='0'i+) i
37、f(stri!=ch) strj+=stri; strj='0'sy64d.cpp#include <stdio.h>void print_string(char str) /* 定义外部函数printr_string */ printf("删除指定字符后的结果:%sn",str); 建立工程sy64,然后在工程sy64中建立这4个文件,调试并运行程序:输入字符串: abcdceccfg输入要删去的字符:c记录运行后的输出结果。三 注意事项1 参数是一个函数与外界的接口,其有无、多少,取决于在实现该函数功能时是否需要已知数据,以及需要多少,它的所
38、需,即为参数。2 注意函数调用返回的特点:返回调用处,而后继续执行下面的语句。3 函数中无return语句时,函数的类型定义为void或int,不可定义为其他。4 当被调函数定义在主调函数之后时,应在主调函数中说明被调函数,否则,调用时将出现错误。5 当一个程序由2个或2个以上的源程序文件组成时,必须将这些源程序文件组织在一个工程项目文件中。在编译时,系统会分别对项目文件中的每个文件进行编译,然后将所得到的目标文件连接成一个整体,再与系统的有关资源连接,生成一个可执行文件,最后执行这个文件。实验七 指针一 实验目的1 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用
39、方法。3 学会使用指向函数的指针变量。二 实验内容1 运行下列程序,写出运行结果。#include "stdio.h"main() int a5,*p,j; for(j=0;j<5;j+) aj=j+1; p=a; for(j=0;j<5;j+) printf("*(p+%d)=%dn",j,*(p+j);将输出语句中的*改成方括号的形式,修改后再运行程序。2 函数void fun(float *sn,int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过实参传入,n的值大于等于0。请填空,并编写出主函数,使之成为完整
40、程序,上机调试运行。void fun(float *sn,int n) float s=0.0,w,f=-1.0; int i=0; for (i=0;i<=n;i+); f= * f;w=f/(2*i+1);s+=w; =s;3 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的?swap(int *p1,int *p2) int *p; p=p1;p1=p2;p2=pmain() int a,b; int *pt1,*pt2 ; scanf("%d,%d",&a,&b); pt1=&a; pt2=&b ;
41、if(a<b) swap(pt1,pt2); printf("%d,%d n",*pt1,*pt2) ;上机调试此程序。如果不能实现题目要求,指出原因并修改之。4 分析并验证以下程序的运行结果。#include "stdio.h"main() char str="ABC",*p=str; printf("%cn",*(p+1);5 分析并验证以下程序的运行结果:#include "stdio.h"main() char a45="ABCD","EFGH&quo
42、t;,"IJKL","MNOP" char (*p)5; int i,j; p=a; for(i=0;i<4;i+) for(j=0;j<4;j+) printf("%c",*(*(p+i)+j); /* 第9行 */printf("n"); 若将程序第9行中的%c改成%s,应该怎样修改?6 分析以下程序运行结果,说明程序的作用。#include "stdio.h"char *strc(char *s1,char *s2) char *p=s1; while(*s2!='0&
43、#39;) *p+=*s2+; return s1;main() char s130="computer ok!",s2="language",*pt; pt=strc(s1,s2); printf("%sn",pt);三 思考题1 下面的程序用来实现将一个3×3的矩阵转置。#include "stdio.h"void tranf(int (*p)3) int t,i,j; for(i=0;i<3;i+) for(j=0;j<i;j+) t=pij; pij=pji; pji=t; main(
44、) int i,j,a33; for(i=0;i<3;i+) for(j=0;j<3;j+) scanf("%d",&aij); tranf(a); for(i=0;i<3;i+) for(j=0;j<3;j+) printf("%3d",aij);printf("n"); 将上面程序tranf函数中的的方括号改成*号的表示形式,调试并运行程序。程序输入:1 2 3 4 5 6 7 8 9,记录程序的输出。2 用指向指针的方法对n个整数排序并输出。要求将排序单独写一个函数。n和各个整数在主函数中输入,最
45、后在主函数中输出。四 注意事项1 一个指针变量定义后,必须使其指向确定值(即给它赋值),否则,如果直接应用它的目标,就会破坏内存,使程序出错,甚至造成死机。2 注意二维数组元素的不同表示方法,必须灵活掌握。3 字符数组保存一字符串后,其长度一般不再起作用,对它的各种操作以字符串结束,标志'0'作为结束条件。4 字符串中%s格式整体输入和输出时,其输入输出项均为数组名。5 当用一个字符串给一字符型变量赋值时,是把该字符串的首地址赋值给它,而不是该字符串。字符型指针变量的目标是一个字符,而不是整个字符串。实验八 结构体和文件一 实验目的1 掌握结构体类型的概念和定义方法与使用。2
46、掌握指向结构体变量的指针变量的概念和应用。3 掌握文件的基本概念4 掌握文件指针与打开、关闭文件的相关函数二 实验内容1 定义一个结构体类型,其成员包括:学号(num),姓名(name20),性别(sex),年龄(age),三门课的成绩(score3)。2 按上面的结构体类型定义一个结构体数组并初始化,然后调用一个函数count,在该函数中计算出每个学生的总分和平均分,最后返回主函数输出所有各项数据(包括原有的和新求出的)。【提示】 在定义结构体类型时应预留出准备计算结果的成员项。 设结构体变量为函数参数,将各数据传给count函数。#include "stdio.h"st
47、ruct 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;i<3;i+)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗关系协调协议
- 2025年中国-东盟备考题库港股份有限公司人才招聘备考题库及1套完整答案详解
- 2025年平阳县横阳控股有限公司公开招聘国有企业高级管理人员备考题库及参考答案详解一套
- 2026年农林牧复合系统经营合同
- 2025年上海对外经贸大学学术期刊社责任编辑招聘备考题库有答案详解
- 2025年云南林业职业技术学院单招职业技能测试题库附答案
- 2025年潍坊工商职业学院单招综合素质考试题库附答案
- 2025年潞安职业技术学院单招(计算机)考试备考题库必考题
- 2025年厦门市集美区杏滨中心幼儿园招聘备考题库及参考答案详解
- 2025年新疆科信职业技术学院单招职业适应性考试模拟测试卷附答案
- 护理部主任年终汇报
- 《电力市场概论》 课件 第七章 发电投资分析
- 2024年新苏教版四年级上册科学全册知识点(复习资料)
- 题库二附有答案
- 市场拓展与销售渠道拓展方案
- 工地大门施工协议书
- 文史哲与艺术中的数学智慧树知到期末考试答案章节答案2024年吉林师范大学
- 铁血将军、建军元勋-叶挺 (1)讲解
- 2023年西门子PLC知识考试题(附含答案)
- 鼻鼽(变应性鼻炎)诊疗方案
- 消防应急疏散和灭火演习技能培训
评论
0/150
提交评论