C语言程序设计实验电子稿_第1页
C语言程序设计实验电子稿_第2页
C语言程序设计实验电子稿_第3页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、1.3 实验一一熟悉C语言的VC+6.0编程环境、实验目的与要求1.学会使用Visual C+集成开发环境。2 掌握简单C程序的编写、编辑、编译、连接和运行。3初步学会 Visual C+环境下简单调试 C程序的方法。、实验内容1. 程序运行题(1) 打开VC+6.0环境。(2) 在VC+6.0环境的编辑窗口中,输入如下程序保存为myexp1_1.cpp。(3) 选择 【组建】【编译myexp1_1.cpp】(可按快捷键 CTRL+F7命令对程序进行 编译。(4) 选择【组建】【组建】(按快捷键F7)命令对程序进行连接。(5) 单击【!】按钮或选择【组建】【执行】菜单项(按快捷键F5),运行程

2、序。(6) 判断结果正确与否。#in clude void mai n() int a, b, sum;a=123;b=456;sum=a+b;printf( “n”,sum);填写运行结果:关闭上面的程序,按上面的步骤再次输入如下的程序,进行编译、连接和运行,写出运 行结果。#in elude void mai n() int m=7,n=4;float a=38.4,b=6.4, x;x=m/2+n*a/b+1/2;printf( “ %fn ” ,x);填写运行结果:思考:把前面的语句 x=m/2+n*a/b+1/2;改为 x=m/2.0+n*a/b+1.0/2;运行结果将会是什么?2.

3、 程序改错题程序改错1:输入如下错误的程序,然后进行编译和连接,仔细检查并修改错误,再进行编译连 接,直到没有错误为止。运行程序,#i nclude void mian() printf( “ We are study ing C Ian guage!n)程序改错2输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个实数,输出它们的和。#in clude mia n() float a,b,c,sum;printf( In put a,b,c:)scanf(%f %f %f,&a,&b, c);sum=a+b+c;prin tf(n sum=%fn,sum);输入该程序,然后进

4、行编译和连接,如果出错,仔细检查并修改错误,再进行编译 连接,直到没有错误为止。 运行程序,按照输入输出示例提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。 查看运行结果,判断结果正确与否。输入输出示例:In put a,b,c: 3 5 6sum=14.0再次运行程序并按如下的格式输入数据,观察结果是否正确?为什么?In put a,b,c: 3,5,6sum=?思考:改正程序的错误后,把printf 语句中的%f改成%d,再运行程序,有什么结果?In put a,b,c: 3.5,5.5,6.5结果:3. 程序完整题完整题1二整数整除程序模板如下#in

5、 clude void mai n() int a,b, div;prin tf( In put a,b:);/*提示输入二个数*/scan f(%d%d,&a,&b);/*从键盘输入二个数存储在变量a,b中*/*除法运算,相除的结果放在变量div中*/*用%d输出结果*/输入输出示例:In put a,b : 3 5div=OIn put a,b : 5 3div=1思考:把上述 int a,b,div; 改成 float a,b,div;scanf(%d%d,&a,&b);中的d改成%f,同时把输出语句中的 d改成%f,运行程序后,再用前 面的数据输入,结果会发生如何变化?为什么有这样的变

6、化?In put a,b : 3,5 div=In put a,b : 5,3 div=完整题2仿照教材中例1-2程序,在横线地方填写语句 ,输入圆柱体的半径和高,计算并输出圆 柱体的体积和表面积。#in clude /*定义变量*/void mai n() printf(请输入圆的半径和高:n);/*在屏幕上显示提示信息*/scanf(%f%f, &r,&h);/*从键盘输入半径和高给变量r*/*计算体积*/*计算表面积*/prin tf(v=%f,s=%fn, v,s)/*输出体积和表面积*/输入与输出:请输入圆的半径和高:5.0 8.0输出结果?试一试:如果把上述程序中所有的 %f改成%

7、d再次运行程序,仍然输入“ 5.0 8.0 ”,输出结果会 是什么?分析结果。把上述程序中的第一个n去掉,再编译运行程序,有什么变化?试说出n的作用。2.5 实验二 编写几个简单的 C 程序一、实验目的与要求1. 掌握C语言基本数据类型的概念,理解数据类型与运算的关系。2. 掌握简单变量的定义,算术表达式和赋值表达式的使用。3. 掌握基本输出语句的使用。4. 进一步熟悉C程序的编辑、编译、连接和运行的过程。5. 掌握简单C程序查错方法,编写几个简单程序。6. 实验 4 学时二、实验内容1. 程序验证或填空(1 ) 编译和运行下面程序,查看执行的结果:#includeint main(void)

8、int si=-1;float f=5; double df=3; printf(si = %d, f = %f, f = %lfn, si,f,df); return 0; 若把输出语句中的格式控制中的格式说明符的顺序改变一下,会有什么结果? 再把lf修改为f,运行会有什么结果?(2) 分析程序,并上机运行验证运行结果#include “ stdio.h ”void main( ) printf(“ t*n ” );printf(“ tb* * *n” );printf(“ tbb * * * * *n” );(3) 运行程序,并分析结果。#include “ stdio.h ”void m

9、ain( ) int a=10,x=5,y=6; a+=a*=6; x=y+;y=+x ; a=x+y ;printf(“ d,%d,%dn ,a,x,y);(4) 不用第3个变量,实现将二个数进行对调,请填空。#i nclude“ stdio.h ”void mai n() int a,b;scanf(“%d%d,&a,&b);printf(a=%d b=%dn” ,a,b);a= ; b= ; a= ;printf( a=%d b=%dn” ,a,b);2. 程序改错改正下面程序中的多处错误。计算某个数x的平方y,并分别以y = x*x ”和x*x =y”的形式输出x和y的值。x的值由键盘

10、输入。输出示例(假设x的值为3):9 = 3*33*3 = 9源程序(有错误的程序)#in cludeint main( void)int y;y = x*x;prin tf(%d = %d * %d,x);/*输出prin tf(d * %d = %d, y);3. 一般编程题编程题1编写程序,输入二个整数,计算它们的和、差、积、商和余数,并按5+1仁16这样的输出格式输出结果。编程题2编写程序,输入二个实数,计算它们的和、差、积、商,并按32.24=12.2+20.04这样的输出格式输出结果。实数分别定义为单精度实数或双精度实数。编程题3编写程序,从键盘输入一个大写字母,改用小写字母输出。

11、编程题4求华氏温度150 T对应的摄氏温度。计算公式如下,其中:c表示摄氏温度,f表示华氏温度。99要求输出结果为:fahr = 150, celsius = 66思考:如果使用公式c 5-f32)计算华氏温度150 T所对应的摄氏温度,计算结果是9否一样?为什么?编程题5编写程序,从键盘输入学生的三门课成绩,求其平均成绩(保留小数点后1位)。4. 较难编程题 编程题1当n为三位十进制整数时,分别求出n的个位数字(digitl )、十位数字(digit2 )和百位数字(digit3 )的值。输出示例:这里增 加了一 个题目 n为整数152时,它的个位数字是2,十位数字是5,百位数字是1) 提示

