C语言程序设计实验指导书1_第1页
C语言程序设计实验指导书1_第2页
C语言程序设计实验指导书1_第3页
C语言程序设计实验指导书1_第4页
C语言程序设计实验指导书1_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计实 验 指 导 书电子工程学院2008-2实验一 C程序的运行环境和编辑、调试、运行简单 C程序一、实验目的1 . 了解Turbo C 的基本操作方法,学会独立使用该系统。2 .掌握在该系统上如何编辑、编译、运行一个C程序。二、实验内容及步骤1 . 进入C的工作环境1)在 Windouws环境下:“开始”一“程序”-“MS-DOS屏幕上进入MS-DOS窗口2)在Dos环境下:键入命令 c:> cd c:tc /c:tc> tc /屏幕上出现Turbo C的工作环境2 . 熟悉Turbo C的工作环境了解 Edit 窗口与 Message窗口了解主菜单的8个菜单项Fil

2、e Edit Compile Project Option Debug break/watch3 .输入并运行一个简单的程序File -New输入源程序:main()printf("This is a C program.n");printf("OK'n");按F9进行编译和连接,观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因 并改正。按Run- Run(或按Ctrl+F9) 编译、连接、运行一起完成。按Run- User screen(或按 Alt+F5) 察看运行结果。按任一键从用户屏切换回TC窗口。4 .输入并编辑第二个 C程序F

3、ile -New输入源程序:main ()int a , b, sum;a=123; b=456;sum=a+b;printf("sum is %d'n",sum);编辑、运行、调试该程序。5 .编辑、运行、调试自己编写的程序(至少一个程序)如:输入上底、下底和高,计算梯形面积。观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。用File -Save (或F2)保存程序(程序名为 al.c)三、实验报告要求写明:1 .实验目的2 .实验内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序)4 .编译过程中出现的错误信息。5 .总结讨论本次实验的结

4、果和收获。实验二数据类型、运算符和表达式、实验目的1 .掌握C语言的各种类型及其定义方法,赋值方法。2 .掌握不同类型之间赋值的规律。3 .学会使用各种算术运算符,特别是自加自减运算符。4 .进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容及实验步骤1 .练习一个有关字符和整型的程序。main()char cl , c2;c1=97;c2=98;printf("%c %cn”, cl, c2);/*以字符形式输出 */printf("%d %dn”, cl, c2); /*转换为整数形式输出 */2 .转义字符的练习。main()printf("*r*

5、n");printf("tOA'bK'n");printf("#'n");printf("tABCtDEFtGHI'n");printf("t123t456t789'n");对照输出,理解转义字符的含义。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 .各种

6、类型混合运算的例子main()a' , c2=66;int a=7,b=3; char c1 =float x=12.25;double y=1.;long d=;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程序的错误所在main();float r,s;r=5.0;s=3.14159*r*r;printf("%fn" , s)mainfloat

7、a,b,c,v;a=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的区别各种类型混合运算时的类型转换实验三顺序和分支结构的程序设计、实验

8、目的1 .掌握C语言中使用最多的一种语句一一赋值语句的使用方法。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.; g = 0.;d = f; e = g;p = a = m = 50000

9、; q = b = n = -60000;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,&

10、amp;b,&c1,&c2,&d,&e,&f,&g ,&m,&n,&p,&q);输入的数据如下:61, 62, a,b,3.56,-6.87,3157.,0.,50000, -60000,37678,40000 /(说明:lf和ld格式符分别用于输入double型和long型数据)分析运行结果。在(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);

12、s=a*b;v=a*b*c;printf("%d %d %d", a,b,c);printf("s=%fn", s, "v=%d'n", v);当程序执行时,屏幕的显示和要求输入形式如下:input a,b,c:2.0 2.0 3.0此处的2.0 2.0 3.0 是用户输入的数据a=2.,b=2.,c=3.此处是要求的输出形式s=4.,v=12.4 .编辑、运行、调试自己编写的程序给出一个百分制成绩,要求输出成绩等级A、R C、Dk巳90分以上为A, 8089分为B, 7079分为C, 6069分为D, 60分以下为E。事先编

