C程序设计实用上机实验文本.docx

上传人:b****7 文档编号:25459758 上传时间:2023-06-09 格式:DOCX 页数:49 大小:50.49KB
下载 相关 举报
C程序设计实用上机实验文本.docx_第1页
第1页 / 共49页
C程序设计实用上机实验文本.docx_第2页
第2页 / 共49页
C程序设计实用上机实验文本.docx_第3页
第3页 / 共49页
C程序设计实用上机实验文本.docx_第4页
第4页 / 共49页
C程序设计实用上机实验文本.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

C程序设计实用上机实验文本.docx

《C程序设计实用上机实验文本.docx》由会员分享,可在线阅读,更多相关《C程序设计实用上机实验文本.docx(49页珍藏版)》请在冰豆网上搜索。

C程序设计实用上机实验文本.docx

C程序设计实用上机实验文本

实验1简单的输入输出

1.输入以下程序,编译运行后根据要求从键盘输入数据,并写出程序的输出结果。

文件名:

S1_1.cpp

注意:

"//"后面是程序注释,不必输入。

下同。

#includevoidmain(void)

{inta,b,sum;//定义放加数、被加数、和的变量空间

cout<<"请输入加数与被加数\n";//输出提示信息,显示在屏幕上,便于用户操作

cin>>a>>b;//从键盘输入加数与被加数的具体数值,输入时两个整数用空格或回车键

隔开

sum=a+b;//计算加数与被加数的和,将相加结果赋值给和所在的变量空间cout<<"sum="<

}

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

输入一个华氏温度,要求输出摄氏温度,公式为c=5/9(F-32),输入输出要有说明,便于操

作。

将文件命名为S1_2.cpp。

程序如下:

#include

voidmain()

{doublef,c;//定义放华氏温度及摄氏温度的两个变量空间

cout<<"请输入华氏温度:

";//输出提示信息,便于操作cin>>f;//从键盘输入华氏温度c=;//计算摄氏温度

cout<<"摄氏温度="<

}

要求:

(1)完善程序;

(2)将完善后的程序输入运行。