12、:n的个位数字digit1 的值是n%10,十位数字digit2 的值是(n/10)%10百 位数字digit3 的值是n/100。编程题2将从键盘输入的实型十进制数分离为整数部分和小数部分后输出。如输入233.55,输出为:233.55=233+0.55。编程题3计算定期存款的本金与利息之和。 设银行定期存款的年利率 rate为2.25%,存款期为n 年,存款本金为 money元,具体的数字由键盘输入,编程计算n年后的本金与利息之和(提示,禾U用pow函数)。3.5实验三选择结构程序设计、实验目的与要求1. 理解c语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2. 掌握利用if结

13、构实现选择结构的方法。3. 掌握利用switch结构实现多分支选择结构。4. 结合程序掌握一些简单的算法,学习调试程序5. 实验4学时、实验内容1 程序改错题改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位(x 100)小数)。y f(x)(x 100)输入输出示例1 (改正后程序的运行结果)Enter x : 100f(100.00 ) = 0.1输入输出示例2 (改正后程序的运行结果)Enter x : 23f(23.00 ) = 23.0源程序(有错误的程序)#in clude#in cludevoid mai n(void)double x;prin tf

14、(E nter x: n);scanf(=%f, x);if(x = 100) y = 1/sqrt(x)else (x != 100) y = x;prin tf(f(%.2f) = %.1fn ,x,y);2般编程题编程题1输入任意三个整数a,b,c,求3个数中的最大值和最小值。编程题2函数求平方输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。请调用sqrt根,调用pow函数求幕。广21(x 1) 2x (x 0)xf(x) x (x C)输入输出示例(共运行3次)Enter x : 10f(10.00) = 3.16Enter x : 0.5f( 0.50) = 2.75En

