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

下载本文档

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

文档简介

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) 单击【!】按钮或选择【组建】【执行】菜单项( 按

2、快捷键F5), 运行程序。(6) 判断结果正确与否。#include void main() int a, b, sum; a=123; b=456;sum=a+b;printf(“n” ,sum);填写运行结果:关闭上面的程序,按上面的步骤再次输入如下的程序,进行编译、连接和运行,写出运行结果。#include void main() 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; 运行

3、结果将会是什么 ?2. 程序改错题程序改错1: 输入如下错误的程序,然后进行编译和连接,仔细检查并修改错误,再进行编译连接,直到没有错误为止。 运行程序,#include void mian( ) printf(“ We are studying C language!n)程序改错2输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个实数,输出它们的和。#include mian( ) float a,b,c,sum;printf( Input a,b,c: )scanf(%f %f %f,&a,&b, c);sum=a+b+c;printf(n sum=%fn,sum); 输

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

5、整题完整题 1二整数整除程序模板如下:#include void main( ) int a,b, div;printf( Input a,b: );scanf(%d%d,&a,&b);/* 提示输入二个数*/* 从键盘输入二个数存储在变量a,b 中 */* 除法运算 , 相除的结果放在变量div 中 */* 用%d输出结果 */输入输出示例 :Input a,b : 3 5div=0Input a,b : 5 3div=1思考 :把上述 int a,b,div;改成 float a,b,div;scanf(%d%d,&a,&b); 中的 %d改成 %f, 同时把输出语句中的 %d改成 %f,

6、 运行程序后,再用前面的数据输入,结果会发生如何变化?为什么有这样的变化?Input a,b : 3,5div=Input a,b : 5,3div=完整题 2仿照教材中例 1-2 程序,在横线地方填写语句 , 输入圆柱体的半径和高,计算并输出圆柱体的体积和表面积。#include void main( );/*定义变量 */.printf( 请输入圆的半径和高:n);scanf(%f%f, &r,&h);/* 在屏幕上显示提示信息*/*从键盘输入半径和高给变量r*/*计算体积 */*计算表面积 */printf(v=%f,s=%fn, v,s);/* 输出体积和表面积 */输入与输出 :请输

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

8、. 程序验证或填空( 1) 编译和运行下面程序,查看执行的结果:#include int main(void)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 * * * * *

9、n”);(3) 运行程序,并分析结果。#include“stdio.h”void main( ) 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 个变量,实现将二个数进行对调,请填空。#include“stdio.h”void main( ) 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,并分别以

10、“ y = x*x ”和“ x*x =y”的形式输出x 和 y 的值。 x 的值由键盘输入。输出示例 (假设 x 的值为 3):9 = 3*33*3 = 9源程序(有错误的程序)#includeint main(void)int y;y = x*x;printf(%d = %d * %d,x);/* 输出printf(d * %d = %d, y);3. 一般编程题编程题 1编写程序,输入二个整数,计算它们的和、差、积、商和余数,并按5+11=16 这样的输出格式输出结果。编程题 2编写程序,输入二个实数,计算它们的和、差、积、商,并按32.24=12.2+20.04 这样的输出格式输出结果。

11、实数分别定义为单精度实数或双精度实数。编程题 3编写程序,从键盘输入一个大写字母,改用小写字母输出。编程题 4求华氏温度150 对应的摄氏温度。计算公式如下,其中:c 表示摄氏温度,f 表示华氏温度。55cf3299要求输出结果为:fahr = 150 , celsius = 66.思考:如果使用公式5 ( f32)150 所对应的摄氏温度, 计算结果是c计算华氏温度9否一样?为什么?编程题 5编写程序, 从键盘输入学生的三门课成绩,求其平均成绩 (保留小数点后 1 位)。4. 较难编程题编程题 1当 n 为三位十进制整数时,分别求出 n 的个位数字( digit1 )、十位数字( digit

12、2 )和百位数字( digit3 )的值。输出示例:这 里 增n 为整数152 时,它的个位数字是2,十位数字是 5,百位数字是 1加 了一提示: 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 年后的

13、本金与利息之和 (提示,利用 pow函数 )。3.5实验三选择结构程序设计一、实验目的与要求1. 理解 C 语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2. 掌握利用 if 结构实现选择结构的方法。3. 掌握利用 switch 结构实现多分支选择结构。4 结合程序掌握一些简单的算法,学习调试程序5 实验 4 学时二、实验内容1程序改错题改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x) 的值(保留1 位小数)。1( x100)xyf (x).x(x100)输入输出示例 1(改正后程序的运行结果)Enter x : 100f(100.00 ) = 0.1输入输出示例

14、2(改正后程序的运行结果)Enter x : 23f(23.00 ) = 23.0源程序(有错误的程序)#include#includevoid main(void)double x;printf(Enterx: n);scanf(=%f, x);if(x = 100) y = 1/sqrt(x)else(x != 100) y = x;printf(f(%.2f) = %.1fn,x,y);2一般编程题编程题 1输入任意三个整数a,b,c,求 3 个数中的最大值和最小值。编程题 2输入 x,计算并输出下面分段函数 f(x) 的值(保留 2 位小数)。请调用 sqrt 函数求平方根,调用 po

