《高级语言程序设计》实验指导书Word下载.docx
- 文档编号:20069097
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:39
- 大小:29.83KB
《高级语言程序设计》实验指导书Word下载.docx
《《高级语言程序设计》实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计》实验指导书Word下载.docx(39页珍藏版)》请在冰豆网上搜索。
运行方法同上,最后结果为:
sumis579。
【例3】
输入并运行程序,写出运行结果。
inta,b,c;
scanf("
%d,%d"
&
a,&
b);
c=max(a,b);
max=%d"
c);
intmax(intx,inty)
intz;
if(x>
y)z=x;
elsez=y;
return(z);
这个程序的功能是对于任意输入的两个整数,输出较大的那个数。
所以程序运行之后,光标将停留在用户屏幕上,等待用户输入两个整数,比如输入“3,5”,回车,在用户屏幕上就会输出“max=5”。
[实验作业]
1.输入并运行例题中程序,熟悉调试C程序的的方法与步骤。
2.写出一个C程序的构成。
3.参照例题,编写一个C程序,输出以下信息:
****************************
Hello,World!
实验二基本语句
1.理解C语言程序的顺序结构
2.掌握常用的C语言语句,熟练应用赋值、输入、输出语句。
3.进一步熟悉C程序的编辑、编译、连接和运行的过程。
【例1】按格式要求输入/输出数据
inta,b;
flostx,y;
charc1,c2;
a=%d,b=%d"
%f,%e"
x,&
y);
%c%c"
c1,&
c2);
a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n"
a,b,x,y,c1,c2);
运行该程序,必须按如下方式在键盘上输入数据
a=3,b=7↙
8.5,71.82↙
aA↙
请同学们写出输出结果
【例2】输入三角形三边长,求三角形面积。
math.h"
floata,b,c,s,area;
%f,%f,%f"
b,&
c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
area=%f"
area);
【例3】已知圆半径,圆柱高,求圆周长,圆柱体积。
floatr,h,l,v,pi;
pi=3.1415926;
%f,%f"
r,&
h);
l=2*pi*r;
v=pi*r*r*h;
圆周长为:
%6.2f\n"
l);
%圆柱体积为:
6.2f"
v);
【例4】输入一个摄氏温度,要求输出华氏温度。
公式为f=5/9*c+32.
floatc,f;
%f"
f=5.0/9*c+32;
%5.2f\n"
f);
【实验作业】
1.已知圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
2.输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9*(f-32).
实验三数据类型及其运算
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
【实验学时】4学时
【例1】输入并运行下程序,写出运行结果。
c1=97;
c2=98;
c1,c2);
在此基础上
1)加一个printf语句,并运行之。
printf(“%d,%d”,c1,c2);
2)再将第二行改为:
intc1,c2;
再使之运行。
3)再将第三行改为:
c1=300;
c2=400;
再使之运行,分析其运行结果。
在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。
【例2】分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。
charc1='
a'
c2='
b'
c3='
c'
c4='
\101'
c5='
\116'
;
a%cb%c\tabc\n"
c1,c2,c3);
\t\b%c%c"
c4,c5);
在该程序中,主要考查对转义字符的掌握情况。
分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
%d,%d,%d,%d"
i,j,m,n);
分别作以下改动之后,先分析再运行:
1)将第四行改为:
m=i++;
n=++j;
2)程序改为:
inti,j;
i=8;
j=10;
printf(“%d,%d”,i++,j++);
3)在2)的基础上,将printf语句改为:
printf(“%d,%d”,++i,++j);
4)再将printf语句改为:
printf(“%d,%d,%d,%d”,i,j,i++,j++);
5)程序改为:
inti,j,m=0,n=0;
m+=i++;
n-=--j;
printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);
此程序主要考查自加、自减运算符以及复合运算符的用法。
【实验作业】
1.要讲“China”译成密码,密码规律是:
用原来的字母后面第5个字母代替原来的字母。
例如,字母“A”后面第5个是“F”,用“F”代替“A”。
因此,“China”应译为“Hmnsf”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使其分别变为’H’、’m’、’n’、’s’、’f’,并输出。
2.求下面算术表达式的值。
(1)x+a%3*(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
先自己分析,再试着用程序求解,看得到的结果是否一致。
3.写出下面表达式运算后a的值,设原来a=10。
设a和n已定义成整型变量。
(1)a+=a
(2)a-=2
(3)a*=2+3
(4)a/=a+a
(5)a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
实验四选择结构程序设计
1.了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
2.学会正确使用逻辑运算符和逻辑表达式;
3.熟练掌握if语句和switch语句。
【例1】已知三个数a,b,c,找出最大值放于max中。
分析:
由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。
第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中if——else形式。
第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。
Max即为a,b,c中的最大值。
#include"
inta,b,c,max;
/*定义四个整型变量*/
a=%d,b=%d,c=%d"
if(a>
=b)
max=a;
/*a>
=b*/
else
max=b;
/*a<
b*/
if(c>
max)
max=c;
/*c是最大值*/
max);
若输入下列数据,分析程序的执行顺序并写出运行结果
(1)a=1,b=2,c=3
(2)a=2,b=1,c=3
(3)a=3,b=2,c=1
(4)a=3,b=1,c=2
(5)a=3,b=3,c=2
(6)a=2,b=1,c=2
【例2】输入某学生的成绩,经处理后给出学生的等级,等级分类如下:
90分以上(包括90):
A
80至90分(包括80):
B
70至80分(包括70):
C
60至70分(包括60):
D
60分以下:
E
方法一:
(用if嵌套`)
由题意知如果某学生成绩在90分以上,等级为A;
否则,如果成绩大于80分,等级为B;
否则,如果成绩大于70分,等级为C;
否则,如果成绩大于60分为D;
否则,如果成绩小于60分,等级为E;
但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。
因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。
intscore;
chargrade;
\npleaseinputastudentscore:
"
score);
if(score>
100||score<
0)
\ninputerror!
=90)
grade='
A'
=80)
B'
=70)
C'
=60)
D'
elsegrade='
E'
\nthestudentgrade:
%c"
grade);
输入测试数据,调试程序。
测试数据要覆盖所有路径,注意临界值,例如此题中得100分,60分,0分以及小于0和大于100的数据。
方法二:
用switch语句
switch语句是用于处理多分支的语句。
注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。
所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。
则由此可得把score除十取整,化为相应的常数。
intg,s;
charch;
\ninputastudentgrade:
%d"
g);
s=g/10;
if(s<
0||s>
10)
switch(s)
case10:
case9:
ch='
break;
case8:
case7:
case6:
default:
\nthestudentscort:
ch);
输入测试数据,同方法一一样调试程序并写出结果。
【例3】有一函数:
y=
●x(x<
1)
●2x-1(1=<
x<
●3x-1(1x>
=10)
用scanf函数输入x的值(分别为x<
1,1~10,>
=10三种情况),求y值。
y是一个分段表达式。
要根据x的不同区间来计算y的值。
所以应使用If语句。
intx,y;
pleaseinputx:
x);
if(x<
y=x;
y=%d\n"
y);
elseif(x<
y=2*x-1;
y=3*x-11;
}elseif(x<
1.c语言如何表示“真”与“假”?
系统如何判断一个量的“真”与“假”?
2.写出下面各逻辑表达式的值。
设a=3,b=4,c=5
(1)a+b>
c&
&
b==c
(2)a||b+c&
b-c
(3)!
(a>
b)&
!
c||1
(4)!
(x=a)&
(y=b)&
(5)!
(a+b)+c-1&
b+c/2
3.有3个整数a、b、c,由键盘输入,输出其中最大的数。
4.给出一百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80~89为B,70~79分为C,60~69分为D,60分以下为E。
5.给一个不多于5位的正整数,要求:
a.求出它是几位数;
b.分别打出每一位数字;
c.按逆序打出各位数字,例如原数为321,应输出123。
7.输入4个整数,要求按由小到大的顺序输出。
实验五循环结构程序设计
【实验目的与要求】
熟练掌握while、do—while和for三种循环语句的应用。
【例1】求5!
intn,t;
n=1;
t=1;
while(t<
=5)
n=n*t;
t=t+1;
n);
【例2】求和s=1!
+2!
+3!
intn,s=0,t=1;
for(n=1;
n<
=3;
n++)
t=t*n;
s=s+t;
s);
【例3】求和s=1!
+5!
ints=0,t,i,j;
for(i=1;
i<
i++)
for(j=1;
j<
=2*i-1;
j++)
t=t*j;
【例4】求和s=3+33+333
ints=0,t=3,i;
t=10*t+3;
【例5】有一数列:
2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。
intn,t,;
floata=2,b=1,s=0;
=10;
s=s+a/b;
t=a;
a=a+b;
b=t;
【例6】打印500以内的“水仙花数”。
“水仙花数”是一个三位数,其各位数立方和等于该数本身。
inti,j,k,n;
for(n=100;
=500;
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
%d"
【例7】一个数如果恰好等于它的因子之和,这个数就称为完数。
求100之内的所有完数。
intn,s,j;
=100;
s=0;
n;
if(n%j==0)
s=s+j;
if(s==n)
【典型示例】
【例1】计算两个数的最大公约数;
分析:
首先,随机输入两个数m,n(默认m>
n);
其次,算法:
使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。
intm,n,k,result;
Entertwonumbers:
m,&
n);
/*限定两个正整数*/
if(m>
0&
n>
do
k=n%m;
if(k==0)
result=m;
n=m;
m=k;
while(k>
0);
/*循环取余求出最大公因子*/
Thegreatestcommondivistoris:
%d\n"
result);
elseprintf("
Nonpositivevaluesnotallowed\n"
【例2】用牛顿迭代求方程2x3-4x2+3x-6=0在1.0附近的根。
#include"
floatx,x0,f,f1;
x=1.0;
x0=x;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x=x0-f/f1;
while(fabs(x-x0)>
=1e-5);
%6.2f"
x);
【例3】打印下列图案
*
***
*****
*******
inti,j;
=4;
=4-i;
"
*"
【例4】判断m是否是素数。
程序:
#include<
math.h>
intm,i,k;
m);
k=sqrt(m+1);
for(i=2;
=k;
if(m%i==0)
if(i>
=k+1)
%disaprimenumber\n"
m);
%disnotaprimenumber\n"
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
2.求Sn=a+aa+aaa+…+aa…a之值,其中a是一个数字。
例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
3.求和1!
+2!
+3!
+4!
+…20!
4.打印100-999之间所有的“水仙花数”。
5.一个数如果恰好等于它的因子之和,这个数就称为完数。
求1000之内的所有完数。
6.有一数列:
2/1,3/2,5/3,8/5,…求出这个数列的前20项之和。
7.用迭代法求x=√a。
求平方根的迭公式为
xn+1=1/2(xn+a/xn)
要求前后两次求出的x的差的绝对值小于10-5
8.用牛顿迭代求方程2x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计 高级 语言程序设计 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)