15、ter x : 0f(O.OO) = 0.00成本 编程题3有一函数:x (-5x0 )y= x-1 (x=0) x+1 (0x10)编写程序,要求用一 scanf函数输入x的值,输出y的值。具体要求如下:(1 )用if语句实现分支,自变量和函数值均用实数类型。(2 )自变量用scanf函数输入,给一些输入提示。(3)运行程序,输入x的值(分别为-5x0, x=0, 0x10)三种情况,检查输出的y值是否正确。编程题4某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件 70元;只买裤子每条 60元。请编写 程序假设用

16、户买入 x件上衣和y条裤子,请编写程序计算相应的应付款是多少? 编程题5编写程序实现:输入一个整数,判断它能否被3、5、7整除,同时输出如下信息。(1)能同时被3、5、7整除;(2)能同时被其中的哪二个数整除;(3)能被其中的哪一个数整除;(4)不能被3、5、7任一个数整除。3 较难编程题编程题1请用switch语句编程计算员工每月的薪水。(exph3_1.cpp)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与提成的关系如下(计量单位:兀):profit 1000没有提成;1000 v profit w 2000提成10%2000 v profit w 5000提成

17、15%5000 v profit w 10000提成20%10000v profit提成25%分析:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、),如果将利润profit 整除1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润 profit先减1 (最小增量),然后再整除1000即可:对应0profitw 10001000 v profitw 2000对应12000 v profitw 5000对应2、3、45000 v profitw 1

18、0000对应5、6、7、8、9编程题 2编写程序实现如下功能:输入二个运算数( exp1,exp2 )和一个运算符 (op), 计算表达式 expl op exp2的值,其中 OP可以为+、-、*、/、五个符号中的任一种(提示:用 switch 语句实现)。4.5 实验四 循环结构程序设计一、实验目的与要求1 熟练掌握用 while 语句, do-while 语句实现循环的方法。2 熟练掌握用 for 语句实现循环的方法。3 对循环语句的三种形式进行分析、比较,以掌握各种形式的共同之处与其特点。4 掌握循环结构的嵌套,掌握 break 语句和 continue 语句在循环体中的作用。 5 实验

19、 4 学时二、实验内容1. 程序验证题与改错题1 )程序验证从键盘输入一个整数,在屏幕上将其逆序数输入,例如输入8193,输出 3918。#includevoid main()int x,number;printf( 请输入一个整数 :); scanf(%d,&x);do x=number%10;number=number/10; printf(%d, x);while(number!=0);printf(n);如果输入的是一个负整数,程序应该如何改?(2 )程序改错计算表达式1+2!+3!+10!的值,改正下面程序中的多处错误。 源程序(有错误的程序)#i ncludevoid mai n(