15、w 函数求幂。(x 1) 22x1(x 0)xf ( x)x(x 0)输入输出示例 (共运行3 次)Enter x : 10f(10.00) =3.16Enter x : 0.5f( 0.50) = 2.75Enter x : 0.f(0.00) =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

16、 )三种情况,检查输出的y 值是否正确。编程题 4某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70 套,则每套 90 元;若不足 70 套,则每套 110 元;只买上衣每件 70 元;只买裤子每条 60 元。请编写程序假设用户买入 x 件上衣和 y 条裤子,请编写程序计算相应的应付款是多少?编程题 5编写程序实现:输入一个整数,判断它能否被3 、 5 、 7 整除,同时输出如下信息。( 1) 能同时被 3 、 5 、 7 整除;( 2) 能同时被其中的哪二个数整除;( 3) 能被其中的哪一个数整除;( 4) 不能被 3 、 5 、 7 任一个数整除。3较难编程题编程题 1请

17、用 switch 语句编程计算员工每月的薪水。(exph3_1.cpp)已知某公司员工的保底薪水为500,某月所接工程的利润profit (整数)与提成的关系如下(计量单位:元) :profit 1000没有提成;1000 profit 2000提成 10%;2000 profit 5000提成 15%;5000 profit 10000提成 20%;10000 profit提成 25%。分析:为使用 switch 语句,必须将利润profit 与提成的关系, 转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000 的整数倍( 1000、2000、5000、 ),如果将利润prof

18、it 整除 1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润 profit 先减 1(最小增量),然后再整除 1000 即可:profit 1000对应 01000 profit 2000对应 12000 profit 5000对应 2、 3、45000 profit 10000对应 5、 6、7、 8、 9.10000 profit对应 10、 11、12、 编程题 2编写程序实现如下功能:输入二个运算数(exp1,exp2)和一个运算符(op),计算表达式 exp1 op exp2的值,其中OP 可以为 +、 - 、 * 、/ 、%五个符号中的任一种(提

19、示:用 switch语句实现)。4.5实验四循环结构程序设计一、实验目的与要求1 熟练掌握用while 语句, do-while 语句实现循环的方法。2 熟练掌握用for 语句实现循环的方法。3 对循环语句的三种形式进行分析、比较,以掌握各种形式的共同之处与其特点。4 掌握循环结构的嵌套,掌握break 语句和 continue 语句在循环体中的作用。5 实验 4 学时二、实验内容1. 程序验证题与改错题(1)程序验证从键盘输入一个整数,在屏幕上将其逆序数输入,例如输入8193,输出 3918。#includevoid main()int x,number;printf( 请输入一个整数:);

20、scanf(%d,&x);dox=number%10;number=number/10;printf(%d, x);while(number!=0);printf(n);.如果输入的是一个负整数,程序应该如何改?(2)程序改错计算表达式1+2!+3!+ 10!的值,改正下面程序中的多处错误。源程序(有错误的程序)#includevoid main(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+

21、4+9+10 , 并输出结果。请验证下面的程序是否符合题目要求。#include” stdio.h”int fun(intn)intm, i;for (i=1; i=n; i+)m+=i;returnm;void main()printf(m=%dn, fun(10);在上面程序的基础上,修改程序.计算 m=1-2+3- 4+9-10 。( 2)程序改错题下列程序的功能是利用自定义函数计算一无符号的整数各位数字的乘积。#includeunsigned f(unsigned num)unsigned k=0;dok*=num/10;num/=10;while(k);return k;void m

