1、C程序设计实用上机实验文本实验 1 简单的输入输出1.输入以下程序,编译运行后根据要求从键盘输入数据,并写出程序的输出结果。 文件名: S1_1.cpp注意: / 后面是程序注释,不必输入。下同。 #include void main(void) int a, b, sum;/ 定义放加数、被加数、和的变量空间coutab; /从键盘输入加数与被加数的具体数值 , 输入时两个整数用空格或回车键隔开sum=a+b; /计算加数与被加数的和,将相加结果赋值给和所在的变量空间 coutsum=sumendl; / 在屏幕上输出相加结果 , 双引号内的字符原样显示2.根据程序要求,完善程序后输入源程序
2、,编译连接,并写出运行结果。输入一个华氏温度,要求输出摄氏温度,公式为 c=5/9 (F-32),输入输出要有说明,便于操作。将文件命名为 S1_2.cpp。程序如下:#includevoid main() double f, c;/ 定义放华氏温度及摄氏温度的两个变量空间coutf; /从键盘输入华氏温度 c= ; /计算摄氏温度cout 摄氏温度 =cendl;要求:(1)完善程序;(2)将完善后的程序输入运行。运行时从键盘输入华氏温度为 50(时,输出的摄氏温度为10,输入的华氏温度为 100(时,输出的摄氏温度为 37.7778。3.仿照样例程序编写程序 编写程序,计算圆面积,半径从键
3、盘输入,输入数据前要有提示信息,便于操作。 提示:(1) 编程步骤:定义变量,输入条件,设计算法,输出结果。(2) 圆面积公式: ,其中, ,在程序中是个常数。4.进阶提高编写程序,已知三角形的三边 a,b,c,求三角形的周长和面积。要求从键盘输入三角形的三边,输入前有提示信息,便于操作。三角形的周长:三角形的面积:实验 2 条件和开关语句1.输入以下程序,编译运行后根据要求从键盘输入数据,并写出程序的输出结果。 编写程序,从键盘输入三个数,判断其能否构成三角形的三边。文件名: S2_1.cpp #includevoid main(void) float a,b,c;/ 定义变量,存放三角形的
4、三边数据 coutabc; / 从键盘依次输入三边的值 if(a+bc)|(a+cb)|(b+ca) / 判断这三边是否能构成三角形 coutNot Trianglen; /不满足三角形三边条件 , 输出否定信息 elsecoutTrianglen; / 满足三边构成条件,输出确认信息将该源文件编译运行后,若输入 3 4 5(,输出结果是 ;若输入 1 2 5(,输出结果是 。结合程序流程分析原因。2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。(一) 编写程序 ,从键盘输入一个年份,判断该年份是否为闰年。 (2000 年是闰年 , 2200 不是闰年 )。将文件命名为 S2
5、_2.cpp。#includevoid main(void) int year; /定义变量,存放将输入的年份 coutyear; /输入欲判断的年份 if( ) / 判断该年份是否为闰年的条件coutyear is a leap yearendl; / 条件为真 , 说明输入的年份为闰年 , 输出 确认信息 elsecoutyear isnt a leap yearendl; / 否则 , 输出否定信息要求:(1)完善程序;(2)将该源文件编译运行后,若输入 2000(,输出结果是 ;若输入 2200( ,输出结果是 。结合程序流程分析原因。(二) 编写一个简易的计算器, 能根据输入的具有两
6、个操作数的表达式计算加、减、乘法。 将文件命名为 S2_3.cpp。#includevoid main() float a1, a2;/ 定义两个操作数 char oper; /定义运算符 float result; / 定义变量,存放结果 int flag=0; /? couta1opera2; /从键盘键入表达式,如 5+3( 4.5*7( 等 switch(oper)/ 利用开关语句结构判断进行何种运算 case +: / 加法 result=a1+a2; break; case -: /减法result=a1-a2; break; case *: / 乘法default:cout 输入
7、错误的运算符 !n;flag=1;if(flag=0) couta1opera2=resultendl; / 输出结果要求:(1)完善程序;(2)将该源文件编译运行后,若输入 4.5+7.2( ,输出结果是 ;若输入 4*5(,输出结果是 ;若输入 8/2(,输出结果是 。结合程序流程分析原因。( 3)整型变量 flag 在程序中起什么作用?3.仿照样例程序编写程序 设计一个函数,求出下列一元二次方程的实根: ,系数 a, b, c 的值从键盘上输入,求方程根 的计算公式为 : ,当小于 0 时, 输出“无实根! ”;否则输出 x 的两个实根。将文件命名为 S2_4.cpp4.进阶提高将文件
8、S2_3.cpp 中所设计的简易计算器进一步完善,使之可以进行除法操作。将文件命名 为 S2_5.cpp实验 3 循环语句( 1)1.输入以下程序,并写出程序的输出结果。 鸡兔共有 30 只,脚共有 90 只,问鸡兔各有多少? 文件名: S3_1.cpp#includevoid main() int x,y;/ 定义变量, x 代表鸡的数目, y 代表兔子的数目for( x=1;x30;x+)/鸡的数目从130皆有可能,所以程序将所有可能的解循环验 证一遍for(y=1;y30;y+) /* 同样兔子的数目从 130 皆有可能, 所以程序将所有可能 的解循环验证一遍 */if(2*x+4*y=
9、90&x+y=30) /在所有可能的解中将满足给定条件的解输出 cout鸡有:xt兔有:yendl; 该程序运行后的结果是 。2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。(一) 设计一个程序,输出所有的水仙花数。 所谓水仙花数是一个三位数, 其各位数字的立 方和等于该数本身。例如: ,因此 153 是一个水仙花数。将文件命名为 S3_2.cpp。#includevoid main() int a0, a1, a2;/ 定义变量, a0 代表个位, a1 代表十位, a2 代表百位int b; /b 为由 a2, a1, a0 所组成的百位数for( a2=1;a2=9;a
10、2+)/百位的位值从 19皆有可能 for(a1=0;a1=9;a1+)/十位的位值从 09皆有可能 for(a0=0;a=9;a+)个位的位值从 09皆有可能 b= ; /由每次循环的百、十、个位组成一个整数if(b= ) / 在所有可能的解中将满足给定条件的解输出coutbendl; 要求:( 1 )完善程序; (2)将该源文件编译运行后,结果为 。(二)求一个三位数的水仙花数(题目同上) 。将文件命名为 S3_3.cpp。#include void main(void) int a0, a1,a2; /定义变量, a0 代表个位, a1 代表十位, a2 代表百位int b; /b为由a
11、2, a1, a0所组成的百位数for(b=100;b=999;b+) /*将数字b从100到999循环,并将每个数拆开,看看是否 符合水仙花数的条件 */ a2=b/100; /剥出数字 b 的百位数a1= ; /剥出数字 b 的十位数a0=b%10; /剥出数字 b 的个位数if( ) /判断是否满足水仙花数的条件coutbt; /满足条件 , 输出这个数coutendl; 要求:完善程序,编译运行。3.仿照样例程序编写程序 编程计算:有 36 块砖要求 36 个人一次搬完,这 36 个人中有男人、女人和小孩。男人一次 可搬 4 块砖,女人一次可搬 2 块砖,小孩两人搬 1 块砖,问 36
12、 人中有多少男人、女人和小 孩。将文件命名为 S3_4.cpp。运行结果:男人 3,女人 5,小孩 28。4.进阶提高(1)求出 1599中能被 3整除,且至少有一位数字为 5的所有整数。如 15, 51, 513均是满足条件的整数。将文件命名为 S3_5.cpp。运行结果:15 45 51 54 57594 597等共66个数(2)设计一个程序,输入一个整数,求出该整数的各位数字之和。例如,输入 1234(,输出 10。将文件命名为 S3_6.cpp。实验 4 循环语句( 2)1.输入以下程序,并写出程序的输出结果。编程求两个正整数的最小公倍数和最大公约数。将文件命名为 S4_1.cpp。#
13、include void main(void) int a,b; / 定义变量,存放从键盘输入的两个正整数int t, x;coutab; / 输入两个正整数x=a*b; /将输入数据之积保存下来,求最小公倍数时用if(ab) /当a小于b时,交换a, b的值,使a大于b t=a; a=b; b=t;while(t=a%b) /欧几里德算法 a=b;b=t;cout 最大公约数 : bendl;cout最小公倍数:x/bendl; /两数之积除以最大公约数即为最小公倍数编译运行程序,当输入为 24 32(时,输出为 ;当输入为 35 21(时,输出为2.根据程序要求,完善程序后输入源程序,编译
14、连接,并写出运行结果。(1)编写程序,求任意三个数的最大公约数。将文件命名为 S4_2.cpp。#includevoid main(void) int a,b,c; /定义存放输入的三个整数的变量空间coutabc; / 从键盘输入三个整数for(int i=a; ; i-)/假设最大公约数为i,使i从a(或 b或c)到1逐次递减循环if( ) /*当i满足公约数的条件 (能被a,b,c同时整除)时,退出循环,这时的 i 即为最大公约数 */break;coutiendl;/ 输出结果要求:( 1 )完善程序;(2)编译运行程序,当输入 24 48 64(时,输出为 ;当输入 25 24 23
15、(时,输出为 。(2)编写程序,判断从键盘输入的正整数是否为素数。将文件命名 S4_3.cpp。#includevoid main(void) int a; /定义变量couta; /从键盘输入一个正整数for(int i=2;ia;i+) /变量i从2循环到a-1,验证i是否是a的因子if( ) 若i是a的因子,则a不是素数break;if( ) 退出循环,若i不是a的因子,a是素数couta 是素数 n; elsecouta 不是素数 n;要求:(1)完善程序; (2)编译运行程序,当输入 25(时,输出为 ;当输入 23(时,输出为 。(3)本程序判断一个数 a是否为素数,最多循环 a-
16、2次,试根据以下的提示信息(3)优化程序,使得循环次数最少。3.仿照样例程序编写程序(1)编写程序,求任意三个数的最小公倍数。将文件命名为 S4_4.cpp。(2)编写程序,求 100200 范围内的所有素数。将文件命名为 S4_5.cpp。4.进阶提高编程求 1000之内的所有“完数” 。所谓“完数”是指一个数恰好等于它的因子之和。例如,6是完数,因为 6 = 1 + 2+ 3。将文件名命名为 S4_6.cpp。(完数:6, 28, 496)实验 5 循环语句( 3)1.输入以下程序,并写出程序的输出结果。编程计算:2 + 22 + 222 + + 2222222 =?#includevoi
17、d main(void) int t=2; /定义变量,表示通项,初值为 2int s=0; /定义变量,表示通项的累加和,初值为 0for(int i=1;i=7;i+) /设计循环,最后的通项是由 7个 2组成的正整数 s=s+t; /求通项累加和t=t*10+2; /通项迭代,用前一项推导出后一项cout2+22+222+.+2222222=se ndl; 编译运行程序,程序的输出为 。2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。从键盘上输入一个整数 n 的值,按下式求出 y 的值,并输出 n 和 y 的值 (y 用实数表示 ):(n=5 y=153),将文件命名为
18、 S5_2.cpp。#includevoid main(void) float y=1,t=1; /t为通项,初值为1,即1!, y为结果,初值为1int n;coutn; /输入欲求的项数for(int i=2;i=n;i+) t= ; /根据前一项求后一项y= ; /通项累加和/输出结果cout1!+2!+3!+ +n!=yendl;要求:(1)完善程序; (2)编译运行程序,当输入为 6(时,输出为 。3.仿照样例程序编写程序 用迭代公式求,迭代公式为: ,要求初始值,精度为: 。求出当时,对应的值,将文件命名为 S5_3.cpp。 (答案: 0.90856)4.进阶提高编写程序计算下列
19、公式的值: 精确到第 n 项,其中 n=10, x=2.5 分别由键盘输入。将文 件命名为 S5_4.cpp。(答案:0.598472)实验 6 函数( 1)1.输入以下程序,并写出程序的输出结果。计算函数当 x=1 和 x=1.2 时的函数值。将文件命名为 S6_1.cpp。 #includefloat fun(float x) / 函数 fun 求形参 x 的函数值 , 并将结果返回 float y; / 定义函数值y=2*x*x+3*x+5; / 计算函数值return y; / 将结果返回void main(void) float y1, y2; / 定义 x 为 1 和 1.2 时的
20、函数值y仁fun(1.0); /将1.0作为实参调用fun函数,即将1.0赋给形参x,函数值即为所求 的结果y2=fun(1.2); /将1.2作为实参调用fun函数,即将1.2赋给形参x,函数值即为所求 的结果couty1=y1endl;couty2=y2endl; 编译运行后的输出结果是 。2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。(一) 用牛顿迭代法求的一个实根。其中, ,迭代公式为: ,的初值为 0,当时迭代结束。将文件命名为 S6_2.cpp (答案: 1)#include#include f( ) / 求形参 x 的函数 f(x)=x*x+3*x-4 的值
21、float y;y=x*x+3*x-4; return y; df( ) / 求 f(x) 的导数 2x+3 的值 float y;y=2*x+3;return y;void main(void) float x1, x0; / 定义存放新旧迭代值的变量x1=0; / 迭代变量赋初值do x0=x1; / 迭代循环 , 将新的迭代值变成旧的迭代值 , 再去求新的迭代值x1= ; / 用旧的迭代值求新的迭代值while( ); / 不满足结束条件 , 一直迭代循环coutx=x1endl; / 输出结果要求:(1)完善程序;(2)编译运行程序,输出为 。(二)利用二分法求的一个实根。 其中,二分
22、法的迭代公式为: ,其中和的初值从键盘输入, 当时迭代结束。将文件命名为 S6_3.cpp。#include #include float f(float x) / 根据形参 x 求函数 f(x)=x*x+3*x-4 的值 return x*x+3*x-4; void main(void) float x1,x2,x0;do /判断输入的初值是否满足要求 coutx1x2; /输入初值while(f(x1)*f(x2)0); / 当方程的解不在输入的初值范围之内, 重新循环输入初值 do x0=(x1+x2)/2; / 根据初值求方程的新的根 x0if( 0) / 实际的根在 x2 和 x0
23、之间x1=x0; / 将 x0 作为新的 x1else / 实际的根在 x1 和 x0 之间 ; /将 x0 作为新的 x2while(fabs(f(x0)1e-5); / 判断 x0 是否是满足方程的解的精度 coutx0=x0endl; / 输出 x0 要求: (1)完善程序; (2)编译运行程序,当输入 0 2(时,程序的输出是 ;当输入 -5 0( 时,程序的输出是 ;当输入 0 -2( 时,程序的输出是 ,为什么?3.仿照样例程序编写程序 利用弦截法求的一个实根。其中, ,弦截法的迭代公式为: ,其中和的初值从键盘输入,当时 迭代结束。将文件命名为 S6_4.cpp。编写调试运行程序
24、后,当输入 0 2(时,程序的输出是 ;当输入 -5 0(时,程序的输出是 ;当输入 0 -2( 时,程序的输出是 ,为什么?4.进阶提高用递归调用的方法编写 S6_2.cpp,用牛顿迭代法求的一个实根。 其中,迭代公式为:,的初值为0,当时迭代结束。将文件命名为 S6_5.cpp (答案:1)实验 7 函数( 2)1.输入以下程序,并写出程序的输出结果。设计一个程序,求出 100200之间的所有素数。(101 103 107199共21个数)。将文件命名为 S7_1.cpp。#includeint prime(int x) / 函数功能: 判断 x 是否为素数, 若是素数 , 函数返回值为
25、1, 否则 , 函数返回 值为 0 for(int i=2;ix/2;i+) if(x%i=0) /x 能被 2x/2 整除,说明 x 不是素数 return 0;return 1; /执行完循环, x 为素数,返回 1void main(void) for(int i=100;i=200;i+) / 将 i 从 100 到 200 依次循环,求出所有满足素数条件的 i if(prime(i)=1) / 利用 prime() 函数判断循环变量 i 是否为素数 coutit; / 若为素数,输出这个数 编译运行程序,程序的运行结果是 。2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行
26、结果。输入一个整数n (2 nW 10000),输出它的所有的素数因子。用函数 int prime(int num)来判断整数 num 是否为素数,例如,若输入 2310(,则输出: 2, 3, 5, 7, 11。将文件命名为 S7_2.cpp。#includeint prime(int num) / 函数 prime 判断形参 num 是否为素数 , 若为素数 , 函数返回 1, 否则函数 返回 0 for(int i=2;inum/2;i+) if( )return 0;void main(void) int n;coutn; / 从键盘输入一个整数for(int i=2;i=n/2;i+
27、) /将i从2开始循环,判断i是否为n的因子 if( ) / 若 i 为 n 的因子且 i 为素数coutit; / 输出 icoutendl;要求:(1)完善程序;(2)编译运行程序,当输入 2145( ,程序的输出是 。3.仿照样例程序编写程序写一个函数验证哥德巴赫猜想;一个不小于 6 的偶数可以表示为两个素数之和,如 6=3+3,8=3+5, 10=3+7。在主函数中输入一个不小于 6的偶数n,函数中输出以下形式的结果:若输入 34,程序输出为:34=3+3134=5+2934=11+23将文件命名为 S7_3.cpp。编写程序,编译运行,当输入为 56(时,输出为 ;当输入为 122(时,输出为4.进阶提高编写函数int fun( int num),计算整数num的各位上的数字之积,并将计算结果作为函数值 返回。如输入263(,则返回36 (36 = 2X 6X 3)。要求在主函数中可以反复调用函数 fun,连续输入多个正整数并计算结果,直到输入 0 为止。将文件命名为 S7_4.cpp。编写程序,编译运行,当输入为 24( 3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1