20、void)int sum1,sum2, i,j;for(i=1;i10;i+) for(j=1,jb) swap(a, b);printf( “ %dt %d ” , a,b); 思考:为什么 a,b 的值没有交换? 调用函数fun计算:m=1+2+3+4+9+10 ,并输出结果。请验证下面的程序是否符合 题目要求。#include ”stdio.h ”int fun(int n)int m, i;for (i=1; i=n; i+)m+=i;return m;void main() printf(m=%dn, fun(10);在上面程序的基础上,修改程序计算m=1-2+3-4+9-10。(2

21、)程序改错题下列程序的功能是利用自定义函数计算一无符号的整数各位数字的乘积。#in cludeunsigned f(unsigned num)unsigned k=0;dok*=num/10; num/=10;while(k);return k;void main()int x;printf( “input x=:n”);scanf( “%d”, x);printf( “%d”, f(x);2一般编程题编程题 1 编写一函数,把输入的 4 个数字字符转换成一个 int 数据存放,如输入 4123 这 字符转换为 4123 这个整数,并通过主函数验证结果。编程题 2 编写程序求: 1*1*1+2

22、*2*2+3*3*3+4*4*4+5*5*5提示:主函数用来现实结果, f1( ) 函数用来求一个数的立方, f2( ) 函数用来求和。 #include int f1(int n)int f2(int m)void main()编程题 3 定义两个带参数的宏,将两个参数的值相加和相减,并写出程序,输入两个数作 为使用宏时的实参。输出相加和相减后的和与差。编程题 4编程输出 2 到 10000 之间的所有完数。所谓完数是指因子之和与它本身相等的数。如 6=1+2+3, 6 是一个完数。要求:定义函数factor(m) 判断m是否为完数;由主函数调用它,来对所有2到10000之间的所有数进行判断

23、。#include #include int factor(int m)int i,s=0;void main()int i,m,sum;3较难编程题编程题 1 用函数调用实现求两个数的最大公因子和最小公倍数编程题2用递归方法求1+2+3+ . + n并将其中素数去除后之和。 #include #include int isprime (int number)long fact(i nt n) void mai n()int m,sum;6.4 实验六数组实验目的与要求1. 掌握一维数组的定义、赋值和输入输出的方法。2. 理解一维数组的存储方法及下标的表示方法。3. 掌握与数组有关的算法(特别

24、是排序算法)。4. 掌握二维数组的定义、赋值和输入输出的方法。5. 理解二维数组的存储方法及下标的表示方法。6. 实验4学时。(1)程序验证题给定一个整型数组 a,要求求出其中小于 0的元素的个数。请验证下面的程序是否 符合题目要求。#defi ne N 10void mai n()int aN=11,2,4,-1,5,-3,-66,0,10,-5;变量i用于for循环*/变量count用于技术,初始化为0*/int i;/*int coun t=0;/*for (i=0;iN;i+)if(ai0)count+;/*如果元素 ai0 , count 计数 +1*/prin tf(%dn,cou

25、 nt);给定一个整型二维数组a(3,3),要求求出对角线元素的和。请验证下面的程序是否符合题目要求。#in elude #define N 3void mai n()int aNN=1,2,3,4,5,6,7,8,9;int i,j;/*变量i,j用于for循环*/int sum=0;/*变量sum用于求和,初始化为 0*/for (i=0;iN;i+)for(j=0;jN;j+)if (i=j)sum+=aij; /*如果是对角线元素,sum+aij*/prin tf(%dn ”,sum);return 0;注1:在程序验证题的基础上,修改程序,求出数组a中大于a0的元素之和。注2:对上述

26、程序进行优化,消除内循环,实现同样的效果。在的基础上,修改程序,求出数组a中反对角线元素之和。提示:内循环用逆序; i+j=N-1。(2)程序改错题2般编程题编程题1:从键盘输入10个整型数据,放入数组a中,求其最大值、最小值及其所在元素的下标位置,并输出。程序提示:定义10个元素的数组,用for循环语句逐一输入数据;定义最大值变量和最小 值变量,用for循环语句遍历所有数组元素,逐一比较查找最大值和最小值。编程题2:给定一个字符数组a,要求将数组的内容倒置。如:执行前数组的内容为1,2,3,4,5,6,7,8执行后数组的内容为8,7,6,5,4,3,2,1提示:用i表示数组的第一个元素的下标