22、ain()int x;printf(“ input nx=:” );scanf(“ %d” , x);printf(“ %d” , f(x);2一般编程题编程题 1编写一函数, 把输入的 4 个数字字符转换成一个int 数据存放, 如输入4123 这字符转换为4123 这个整数,并通过主函数验证结果。编程题 2编写程序求: 1*1*1+2*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 定义两个带参数的宏,将

23、两个参数的值相加和相减,并写出程序,输入两个数作为使用宏时的实参。输出相加和相减后的和与差。编程题 4编程输出2 到 10000 之间的所有完数。所谓完数是指因子之和与它本身相等的数。如6=1+2+3 , 6 是一个完数。要求:定义函数factor(m)判断 m 是否为完数;由主函数调用它,来对所有2 到 10000 之间的所有数进行判断。#include #include int factor(int m)int i,s=0;void main()inti,m,sum;3较难编程题编程题 1 用函数调用实现求两个数的最大公因子和最小公倍数编程题 2 用递归方法求1+2+3+ +并将其中素数去

24、除后之和。#include #include int isprime (int number)long fact(int n).void main()int m,sum;6.4实验六数组一、 实验目的与要求1. 掌握一维数组的定义、赋值和输入输出的方法。2. 理解一维数组的存储方法及下标的表示方法。3. 掌握与数组有关的算法 (特别是排序算法 )。4. 掌握二维数组的定义、赋值和输入输出的方法。5. 理解二维数组的存储方法及下标的表示方法。6. 实验 4 学时。二、实验内容这里有改动1程序验证题与改错题( 1)程序验证题 给定一个整型数组 a,要求求出其中小于 0 的元素的个数。请验证下面的程

25、序是否符合题目要求。#define N 10void main()int aN=11,2,4,-1,5,-3,-66,0,10,-5;int i;/* 变量 i 用于 for 循环 */int count=0;/* 变量 count 用于技术,初始化为0*/for (i=0;iN;i+)if(ai0)count+;/* 如果元素ai0 , count 计数 +1*/printf(%dn,count); 给定一个整型二维数组 a(3,3) ,要求求出对角线元素的和。请验证下面的程序是否符合题目要求。.#include #define N 3void main()int aNN=1,2,3,4,5

26、,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*/printf(%dn,sum);return 0;注 1:在程序验证题的基础上,修改程序,求出数组a 中大于 a0 的元素之和。注 2:对上述程序进行优化,消除内循环,实现同样的效果。在的基础上,修改程序,求出数组a 中反对角线元素之和。提示:内循环用逆序;i+j=N-1 。(2)程序改错题2一般编程题编程题 1:从键盘输

27、入 10 个整型数据,放入数组 a 中,求其最大值、最小值及其所在元素的下标位置,并输出。程序提示:定义 10 个元素的数组,用 for 循环语句逐一输入数据;定义最大值变量和最小值变量,用 for 循环语句遍历所有数组元素,逐一比较查找最大值和最小值。编程题 2:给定一个字符数组a,要求将数组的内容倒置。如:执行前数组的内容为1,2,3,4,5,6,7,8执行后数组的内容为8,7,6,5,4,3,2,1提示:用 i 表示数组的第一个元素的下标;用j 表示数组最后一个元素的下标。交换 ai 和 aj ,当 ie。若找到相等元素,则返回元素下标,否则返回 -1 表示无此数。7.4实验七字符与字符

28、串处理一、实验目的与要求1. 掌握 C 语言字符型数据的概念,理解字符型与整型数据之间的关系。2. 掌握字符的输入与输出。3. 掌握转义字符常量、字符串常量的使用。4. 掌握字符、字符串与字符数组的输入与输出。5. 掌握字符串函数的使用 字符串数组的使用。6. 实验课时 2 学时二、实验内容1程序改错题 调试下列程序,使之具有如下功能:任意输入两个字符串(如: ningbo 和 china) ,.并存放在a,b 两个数组中。然后把较短的字符串放在a 数组,较长的字符串放在b 数组。并输出。程序中的 strlen 是库函数,功能是求字符串的长度,它的原型保存在头文件 string.h 中。调试时

29、注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。#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;/* error */printf(a=%sn,a);printf(b=%sn,b); 下列 给定 程序中,函数 fun 的功能是: 依次取出

30、字符串中所有数字字符,形成新的字符串, 并取代原字符串。 请改正函数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;sj=0” ;/* error */void main()char item80;printf(nEnter a string :);gets(item);printf(nnThe string is : %sn,item);fun(item)

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

32、ng :);gets ( a );printf ( The original string is: );puts( a );fun( a );printf(n);printf ( The string after modified : );puts (a);编程题 2请编写输入以下图案(1)、( 2)的程序,图案的行数由输入的值确定。(1)(2).3较难编程题编程题 1编写程序:程序功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,例如,若输入edcba,则应输出abcde。#include#includevoid main()int i,j;char string100, c;p

33、rintf(Please input a string:);gets(string);/* 请填写完整 */printf(result:%sn, string);编程题 2编写程序:程序功能是统计子串substr 在母串 str 中出现的次数。要求编写并调用函数fun 的功能是: 从 str所指字符串中, 找出 substr所指子串的个数作为函数值返回。例如,当 str所指字符串中的内容为abcdabfab ,substr所指字符串的内容为ab,则函数返回整数 3。#include count(charstr,charsubstr)/* 请填写完整 */void main()char str8

34、0,substr80;int n;gets(str);gets(substr);printf(%dn,count(str,substr);.8.4实验八指针一、 实验目的与要求1. 理解和掌握指针的概念,定义和使用指针变量。2. 掌握函数之间指针的传递关系。3. 掌握通过指针操作数组中元素的方法。4. 实验 2 学时二、实验内容1程序调试(1)调试本程序,了解运算符* 与 & 的用法,并注意容易出错的地方。#includevoid main()float x;float *xptr;/xptr=&x;/,此处是否可以用*xptr=&x; ?x=7.9;printf(“ The address

35、of x is n%x” ,&x);printf(“ The value of xptr is n%x” ,xptr);printf(“ The value of x is n%f” ,x);printf(“ The value of *xptr is %fn” ,*xptr); / 程序运行结果如下:在上面的程序中,注意区别*ptr 的不同意义。语句中的* 表示此处的xptr 是作为一个指针变量来定义的,而语句中的*则表示取变量xptr 所指向的值,在本题中就是变量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 s *p1,int *p2) ;scanf( “ %d,%d,%d” ,&a,&b,&c);.p1=&a ;p2=&b ;p3=&c ;/3 个指针分别指向3 个整型变量/用

温馨提示

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

评论

0/150

提交评论