13、好程序,要求分别用 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=n*t;t=t+1;printf("%

14、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=1; i<=4;i+)for(j=1;j

15、<= 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 的值,e 1 + 1/1 ! +1/2!+1/3!+1/4!+。 编写程序,统计输入的一行中小写字母的个数。(4)打印100-999之间所有的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数 本身。(5) 一个数如果恰好等于它的因子之和,这个数就称为完数。求 1000

16、之内的所有完数。三、实验报告要求写明:1 .实验目的2 .实验内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序)4 .编译过程中出现的错误信息。5.总结讨论本次实验的结果和收获。实验五数组(一)、实验目的1 .掌握一维数组的定义、赋值和输入输出的方法。2 .掌握二维数组的定义、赋值和输入输出的方法。二、实验内容及实验步骤1 .在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。分析:C中数组长度必须是确定大小,即指定 N的值。#define N 10main()int aN,i,j,temp;printf("please input %d numbersn

17、",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 .有一个3X4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。 main()int max,i,j,r,c;static int a34=1

18、23,94,-10,218,3,9,10,-83,45,16,44,-99;max=a00;for(i=0;i<3;i+)for(j=0;j<4;j+)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+)if(ci='')sum=sum+1;p

20、rintf("The number of spaces is : %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",

22、&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(area_s);2

23、.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。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 section1. Design(&)2. Design($)3. Exit*参考程序/*菜单程序*/#in

25、clude "stdio.h" void design1();void design2();main()int op;printf("n printf("n printf("n printf("n printf("n printf("n/*以下代码生成菜单*/*");Menu section1. Design(&)2. Design($)3. Exit*");*");*");*");*");printf("nPlease enter se

26、lection:"); scanf("%d",&op);if(op=1)design1();else if(op=2) design2();/*以下是显示幽案的函数*/void design1()int i;char str31="&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&”;for(i=1;

27、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)编写函数,判断一个字符串是否是回文。若是回文函数返回值为1;否则函数返回值为0。回文是顺读和倒读都是一样的字符串。(3)用递归法将一个

28、整数n转换成字符串。(4)写一函数,输入一个十六进制数,输出相应的十进制数。三、实验报告要求写明:1 .实验目的2 .实验内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序)4 .思考题的解决方法。5.总结讨论本次实验的结果和收获。实验九编译预处理、实验目的1. 掌握宏定义的规则,领会带参数宏定义和函数调用的区别2. 了解文件包含命令的功能和使用规则。3. 了解条件编译的特点和功能。二、实验内容及实验步骤1.调试运行下面的程序(1)使用不带参数的宏定义#include <stdio.h>#define PI 3.void main()float l,s,r,v;printf

29、("input radius:");scanf("%f",&r);l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf("l=%10.4fns=%10.4fnv=%10.4fn",l,s,v);(2)在宏定义中引用已定义的宏名#include <stdio.h> #define R 3.0#define PI 3.#define L 2*PI*R#define S PI*R*R void main()printf("L=%fnS=%fn",L,S);(3)使用带

30、参数的宏#include <stdio.h>#define PI 3.#define S(r) PI*r*r void main() float a,area;a=3.6;area=S(a);printf("r=%fnarea=%fn",a,area);(4)通过宏展开得到若干个结果#include <stdio.h>#define PI 3.#define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*Rvoid main()float r,l,s,v;scanf("%f"

31、,&r);CIRCLE(r,l,s,v);printf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn”,r,l,s,v);2.利用条件编译实现:如果输入两个实数,则交换后输出;如果输入的是三个实数,则只输出其 中最大的数.三、实验报告要求写明:1 .实验目的2 .实验内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序)4 .思考题的解决方法。5 .总结讨论本次实验的结果和收获。实验十C程序的指针(一)一、实验目的1 .掌握指针和指针变量的概念。2 .掌握简单指针变量的定义和基本使用方法。3 .熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的