27、;用 j表示数组最后一个元素的下标。交换ai和aj,当ie。若找到相等元素,则返回元素下标,否则返回-1表示无此数。7.4实验七 字符与字符串处理一、实验目的与要求1. 掌握c语言字符型数据的概念,理解字符型与整型数据之间的关系。2. 掌握字符的输入与输出。3. 掌握转义字符常量、字符串常量的使用。4. 掌握字符、字符串与字符数组的输入与输出。5. 掌握字符串函数的使用字符串数组的使用。6. 实验课时2学时二、实验内容1程序改错题 调试下列程序,使之具有如下功能:任意输入两个字符串(如:ningbo和china), 并存放在 a,b 两个数组中。然后把较短的字符串放在 a 数组,较长的字符串放

28、在 b 数 组。并输出。程序中的 strlen 是库函数, 功能是求字符串的长度,它的原型保存在头 文件 string.h 中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错 误提示发现程序中的错误。#include #includevoid main()char a10,b10,ch;int c,d,k;scanf(%s,&a);scanf(%s,&b); /* error */printf(a=%s,b=%sn,a,b);c=strlen(a);d=strlen(b);if(cd)for(k=0;kd;k+) /* error */ch=ak;ak=bk;bk=ch;ak=0;/

29、* error */printf(a=%sn,a);printf(b=%sn,b); 下列 给定程序中, 函数 fun 的功能是: 依次取出字符串中所有数字字符, 形成新 的字符串, 并取代原字符串。 请改正函数 fun 中的错误, 使它能得出正确的结果。 注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构 !#include void fun(char *s)int i,j;for(i=0;j=0;sj!=0;i+) /* error */if(si=0 & si=9)sj+=si;void main()char item80;printf(nEnter a string

30、 :);gets(item);printf(nnThe string is : %sn,item);fun(item);printf(nnThe string of changing is : %sn,item);2. 一般编程题编程题 1请编一个函数 fun(char*s) ,该函数的功能是把字符串中的内容逆置。 例如:字符串中原有的字符串为 abcdefg ,则调用该函数后,串中的内容为 gfedcba 。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容, 仅在函数 fun 的花括号中填入所编写的若干语句。#include #include #define N

31、 81void fun ( char s)/* 请填写完整 */void main() char aN;printf ( Enter a string : );gets ( a );printf ( The original string is: );puts( a );fun( a );printf(n);printf ( The string after modified : );puts (a);编程题 2请编写输入以下图案( 1)、( 2)的程序,图案的行数由输入的值确定。(2)(1)3较难编程题编程题 1 编写程序:程序功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,

32、例如,若输入 edcba,则应输出abcde。#include#includevoid main()int i,j;char string100, c;printf(Please input a string:);gets(string);/* 请填写完整 */printf(result:%sn, string);编程题 2编写程序:程序 功能是统计子串 substr 在母串 str 中出现的次数。要求编写并调用 函 数 fun 的功能是: 从 str 所指字符串中,找出 substr 所指子串的个数作为函数值返回。 例如,当str所指字符串中的内容为abcdabfab , substr所指字

33、符串的内容为 ab,则函数返回整数 3。#include count(char str,char substr)/* 请填写完整 */void main()char str80,substr80;int n;gets(str);gets(substr);printf(%dn,count(str,substr); 8.4 实验八 指针、 实验目的与要求1. 理解和掌握指针的概念,定义和使用指针变量。2. 掌握函数之间指针的传递关系。3. 掌握通过指针操作数组中元素的方法。4. 实验 2 学时、实验内容1程序调试(1) 调试本程序,了解运算符 #include void main() float

