版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语 言 程 序 设 计实验指导书电子工程学院2010-2实验一 C程序的运行环境和编辑、调试、运行简单C程序一、实验目的1. 了解 Turbo C 的基本操作方法,学会独立使用该系统。2. 掌握在该系统上如何编辑、编译、运行一个C程序。二、实验内容及步骤1. 进入C的工作环境1)在Windouws环境下: “开始”“程序” “MS-DOS” 屏幕上进入 MS-DOS窗口2)在Dos环境下: 键入命令c:> cd c:tcc:tc> tc 屏幕上出现Turbo C的工作环境2. 熟悉Turbo C的工作环境 了解Edit窗口与Message窗口 了解主菜单的8个菜单项 File
2、Edit Compile Project Option Debug break/watch3. 输入并运行一个简单的程序 FileNew 输入源程序:main() printf("This is a C program.n");printf("OKn");按F9进行编译和连接,观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。按RunRun(或按Ctrl+F9) 编译、连接、运行一起完成。按RunUser screen(或按Alt+F5) 察看运行结果。按任一键从用户屏切换回TC窗口。4. 输入并编辑第二个C程序FileNew输入源程序:m
3、ain ( ) int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %dn", sum); 编辑、运行、调试该程序。5. 编辑、运行、调试自己编写的程序(至少一个程序) 如:输入上底、下底和高,计算梯形面积。观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 用FileSave (或F2)保存程序(程序名为a1.c)三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 编译过程中出现的错误信息。5. 总结讨论本次实验的结果和收获。实验二 数据类型、
4、运算符和表达式一、实验目的1. 掌握C语言的各种类型及其定义方法,赋值方法。2. 掌握不同类型之间赋值的规律。3. 学会使用各种算术运算符,特别是自加自减运算符。4. 进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容及实验步骤1. 练习一个有关字符和整型的程序。main()char c1,c2; c1=97; c2=98; printf("%c %cn",c1,c2); /*以字符形式输出*/ printf("%d %dn",c1,c2); /*转换为整数形式输出*/ 2. 转义字符的练习。main() printf("-*r*n&
5、quot;);printf("tOAbKn");printf("#-#n");printf("tABCtDEFtGHIn");printf("t123t456t789n");对照输出,理解转义字符的含义。3. 自加自减程序的练习。main() int a=5,b=3,c1,c2;a+;-b;c1=+a+b;c2=c1-a/b;b=+a+b+c1-+c2;printf("a=%dnb=%dnc1=%dnc2=%dn",a,b,c1,c2);4. 各种类型混合运算的例子main() int a=7,
6、b=3; char c1=a,c2=66;float x=12.25;double y=1.3333333333;long d=5432789;a=x+b*x+y/2-d%(c1-c2);printf("a=%d, b=%d,c1=%cn",a,b,c1);printf("d=%ld, x=%f, y=%10.2fn",d,x,y);5. 上机改错题:请指出以下C程序的错误所在(1) main();float r,s;r=5.0;s=3.14159*r*r;printf("%fn",s)(2)main float a,b,c,v;a=
7、2.0; b=3.0; c=4.0v=a*b*c;printf("%fn",v)6. 调试、运行自己编写的程序。(1) 已知圆半径r=1.5,圆柱高h=3, 求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。(2)输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32).三、实验报告要求写明1. 实验目的2. 实验内容及步骤3. 编写的程序(题目,经调试、运行后正确的程序) 4. 编译过程中出现的错误信息。5. 总结讨论本次实验中的问题和收获i+和 + i的区别,i-和 -i的区别各种类型混合运算时的类型转换实验三 顺序和分支结构的程序设计一、实验目的1. 掌握C
8、语言中使用最多的一种语句赋值语句的使用方法。2. 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。3. 熟练掌握if语句和switch语句。二、实验内容及实验步骤1. 掌握各种格式转换符的正确使用方法(1)输入程序main()int a, b;float d, e;char c1, c2;double f, g;long m, n;unsigned int p, q;a = 61; b = 62;c1 = a; c2 = b;f = 3157.890121; g = 0.123456789;d = f; e = g;p = a = m = 50000; q = b = n = -6
9、0000;printf("a=%d, b=%dnc1=%c, c2=%cnd=%6.2f, e=%6.2fn", a, b, c1, c2, d, e);printf("f=%15.6f, g=%15.12fnm=%ld, n=%ldnp=%u, q=%un", f, g, m, n, p, q);(2)运行此程序并分析结果。(3)改用scanf 函数输入数据而不用赋值语句,scanf 函数如下:scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,
10、&c2,&d,&e,&f,&g,&m,&n,&p,&q);输入的数据如下:61,62,a,b,3.56,-6.87,3157,890121,0.123456789,50000,-60000,37678,40000(说明:lf和ld格式符分别用于输入double型和long型数据)分析运行结果。(4)在(3) 的基础上将printf语句改为:printf("a=%d, b=%dnc1=%c, c2=%cnd=%15.6f, e=%15.12fn", a, b, c1, c2, d, e);printf(&
11、quot;f=%f, g=%fnm=%d, n=%dnp=%d, q=%dn", f, g, m, n, p, q);运行程序。2. 字符的输入输出#include<stdio.h>main()char a,b;a=g;b=getchar();putchar(a);putchar(b);3. 以下程序多处有错。若指定必须按下面的形式输入数据,并且必须按下面指定的形式输出数据,请对该程序做相应的修改。main double a,b,c,s,v; printf(input a,b,c: n); scanf("%d %d %d",a,b,c); s=a*b;
12、 v=a*b*c; printf("%d %d %d",a,b,c); printf("s=%fn", s, "v=%dn",v); 当程序执行时,屏幕的显示和要求输入形式如下: input a,b,c:2.0 2.0 3.0 此处的2.0 2.0 3.0是用户输入的数据 a=2.000000,b=2.000000,c=3.000000 此处是要求的输出形式 s=4.000000,v=12.0000004. 编辑、运行、调试自己编写的程序给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8189分为B,7079分
13、为C,6069分为D,60分以下为E。事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 编译过程中出现的错误信息。5. 总结讨论本次实验的结果和收获。实验四 循环结构的程序设计一、实验目的1. 熟练掌握while循环语句的应用。2. 熟练掌握dowhile循环语句的应用。3. 熟练掌握for循环语句的应用。4. 理解三者的区别和联系。二、实验内容及实验步骤1. 求5!main()int n,t;n=1;t=1;while(t<=5)n=
14、n*t;t=t+1;printf("%d",n);2. 将以上程序用dowhile语句改写。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("%d",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. 打印下列图案*main() int i,j;for(i
15、=1; i<=4;i+)for(j=1;j<= 4-i;j+)printf("");for(j=1;j<=2*i-1;j+)printf("*"); printf("n"); 6. 测试、运行自己编写的程序。(1)编写程序,求1-3+5-7+-99+101的值。(2)编写程序,求e的值,e1+1/1!+1/2!+1/3!+1/4!+。(3)编写程序,统计输入的一行中小写字母的个数。(4)打印100-999之间所有的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。(5)一个数如果恰好等于它的因子之和
16、,这个数就称为完数。求1000之内的所有完数。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 编译过程中出现的错误信息。5. 总结讨论本次实验的结果和收获。实验五 数组(一)一、实验目的1. 掌握一维数组的定义、赋值和输入输出的方法。2. 掌握二维数组的定义、赋值和输入输出的方法。二、实验内容及实验步骤1. 在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。分析:C中数组长度必须是确定大小,即指定N的值。#define N 10main()int aN,i,j,temp;printf("plea
17、se input %d numbersn",N);for(i=0;i<N;i+)scanf("%d",&ai);for(i=0;i<N-1;i+)for(j=0;j<N-1-i;j+)if(aj>aj+1)temp=aj;aj=aj+1;aj+1=temp;printf("the array after sort:n");for(i=0;i<N;i+)printf("%5d",ai);2. 有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。main( )in
18、t max,i,j,r,c;static int a34=123,94,-10,218,3,9,10,-83,45,16,44,-99;max=a00;for(i=0;i<3;i+)for(j=0;j<4;i+)if ( aij>max)max=aij;r=i;c=j;printf("max=%d ,row=%d ,colum=%d n",max,r,c);3. 测试、运行自己编写的程序。(1)编写程序,将数组中所有奇数放在另一个数组中返回。(2)输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对插在最前、插在最
19、后、插在中间三种情况运行程序,以便验证程序是否正确。(3)求两个矩阵之和。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 编译过程中出现的错误信息。5. 总结讨论本次实验的结果和收获。实验六 数组(二)一、实验目的掌握字符数组的使用。二、实验内容及实验步骤1. 输入一串字符,计算其中空格的个数。#include "stdio.h"#include "string.h"main( )char c30;int i,sum=0;gets(c);for(i=0;i<strlen(c);i
20、+)if(ci=' ')sum=sum+1;printf("空格数为:%dn",sum);2. 测试、运行自己编写的程序。(1)编写程序,将两个字符串连接起来,不要使用strcat函数。(2)编写程序,将两个字符数组s2中的全部字符复制到字符数组s1中,不使用strcpy函数。复制时,0也要复制过去。0后面的字符不复制。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 编译过程中出现的错误信息。5. 总结讨论本次实验的结果和收获。实验七 C程序的函数(一)一、实验目的1. 掌握自定义函数的一
21、般结构及定义函数的方法。2. 掌握形参、实参、函数原型等重要概念。3. 掌握函数声明、函数调用的一般方法。二、实验内容及实验步骤1. 求三角形面积函数。编写一个求任意三角形面积的函数,并在主函数中调用它,计算任意三角形的面积。参考程序/* 定义和使用求三角形面积函数的程序 */#include "math.h"#include "stdio.h"float area(float,float,float); main()float a,b,c;printf("请输入三角形的三个边长值:n")scanf("%f,%f,%f&qu
22、ot;,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0)printf("area=%-7.2fn",area(a,b,c); /* 以下是计算任意三角形面积的函数 */float area(float a,float b,float c)float s,area_s;s=(a+b+c)/2.0;area_s=sqrt(s*(s-a)*(s-b)*(s-c);return(are
23、a_s);2. 上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。main()int x,y;printf("%dn",sum(x+y);int sum(a,b);int a,b;return(a+b);3. 测试、运行自己编写的程序。(1)编写函数,对传送过来的三个数选出最大数和最小数,并通过形参传回调用函数。(2)写出两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。(3)写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3.
24、编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。5. 总结讨论本次实验的结果和收获。实验八 C程序的函数(二)一、实验目的1. 掌握自定义函数的一般结构及定义函数的方法。2. 掌握形参、实参、函数原型等重要概念。3. 掌握函数声明、函数调用的一般方法。二、实验内容及实验步骤1. 菜单程序。编写一个菜单程序,运行后首先在屏幕显示如下菜单,当输入数值1后,调用显示“&”图案的函数程序;输入数值2后,调用显示“$”图案的函数程序;输入数值3后结束程序。* Menu section * 1. Design(&) * 2. Design($) * 3. Exit *
25、参考程序/* 菜单程序 */#include "stdio.h"void design1();void design2();main() int op; /* 以下代码生成菜单 */ printf("n*"); printf("n* Menu section *"); printf("n* 1. Design(&) *"); printf("n* 2. Design($) *"); printf("n* 3. Exit *"); printf("n*&quo
26、t;); printf("nPlease enter selection:"); scanf("%d",&op); if(op=1) design1(); else if(op=2) design2();/* 以下是显示&图案的函数 */void design1() int i; char str31="&&&&&&&&&&&&&&&&&&&&&&&
27、;&&&&&&&" for(i=1;i<10;i+) puts(str);/* 以下是显示$图案的函数 */void design2() int i,j; for(i=1;i<10;i+) for(j=1;j<i;j+) putchar(' '); for(j=1;j<30;j+) putchar('$'); printf("n"); 2. 测试、运行自己编写的程序。(1)编写函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。(2)编写函数
28、,判断一个字符串是否是回文。若是回文函数返回值为1;否则函数返回值为0。回文是顺读和倒读都是一样的字符串。(3)用递归法将一个整数n转换成字符串。(4)写一函数,输入一个十六进制数,输出相应的十进制数。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。5. 总结讨论本次实验的结果和收获。实验九 编译预处理一、实验目的1. 掌握宏定义的规则,领会带参数宏定义和函数调用的区别.2. 了解文件包含命令的功能和使用规则。3. 了解条件编译的特点和功能。二、实验内容及实验步骤1. 调试运行例9.1,例9.2,例9.3,
29、例9.4。2. 利用条件编译实现:如果输入两个实数,则交换后输出;如果输入的是三个实数,则只输出其中最大的数.三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。5. 总结讨论本次实验的结果和收获。实验十 C程序的指针(一)一、实验目的1. 掌握指针和指针变量的概念。2. 掌握简单指针变量的定义和基本使用方法。3. 熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。4. 了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。5. 了解指针与字符串的关系,能熟
30、练使用指针处理字符串。二、实验内容及实验步骤1. 用指针访问简单变量。从键盘输入三个整数,要求设三个指针变量p1,p2,p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。参考程序/* 用指针访问简单变量的程序 */#include "stdio.h"main() int a,b,c,temp; int *p1,*p2,*p3; printf("请输入三个整数值(a,b,c):n"); scanf("%d,%d,%d",&a,&b,&c); p1=&a; /
31、* 使指针p1指向简单变量a */ p2=&b; /* 使指针p2指向简单变量b */ p3=&c; /* 使指针p3指向简单变量c */ if(*p1<*p2) temp=*p1;*p1=*p2;*p2=temp; if(*p1<*p3) temp=*p1;*p1=*p3;*p3=temp; /* 至此p1指向了三个数中的最大数 */ if(*p2<*p3) temp=*p2;*p2=*p3;*p3=temp; /* 至此p3指向了最小数,p2指向了中间数 */ printf("%d,%d,%dn",*p3,*p2,*p1); 运行程序,
32、任意输入三个整数(之间以逗号分隔),察看并分析程序运行结果。 运行程序,按由小到大的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。 运行程序,按由大到小的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。2. 用指针法在一维有序数组中插入数据。如下是具有10整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。数列:10,20,30,40,50,60,70,80,90,99参考程序/* 用指针法在一维有序数组中插入数据程序 */#include "stdio.h"#define M 10main( ) int aM+1=10,2
33、0,30,40,50,60,70,80,90,99; int i,n,*p,*q; printf("请输入要插入的数据:n"); scanf("%d",&n); aM=n; for(p=a,i=0;i<=M;i+) /* 确定要插入的位置p */ if(n<=*(p+i) p=p+i; /* p指向要插入数据的位置 */ break; for(q=a+M-1;q>=p;q-) /* 元素后移 */ *(q+1)=*q; *p=n; /* 插入数据 */ printf("n插入数据后的数列:n"); for(p
34、=a,i=0;i<M+1;i+) printf("%d ",*(p+i); 3. 用指针实现选择法排序程序。输入20个整数,并用指针实现选择法升序排序。参考程序/* 用指针实现的选择法排序程序 */#include "stdio.h"#define M 20main( ) int aM,n,i,j,min,temp,*p,*q; printf("请输入排序数据:n"); for(p=a;p<a+M;p+) /* 输入数据 */ scanf("%d",p); printf("排序前数列:n&qu
35、ot;); for(p=a;p<a+M;p+) printf("%d ",*p); for(i=0;i<M-1;i+) /* 选择法排序 */ q=&ai; for(p=&ai+1;p<a+M;p+) if(*p<*q) q=p; temp=ai; ai=*q; *q=temp; printf("n排序后数列:n"); for(p=a;p<a+M;p+) /* 输出排序结果 */ printf("%d ",*p); 凡是排序程序,输入数据调试时至少要包括三种情况:任意的一组数据;一组升序数
36、据;一组降序数据。 在上面的参考程序中,指针变量p在每一次的数组处理中都是变化的,不管是数组数据输入、数组数据输出、每一趟排序等,p指针总是逐步向后指向下一个元素。在编写调试程序时,指针p的指向也可以相对固定,而采用加(或减)移动量的方式指向其他的数组元素。4. 测试、运行自己编写的程序。将一个3*3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素:1357911131519将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出以转置的矩阵。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的
37、程序) 4. 思考题的解决方法。5. 总结讨论本次实验的结果和收获。实验十一 C程序的指针(二)一、实验目的1. 掌握指针和指针变量的概念。2. 掌握简单指针变量的定义和基本使用方法。3. 熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。4. 了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。5. 了解指针与字符串的关系,能熟练使用指针处理字符串。二、实验内容及实验步骤1. 调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: 2个数的和, 2个数交换值.要求用函数指针调用这两个函数,结果在主函数中输出.main()
38、int a,b,c,(*p)();scanf("%d,%d",&a,&b);p=sum;*p(a,b,c);p=swap;*p(a,b);printf("sum=%dn",c);printf("a=%d,b=%dn",a,b);sum(int a,int b,int c) c=a+b; swap(int a;int b) int t;t=a;a=b;b=t;调试程序时注意参数传递的是数值还是地址.2. 测试、运行自己编写的程序。(1)写一个函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int st
39、rcmp(char * p1,char * p2);设p1指向字符串s2,要求当s1=s2时,函数返回值为0;如果s1<>s2,则返回它们二者第一个不相同的ASCII码值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果s1<s2,则输出负值。两个字符串S1、S2由main函数输入,strcmp函数的返回值也由main函数输出。(2)用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入,最后在主函数中输出。(3)有n个人围成一圈,顺序排号。从第1个人开始报数(
40、从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。5. 总结讨论本次实验的结果和收获。实验十二 C程序的结构体一、实验目的1. 掌握结构体的概念和特点。2. 熟练定义结构体数据类型,掌握结构体变量的定义及使用方法。3. 了解结构体数组的特点,能使用结构体数组解决简单问题。4. 掌握结构体指针的特点,能使用结构体指针作函数的参数。二、实验内容及实验步骤1. 用结构体类型实现“日期问题”。日期问题:已知一个日期(包括年、月、日),编写程序,计算
41、这一天是这一年的第几天。参考程序/* 用结构体类型实现的日期问题程序 */#include "stdio.h"struct date /* 定义结构体数据类型 */ int year; int month; int day;main() struct date d; int sum=0; printf("请输入日期(年、月、日之间用空格分隔):n"); scanf("%d%d%d",&d.year,&d.month,&d.day); switch(d.month) case 1:sum=0;break; cas
42、e 2:sum=31;break; case 3:sum=31+28;break; case 4:sum=31+28+31;break; case 5:sum=31+28+31+30;break; case 6:sum=31+28+31+30+31;break; case 7:sum=31+28+31+30+31+30;break; case 8:sum=31+28+31+30+31+30+31;break; case 9:sum=31+28+31+30+31+30+31+31;break; case 10:sum=31+28+31+30+31+30+31+31+30;break; case
43、11:sum=31+28+31+30+31+30+31+31+30+31;break; case 12:sum=31+28+31+30+31+30+31+31+30+31+30;break; sum+=d.day; /* 天数累加 */ if(d.month>2) /* 闰年处理 */ if(d.year%400=0|d.year%100!=0&&d.year%4=0) sum+=1; printf("Total: %dn",sum);程序调试: 运行程序,输入一个合法日期数据,察看并分析程序结果。 运行程序,输入一个月份非法的日期数据,察看并分析程序
44、结果。 运行程序,输入一个日子非法的日期数据,察看并分析程序结果。 完善程序,使得在任何情况下,都能输出一个合理的结果。 用结构体指针改写上面的程序。2. 学生成绩问题。有10个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入10个学生数据,要求打印出每门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 参考程序/* 学生成绩问题程序 */#include "stdio.h"#define N 10struct student /* 定义结构体数据类型 */ char num5; /* 学号(不超过4位) */ char nam
45、e10; /* 姓名(不超过9位) */ int score1; /* 成绩1 */ int score2; /* 成绩2 */ int score3; /* 成绩3 */;main() struct student stuN; /* 定义结构体数组 */ int max=0,sum1=0,sum2=0,sum3=0; int i,k=0,total,ave1,ave2,ave3,average; for(i=0;i<N;i+) /* 输入学生数据,并进行成绩统计 */ printf("No.%d: n",i+1); printf("Enter num:&q
46、uot;); gets(stui.num); printf("Enter name:"); gets(); printf("Enter score1,score2,score3:"); scanf("%d,%d,%d",&stui.score1,&stui.score2, &stui.score3); getchar(); total=stui.score1+stui.score2+stui.score3; sum1+=stui.score1; sum2+=stui.score2; sum3+
47、=stui.score3; if(total>max) max=total; k=i; /* 第k个结构体元素为最高分学生数据 */ ave1=sum1/N; ave2=sum2/N; ave3=sum3/N; average=(stuk.score1+stuk.score2+stuk.score3)/3; printf("The average score of this class are:n"); printf("score1=%d, score2=%d, score3=%dn",ave1,ave2,ave3); printf("T
48、he student of maxscore is:n"); printf("num:%s,name:%s,score1:%d,score2:%d,score3:%d,average:%dn", stuk.num,,stuk.score1,stuk.score2,stuk.score3,average);程序调试:先用三个学生的数据调试程序(将程序中符号常量N定义为3): 运行程序,输入三个学生的数据:学号不超过4字符,以回车键结束;姓名不超过9字符,以回车键结束;成绩数据之间用逗号分隔,以回车键结束。察看并分析程序结果。 运行程序,输入的学号或
49、姓名信息超过规定长度,察看并分析程序结果。用三个学生的数据调试通过后,再用10个学生数据进行测试。三、实验报告要求写明:1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。5. 总结讨论本次实验的结果和收获。实验十三 编程综合练习一、实验目的1. 掌握C程序设计语言的相关知识,提高C程序的编程技巧;2. 学会使用文件相关函数进行编程综合练习。二、实验内容及实验步骤1. 文本文件显示。用任何一种方法先创建一个文本文件string.txt,编写程序将该文件的内容显示出来。参考程序/* 显示文本文件的程序 */#include "
50、;stdio.h"main() FILE *fp; char ch; if(fp=fopen("string.txt","r")=NULL) printf("cannot open source file.n"); exit(1); while(!feof(fp) ch=fgetc(fp); putchar(ch); fclose(fp);程序调试 建立string.txt文本文件。 运行程序,察看并分析程序的运行结果。 删除string.txt文本文件后,运行程序,察看并分析程序的运行结果。2. 文件复制。编写一个文本文件
51、复制函数,并在主函数main()中调用它,将上面建立的文本文件string.txt复制到文件backup.txt中。参考程序/* 文件复制程序 */#include"stdio.h"void copy(char *,char *); /* 文件复制函数原型说明 */main() char *source="string.txt" char *target="backup.txt" copy(source,target); void copy(char *source,char *target) FILE *fp_s,*fp_t; if(fp_s=fopen(source,"r")=NULL) /* 以读方式打开源文件 */ printf("cannot open source file.n"); exit(1); if(fp_t=fopen(target,"w")=NULL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省惠州市单招职业倾向性考试题库含答案详解(典型题)
- 2026年广西安全工程职业技术学院单招职业技能考试题库附参考答案详解(巩固)
- 2026年广东茂名幼儿师范专科学校单招职业技能考试题库附参考答案详解(综合卷)
- 2026年山西警官职业学院单招职业技能测试题库附参考答案详解(考试直接用)
- 2026年广东食品药品职业学院单招职业技能测试题库及答案详解(名师系列)
- 2026年山西省忻州市单招职业倾向性考试题库附答案详解
- 2026年广东省韶关市单招职业倾向性考试题库含答案详解(b卷)
- 急诊误诊漏诊防控策略
- 2025至2030包装回收行业市场发展分析及前景趋势与投融资发展机会研究报告
- 2025-2030建筑钢产业规划专项研究报告
- GB 15607-2023涂装作业安全规程粉末静电喷涂工艺安全
- DB34∕T 559-2019 中药材种子 白芷
- 数据分类与敏感信息标识
- 第五章 目的基因克隆
- OQC送检单表格模板
- 钢丝绳验收表
- 高中语文-五代史伶官传序教学设计学情分析教材分析课后反思
- 从业人员卫生知识培训
- GB/T 40822-2021道路车辆统一的诊断服务
- 《材料物理性能》配套教学课件
- 《客房服务与管理》第一章课件
评论
0/150
提交评论