32、定义方法,熟练使用指针变量 访问一维数组元素。4 . 了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。5 . 了解指针与字符串的关系,能熟练使用指针处理字符串。二、实验内容及实验步骤1 .用指针访问简单变量。从键盘输入三个整数,要求设三个指针变量p1,p2,p3 ,使pl指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。参考程序/*用指针访问简单变量的程序*/#include "stdio.h"main()int a,b,c,temp;int *p1,*p2,*p3;printf("请输入三个整数值(a,b,c) :

33、 n");scanf("%d,%d,%d",&a,&b,&c);p1=&a;/*使指针pl指向简单变量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;/*至此pl指向了三个数中的最大数*/if(*p2<*p3)temp=*p2;*p2=*p3;*p3=temp;/*至此p3指向了最小数,p2指向了中间数

34、*/printf("%d,%d,%dn”,*p3,*p2,*p1);运行程序,任意输入三个整数(之间以逗号分隔),察看并分析程序运行结果。 运行程序,按由小到大的顺序输入三个整数(之间以逗号分隔) ,察看并分析程序运行结果。 运行程序,按由大到小的顺序输入三个整数(之间以逗号分隔) ,察看并分析程序运行结果。2.用指针法在一维有序数组中插入数据。如下是具有10个整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。数列:10,20,30,40,50,60,70,80,90,99参考程序/*用指针法在一维有序数组中插入数据程序*/#include "st

35、dio.h"#define M 10 main()int aM+1=10,20,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+)/*if(n<=*(p+i) p=p+i;/* pbreak;for(q=a+M-1;q>=p;q-)/*(q+1)=*q;*p=n;/*printf("n 插入数据后的数列for(p=a,i=0;i<M+1;i+) print

36、f("%d ”,*(p+i);确定要插入的位置p */指向要插入数据的位置*/元素后移*/插入数据*/:n");3.用指针实现选择法排序程序。输入20个整数,并用指针实现选择法升序排序。输入数据*/选择法排序*/参考程序/*用指针实现的选择法排序程序*/#include "stdio.h"#define M 20 main() int aM,n,i,j,min,temp,*p,*q;printf("请输入排序数据:n");for(p=a;p<a+M;p+)/*scanf("%d",p); printf(&qu

37、ot; 排序前数列:n"); 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); 凡是排序程序,输入数据调试时至少要包括三种情况:任意的一组数据;一组升序数据;一

38、组降序数据。 在上面的参考程序中,指针变量 p在每一次的数组处理中都是变化的,不管是数组数据输入、 数组数据输出、每一趟排序等,p指针总是逐步向后指向下一个元素。在编写调试程序时,指针p的指向也可以相对固定,而采用加(或减)移动量的方式指向其他的数组元素。4.测试、运行自己编写的程序。将一个3*3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素:1 357911131519将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输 出以转置的矩阵。三、实验报告要求写明:1 .实验目的2 .实验内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序

39、)4 .思考题的解决方法。5.总结讨论本次实验的结果和收获。实验十一 C程序的指针(二)一、实验目的1 .掌握指针和指针变量的概念。2 .掌握简单指针变量的定义和基本使用方法。3 .熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量 访问一维数组元素。4 .了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。5 .了解指针与字符串的关系,能熟练使用指针处理字符串。二、实验内容及实验步骤1 .调试下列程序,使之具有如下功能:任意车入2个数,调用两个函数分别求:2个数的和,2个数交换值.要求用函数指针调用这两个函数,结果在主函数中输出.main()int a,