34、x;float *xptr;xptr=&x;x=7.9;printf( “ The address of x is %x printf( “ The value of xp printf( “ The value of x is %f printf( “ The value of *xptr is %f 程序运行结果如下:*与&的用法,并注意容易出错的地方。/ /,此处是否可以用*xptr=&x;?n”,&x);n”,xptr);n”,x);n”,*xptr); /在上面的程序中,注意区别*ptr的不同意义。语句中的*表示此处的xptr是作为一个指针变量来定义的,而语句中的*则表示取变量xpt

35、r所指向的值,在本题中就是变量x的值,这时的*可以作为运算符来看待。这也可以理解为什么语句中用了xptr=&x而不是*xptr= &x,因为在运算过程中*xptr所表示的就是x,如果将x的地址赋给x,肯定会产生 错误。明白了 *与&的用法后,可以接着看下面一个例子,分析其出错的原因。(2) 调试程序。下面程序中有错误,请调试修改 输入 3 个整数,按从小到大的顺序输出。#include“ stdio.h ”void main( ) int a,b,c ;int *p1,*p2,*p3; / 定义 3 个指针变量void swap(int *p1,int *p2);scanf( “ %d,%d,

36、%”d ,&a,&b,&c);p1=&a ; p2=&b; p3=&c; /3 个指针分别指向 3 个整型变量/ 用 swap 函数交换 2 个数,使较小数放到变量 a 中,较大数放到变量 b 中 if(ab) swap(p1,p2); /if(ac) swap(p1,p3);if(bc) swap(p2,p3);printf( “d,%d,%d ,a,b,c); /按从小到大的顺序输出3个数void swap(int *p1,int *p2) /swap函数试图实现 2个数的交换int *x;x=p1;/p仁 p2;/p2=x;/本题编译连接都没有问题,但是不能运行出正确结果。原因在哪里呢?

37、对语句的调用进行分析,请大家仔细观察swap函数的实现部分。语句表明ab成立,因此需要将变量a和b中的数值进行调换,使其满足从小到大的排列顺序。swap函数中定义了一个指针变量x,语句 姬是以指针变量x作为中间变量,将形参指针p1和p2所指的方向进行了调换,即,使形参指针p2指向了较小值,而p1指向了较大值,但是这种交换对变量a和b并没有产生任何影响,当 swap函数调用完毕后,变量a和b依然维持原有情况,无法使它们中的数值按从小到大的顺序重新排列,因此无法得到正确的运行效果。对swap函数如何改造才能得到正确结果呢?请大家结合本题进行改错。2. 程序完整题运用指针对传递进来的两个整型量计算它

38、们的和与积之后,通过参数返回,并予以输出。划横线的位置是本程序缺失的部分,请填写正确内容并运行此程序。#i nclude void compute(i nt m, int n, int *sum, int *p)void mai n()int x,y,sum,product;sca nf(%d%d, &x,& y); /输入两个整型量compute(x,y,&sum,&product); /将两数和存入变量 sum,积存入变量 productprin tf(%d %dn,sum,product);3. 一般编程题1. 用指针法统计10个数中正数、负数和零的个数,并分别求正数的总和,负数的总和。

39、2. 通过指向整型数组的指针将数组amn的内容按m行n列的格式输出,如一个2X3的数组将显示为如下所示的2行3列的形式:分别统计出其中输出对应英文星期16”,程序输4较难编程题1. 输入一行字符, 开始用一个指针指向这行字符的开头, 并依次向后移, 英文字母、空格、数字和其它字符的个数。2. 输入一个正整数表示一个星期中的某一天, 若此数字在 1,7 内,则 名,否则表示输入错误,例如,输入2,程序输出Tuesday”,输入出“ Illegal day ” 要求用指针数组处理。9.4 实验九 结构体与链表一、 实验目的与要求1. 掌握结构体类型变量的定义和使用。2. 掌握结构体类型数组的定义和