运行时从键盘输入华氏温度为50(时,输出的摄氏温度为

10,输入的华氏温度为100(时,输出的摄氏温度为37.7778。

3.仿照样例程序编写程序编写程序,计算圆面积,半径从键盘输入,输入数据前要有提示信息,便于操作。

提示:

(1)编程步骤:

定义变量,输入条件,设计算法,输出结果。

(2)圆面积公式:

,其中,,在程序中是个常数。

4.进阶提高

编写程序,已知三角形的三边a,b,c,求三角形的周长和面积。

要求从键盘输入三角形的三

边,输入前有提示信息,便于操作。

三角形的周长:

三角形的面积:

实验2条件和开关语句

1.输入以下程序,编译运行后根据要求从键盘输入数据,并写出程序的输出结果。

编写程序,从键盘输入三个数,判断其能否构成三角形的三边。

文件名:

S2_1.cpp#include

voidmain(void)

{floata,b,c;//定义变量,存放三角形的三边数据cout<<"inputabc\n";//输入提示信息cin>>a>>b>>c;//从键盘依次输入三边的值if((a+b

cout<<"Triangle\n";//满足三边构成条件,输出确认信息

}

将该源文件编译运行后,若输入345(,输出结果是;若输入125(,

输出结果是。

结合程序流程分析原因。

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

(一)编写程序,从键盘输入一个年份,判断该年份是否为闰年。

(2000年是闰年,2200不

是闰年)。

将文件命名为S2_2.cpp。

#include

voidmain(void)

{intyear;//定义变量,存放将输入的年份cout<<"Inputyear:

";//输出提示信息cin>>year;//输入欲判断的年份if()//判断该年份是否为闰年的条件

cout<

cout<

}

要求:

(1)完善程序;

(2)将该源文件编译运行后,若输入2000(,输出结果是;若输入2200(,

输出结果是。

结合程序流程分析原因。

(二)编写一个简易的计算器,能根据输入的具有两个操作数的表达式计算加、减、乘法。

将文件命名为S2_3.cpp。

#include

voidmain()

{floata1,a2;//定义两个操作数charoper;//定义运算符floatresult;//定义变量,存放结果intflag=0;//?

cout<<"请输入简单的运算式:

\n";//输出提示信息cin>>a1>>oper>>a2;//从键盘键入表达式,如5+3(4.5*7(等switch(oper)//利用开关语句结构判断进行何种运算

{case'+':

//加法result=a1+a2;break;case'-':

//减法

result=a1-a2;break;case'*':

//乘法

default:

cout<<"输入错误的运算符!

\n";

flag=1;

}

if(flag==0)cout<

}

要求:

(1)完善程序;

(2)将该源文件编译运行后,若输入4.5+7.2(,输出结果是;若输入4*5(,

输出结果是;若输入8/2(,输出结果是。

结合程序流程分析原

因。

(3)整型变量flag在程序中起什么作用?

3.仿照样例程序编写程序设计一个函数,求出下列一元二次方程的实根:

,系数a,b,c的值从键盘上输入,求方程根的计算公式为:

,当小于0时,输出“无实根!

”;否则输出x的两个实根。

将文件命名为S2_4.cpp

4.进阶提高

将文件S2_3.cpp中所设计的简易计算器进一步完善,使之可以进行除法操作。

将文件命名为S2_5.cpp

实验3循环语句

(1)

1.输入以下程序,并写出程序的输出结果。

鸡兔共有30只,脚共有90只,问鸡兔各有多少?

文件名:

S3_1.cpp

#include

voidmain()

{intx,y;//定义变量,x代表鸡的数目,y代表兔子的数目

for(x=1;x<30;x++)//鸡的数目从1〜30皆有可能,所以程序将所有可能的解循环验证一遍

for(y=1;y<30;y++)/*同样兔子的数目从1〜30皆有可能,所以程序将所有可能的解循环验证一遍*/

if(2*x+4*y==90&&x+y==30)//在所有可能的解中将满足给定条件的解输

{cout<<"鸡有:

"<

"<

}该程序运行后的结果是。

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

(一)设计一个程序,输出所有的水仙花数。

所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身。

例如:

,因此153是一个水仙花数。

将文件命名为S3_2.cpp。

#include

voidmain()

{inta0,a1,a2;//定义变量,a0代表个位,a1代表十位,a2代表百位

intb;//b为由a2,a1,a0所组成的百位数

for(a2=1;a2<=9;a2++)//百位的位值从1〜9皆有可能for(a1=0;a1<=9;a1++)//十位的位值从0〜9皆有可能for(a0=0;a<=9;a++)〃个位的位值从0〜9皆有可能{b=;//由每次循环的百、十、个位组成一个整数

if(b==)//在所有可能的解中将满足给定条件的解输出

cout<

}

}要求:

(1)完善程序;

(2)将该源文件编译运行后,结果为。

(二)求一个三位数的水仙花数(题目同上)。

将文件命名为S3_3.cpp。

#includevoidmain(void)

{inta0,a1,a2;//定义变量,a0代表个位,a1代表十位,a2代表百位

intb;//b为由a2,a1,a0所组成的百位数

for(b=100;b<=999;b++)/*将数字b从100到999循环,并将每个数拆开,看看是否符合水仙花数的条件*/

{a2=b/100;//剥出数字b的百位数

a1=;//剥出数字b的十位数

a0=b%10;//剥出数字b的个位数

if()//判断是否满足水仙花数的条件

cout<

}

cout<

}要求:

完善程序,编译运行。

3.仿照样例程序编写程序编程计算:

有36块砖要求36个人一次搬完,这36个人中有男人、女人和小孩。

男人一次可搬4块砖,女人一次可搬2块砖,小孩两人搬1块砖,问36人中有多少男人、女人和小孩。

将文件命名为S3_4.cpp。

运行结果:

男人3,女人5,小孩28。

4.进阶提高

(1)求出1〜599中能被3整除,且至少有一位数字为5的所有整数。

如15,51,513均

是满足条件的整数。

将文件命名为S3_5.cpp。

运行结果:

1545515457……594597等共66个数

(2)设计一个程序,输入一个整数,求出该整数的各位数字之和。

例如,输入1234(,输

出10。

将文件命名为S3_6.cpp。

实验4循环语句

(2)

1.输入以下程序,并写出程序的输出结果。

编程求两个正整数的最小公倍数和最大公约数。

将文件命名为S4_1.cpp。

#includevoidmain(void)

{inta,b;//定义变量,存放从键盘输入的两个正整数

intt,x;

cout<<"请输入两个正整数:

";//输出提示信息

cin>>a>>b;//输入两个正整数

x=a*b;//将输入数据之积保存下来,求最小公倍数时用

if(a

{t=a;a=b;b=t;}

while(t=a%b)//欧几里德算法

{a=b;

b=t;

}

cout<<"最大公约数:

"<

cout<<"最小公倍数:

"<

}

编译运行程序,当输入为2432(时,输出为;当输入为3521(时,输出为

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

(1)编写程序,求任意三个数的最大公约数。

将文件命名为S4_2.cpp。

#include

voidmain(void)

{inta,b,c;//定义存放输入的三个整数的变量空间

cout<<"Inputthreenumber:

";//提示信息

cin>>a>>b>>c;//从键盘输入三个整数

for(inti=a;;i--)//假设最大公约数为i,使i从a(或b或c)到1逐次递减循环

if()/*当i满足公约数的条件(能被a,b,c同时整除)时,退出

循环,这时的i即为最大公约数*/

break;

cout<

}

要求:

(1)完善程序;

(2)编译运行程序,当输入244864(时,输出为;当输入252423(时,

输出为。

(2)编写程序,判断从键盘输入的正整数是否为素数。

将文件命名S4_3.cpp。

#include

voidmain(void)

{inta;//定义变量

cout<<"请输入一个正整数:

";

cin>>a;//从键盘输入一个正整数

for(inti=2;i

if()〃若i是a的因子,则a不是素数

break;

if()〃退出循环,若i不是a的因子,a是素数

cout<

cout<

}

要求:

(1)完善程序;

(2)编译运行程序,当输入25(时,输出为;当输入23(时,输出为。

(3)本程序判断一个数a是否为素数,最多循环a-2次,试根据以下的提示信息(3)优化

程序,使得循环次数最少。

3.仿照样例程序编写程序

(1)编写程序,求任意三个数的最小公倍数。

将文件命名为S4_4.cpp。

(2)编写程序,求100~200范围内的所有素数。

将文件命名为S4_5.cpp。

4.进阶提高

编程求1000之内的所有“完数”。

所谓“完数”是指一个数恰好等于它的因子之和。

例如,

6是完数,因为6=1+2+3。

将文件名命名为S4_6.cpp。

(完数:

6,28,496)

实验5循环语句(3)

1.输入以下程序,并写出程序的输出结果。

编程计算:

2+22+222+••…+2222222=?

#include

voidmain(void)

{intt=2;//定义变量,表示通项,初值为2

ints=0;//定义变量,表示通项的累加和,初值为0

for(inti=1;i<=7;i++)//设计循环,最后的通项是由7个2组成的正整数

{s=s+t;//求通项累加和

t=t*10+2;//通项迭代,用前一项推导出后一项

}

cout<<"2+22+222+...+2222222="<

}编译运行程序,程序的输出为。

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

从键盘上输入一个整数n的值,按下式求出y的值,并输出n和y的值(y用实数表示):

(n=5y=153),将文件命名为S5_2.cpp。

#include

voidmain(void)

{floaty=1,t=1;//t为通项,初值为1,即1!

y为结果,初值为1

intn;

cout<<"Inputn:

";//输出提示信息

cin>>n;//输入欲求的项数

for(inti=2;i<=n;i++)

{t=;//根据前一项求后一项

y=;//通项累加和

 

//输出结果

cout<<"1!

+2!

+3!

++"<

="<

}

要求:

(1)完善程序;

(2)编译运行程序,当输入为6(时,输出为。

3.仿照样例程序编写程序用迭代公式求,迭代公式为:

,要求初始值,精度为:

求出当时,对应的值,将文件命名为S5_3.cpp。

(答案:

0.90856)

4.进阶提高

编写程序计算下列公式的值:

精确到第n项,其中n=10,x=2.5分别由键盘输入。

将文件命名为S5_4.cpp。

(答案:

0.598472)

实验6函数

(1)

1.输入以下程序,并写出程序的输出结果。

计算函数当x=1和x=1.2时的函数值。

将文件命名为S6_1.cpp。

#include

floatfun(floatx)//函数fun求形参x的函数值,并将结果返回

{floaty;//定义函数值

y=2*x*x+3*x+5;//计算函数值

returny;//将结果返回

}

voidmain(void)

{floaty1,y2;//定义x为1和1.2时的函数值

y仁fun(1.0);//将1.0作为实参调用fun函数,即将1.0赋给形参x,函数值即为所求的结果

y2=fun(1.2);//将1.2作为实参调用fun函数,即将1.2赋给形参x,函数值即为所求的结果

cout<<"y1="<

cout<<"y2="<

}编译运行后的输出结果是。

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

(一)用牛顿迭代法求的一个实根。

其中,,迭代公式为:

,的初值为0,当时迭代结束。

将文件命名为S6_2.cpp(答案:

1)

#include

#include

f()//求形参x的函数f(x)=x*x+3*x-4的值

{floaty;

y=x*x+3*x-4;returny;

}

df()//求f(x)的导数2x+3的值

{floaty;

y=2*x+3;

returny;

}

voidmain(void)

{floatx1,x0;//定义存放新旧迭代值的变量

x1=0;//迭代变量赋初值

do

{x0=x1;//迭代循环,将新的迭代值变成旧的迭代值,再去求新的迭代值

x1=;//用旧的迭代值求新的迭代值

}while();//不满足结束条件,一直迭代循环

cout<<"x="<

}

要求:

(1)完善程序;

(2)编译运行程序,输出为。

(二)利用二分法求的一个实根。

其中,,二分法的迭代公式为:

,其中和的初值从键盘输入,当时迭代结束。

将文件命名为S6_3.cpp。

#include#includefloatf(floatx)//根据形参x求函数f(x)=x*x+3*x-4的值

{returnx*x+3*x-4;}

voidmain(void)

{floatx1,x2,x0;

do//判断输入的初值是否满足要求

{cout<<"请输入初值x1和x2:

";cin>>x1>>x2;//输入初值

}while((f(x1)*f(x2))>0);//当方程的解不在输入的初值范围之内,重新循环输入初值do

{x0=(x1+x2)/2;//根据初值求方程的新的根x0

if(>0)//实际的根在x2和x0之间

x1=x0;//将x0作为新的x1

else//实际的根在x1和x0之间;//将x0作为新的x2

}while(fabs(f(x0))>1e-5);//判断x0是否是满足方程的解的精度cout<<"x0="<

}要求:

(1)完善程序;

(2)编译运行程序,当输入02(时,程序的输出是;当输入-50(时,程序

的输出是;当输入0-2(时,程序的输出是,为什么?

3.仿照样例程序编写程序利用弦截法求的一个实根。

其中,,弦截法的迭代公式为:

,其中和的初值从键盘输入,当时迭代结束。

将文件命名为S6_4.cpp。

编写调试运行程序后,当输入02(时,程序的输出是;当输入-50(时,程序

的输出是;当输入0-2(时,程序的输出是,为什么?

4.进阶提高

用递归调用的方法编写S6_2.cpp,用牛顿迭代法求的一个实根。

其中,,迭代公式为:

,的初

值为0,当时迭代结束。

将文件命名为S6_5.cpp(答案:

1)

实验7函数

(2)

1.输入以下程序,并写出程序的输出结果。

设计一个程序,求出100〜200之间的所有素数。

(101103107……199共21个数)。

将文件命名为S7_1.cpp。

#include

intprime(intx)//函数功能:

判断x是否为素数,若是素数,函数返回值为1,否则,函数返回值为0

{for(inti=2;i

return1;//执行完循环,x为素数,返回1

}

voidmain(void)

{for(inti=100;i<=200;i++)//将i从100到200依次循环,求出所有满足素数条件的i{if(prime(i)==1)//利用prime()函数判断循环变量i是否为素数cout<

}

}编译运行程序,程序的运行结果是。

2.根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

输入一个整数n(2

用函数intprime(intnum)来判

断整数num是否为素数,例如,若输入2310(,则输出:

2,3,5,7,11。

将文件命名为S7_2.cpp。

#include

intprime(intnum)//函数prime判断形参num是否为素数,若为素数,函数返回1,否则函数返回0

{for(inti=2;i

return0;

}

voidmain(void)

{intn;

cout<<"输入一个整数n:

";cin>>n;//从键盘输入一个整数

for(inti=2;i<=n/2;i++)//将i从2开始循环,判断i是否为n的因子{if()//若i为n的因子且i为素数

cout<

}

cout<

}

要求:

(1)完善程序;

(2)编译运行程序,当输入2145(,程序的输出是。

3.仿照样例程序编写程序

写一个函数验证哥德巴赫猜想;一个不小于6的偶数可以表示为两个素数之和,如6=3+3,

8=3+5,10=3+7……。

在主函数中输入一个不小于6的偶数n,函数中输出以下形式的结果:

若输入34,

程序输出为:

34=3+31

34=5+29

34=11+23

将文件命名为S7_3.cpp。

编写程序,编译运行,当输入为56(时,输出为;当输入为122(时,输出为

4.进阶提高

编写函数intfun(intnum),计算整数num的各位上的数字之积,并将计算结果作为函数值返回。

如输入263(,则返回36(36=2X6X3)。

要求在主函数中可以反复调用函数fun,连

续输入多个正整数并计算结果,直到输入0为止。

将文件命名为S7_4.cpp。

编写程序,编译运行,当输入为24(3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1