40、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 strcmp ( c

41、har * p1,char * p2 );设pl指向字符串s2,要求当s1=s2时,函数返回值为 0;如果s1<>s2,则返回它们二者第一个不 相同的ASCII码值(如“ BOY与" BAO的第二个字母不相同,"O'与"A”之差为79-65=14); 如果s1>s2,则输出正值;如果 s1<s2,则输出负值。两个字符串S1、S2由main函数输入,strcmp函数的返回值也由 main函数输出。(2)用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入,最后在主函数中输出。(3)有n个人围

42、成一圈,顺序排号。从第 1个人开始报数(从1到3报数),凡报到3的人退出 圈子,问最后留下的是原来第几号的那位。三、实验报告要求写明:1 .实验目的2 .实验内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序)4 .思考题的解决方法。5 .总结讨论本次实验的结果和收获。实验十二C程序的结构体一、实验目的1 .掌握结构体的概念和特点。2 .熟练定义结构体数据类型,掌握结构体变量的定义及使用方法。3 .了解结构体数组的特点,能使用结构体数组解决简单问题。4 .掌握结构体指针的特点,能使用结构体指针作函数的参数。二、实验内容及实验步骤1.用结构体类型实现“日期问题”。日期问题:已知一个日期(

43、包括年、月、日) ,编写程序, 计算这一天是这一年的第几天。参考程序/*用结构体类型实现的日期问题程序*/#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

44、;case 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 11:su

45、m=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);程序调试: 运行程序,输入一个合法日期数据,察看并分析程序结果。 运行程序,输入一个月份非法的日期数据,察看并分析程序结果。 运行程序,输入一个日

46、子非法的日期数据,察看并分析程序结果。完善程序,使得在任何情况下,都能输出一个合理的结果。用结构体指针改写上面的程序。(包括学号、姓名、32.学生成绩问题。有10个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入 10个学生数据,要求打印出每门课的总平均成绩,以及最高分的学生的数据门课的成绩、平均分数)。参考程序/*学生成绩问题程序*/#include "stdio.h"#define N 10struct student /*char num5;/*char name10;/*int score1;/*int score2;/*int score3;/*;ma

47、in()struct student stuN; /*定义结构体数据类型 */学号(不超过4位)*/姓名(不超过9位)*/成绩1 */成绩2 */成绩3 */定义结构体数组*/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:");gets(stui.num);printf("Enter name:&qu

48、ot;);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+=stui.score3;if(total>max)max=total;k=i;/*第k个结构体元素为最高分学

49、生数据*/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("The student of maxscore is:n");printf("num:%s,name:%s,score1:%

50、d,score2:%d,score3:%d,average:%dn", stuk.num,,stuk.score1,stuk.score2,stuk.score3,average);程序调试:先用三个学生的数据调试程序(将程序中符号常量N定义为3): 运行程序,输入三个学生的数据:学号不超过4字符,以回车键结束;姓名不超过9字符,以回车键结束;成绩数据之间用逗号分隔,以回车键结束。察看并分析程序结果。运行程序,输入的学号或姓名信息超过规定长度,察看并分析程序结果。用三个学生的数据 调试通过后,再用10个学生数据进行测试。三、实验报告要求写明:1 .实验目的2 .实验

51、内容与步骤3 .编写的程序(题目,经调试、运行后正确的程序)4 .思考题的解决方法。5.总结讨论本次实验的结果和收获。实验十三编程综合练习、实验目的1 .掌握C程序设计语言的相关知识,提高C程序的编程技巧;2 .学会使用文件相关函数进行编程综合练习。二、实验内容及实验步骤1.文本文件显示。用任何一种方法先创建一个文本文件string.txt ,编写程序将该文件的内容显不'出来。参考程序/*显示文本文件的程序*/#include "stdio.h" main()FILE *fp;char ch;if(fp=fopen("string.txt",&q

52、uot;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 .文件复制。编写一个文本文件复制函数,并在主函数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,"广)=NULL) /*以读方式打开源文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论