40、使用。3. 掌握利用结构和指针处理单向链表的方法4. 实验 4 学时。二、实验内容1. 程序完整题 定义一个结构体变量(包括年、月、日) ,计算该日在本年中是第几天,注意闰年问题。以下的程序没有考虑闰年问题,请调试以下程序,并将闰年的判断加在程序中使其完整。 #include structint year;int month;int day; date;void main( )int i,days;int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31; printf( “ Input year, month, day:” );scanf( “

41、%d,%d,%”d , &date.year, &date.month, &date.day); days=0;for(i =1; i date.month; i +) days+=day_tabi;days+=date.day;/ 此处遗漏判断闰年的语句,请补充 printf( “ %d/%d is the %dth day in %d.” , date.month, date.day, days, date.year);2. 程序改写题 改写上面的程序,用一个函数 days 来实现上面第 1 题的计算, 由主函数将年、月、 日传递给 days 函数,计算后将日数传回主函数输出。 #incl

42、ude struct int year;int month;int day; date;main()daysum(int year, int month, int day)3. 一般编程题(1) 宁波大学阳明学院分流, 信息科学与工程学院有4个专业, 分别是通信工程、 电子信息科学与工程、自动化、光电信息工程,编写程序统计每个专业的报名人数, 描述候选专 业的信息用专业名和报名数表示。(2) 从键盘输入n个学生的3门课程(语文、数学和英语)考试成绩,计算每个学生的平均成绩,并按平均成绩从高到低排序输出每个学生的信息。要求使用结构体数据类型(3) 利用下面的节点结构:struct Nodecha

43、r data;struct Node *link;实现: 从键盘输入一行字符,然后按输入顺序建立链表, 最后输出整个链表。其中建立链表 和输出链表的过程分别用不同的函数实现。(4) 假设有 a、 b 两个链表,每个链表中的节点包括学号、一门课程的成绩。要求把两个链 表合并,按学号升序排列。 (两个链表中不存在重复的学号)4. 较难编程题(1) 用结构体数组修改教材上的例 9-2,输入 n 个职工的姓名,工资,奖金和扣款,对每个 职工在原来工资的基础上增加 5%,计算职工的实发工资并输出每个职工的工资条。(2) 编写一个程序实现对学生数据的操作, 每个学生结点包括学号和三门课程的成绩以及平 均分

44、,要求:输入若干学生的学号和成绩建立链表;能对链表进行输出;能根据学号删除指定的学生结点;能插入给定的学生结点。围绕以上4个功能建立一个简单的菜单,使用户能方便地选择不同功能进行操作。第 10 章 文件10.1 知识要点而不1. 文件的功能 文件的引入, 使得 c 处理大量数据时非常方便, 可以从存储介质上直接导入导出, 必从键盘上一个一个数据输入。使用文件时,首先要定义一个文件指针 FILE *fp;C语言把文件看成是一个字符(字节)的序列,即由一个一个字符的数据顺序组成。根 据数据的组织形式,可分成 ASCII 文件和二进制文件。区别如下所示。十进制整数 10000 内存中存放形式: 00

45、100111 00010000 二进制文件中的存放形式: 00100111 00010000ASCII 码文件中的存放形式: 00110001 00110000 00110000 00110000 00110000 ASCII 优点:容易移植,缺点:占用存储空间大,耗时; 二进制优点:占用存储空间少,存储时间快;缺点:不易移植。2. 文件的打开、关闭 文件打开: if (fp=fopen( “ file1.c ” , ” r ”)= =NULL) printf( “ cannot open this filen”);exit(0); 文件关闭: fclose(fp);3. 文件读写及定位操作, fread , fwrite常用的读写函数: fputc , fgetc , fputs , fgets , fscanf , fprintf 定位函数: rewind , fseek , ftell10.2 常见错误和难点分析文件打开和关闭时,一定要指明打开或关闭的方式,如“r ”,

温馨提示

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

评论

0/150

提交评论