高级语言程序设计实验.docx
《高级语言程序设计实验.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计实验.docx(21页珍藏版)》请在冰豆网上搜索。
高级语言程序设计实验
陕西理工大学
《高级语言程序设计(C)》
实验报告
院系:
班级:
学号:
姓名:
实验一:
C开发环境与顺序结构程序设计
专业班级
学号
姓名
实验学时
4
实验类型
设计
实验地点
实验时间
指导老师
周涛
成绩
教师批语
年月日
1.实验目的:
(1)了解集成开发环境VC++6.0的使用方法,理解相关命令的含义,掌握编辑、编译、连接以及运行调试的方法,掌握程序的基本结构,掌握输入输出的方式。
(2)掌握程序设计的基本要素中的数据类型、变量、运算符以及表达式的运用。
(3)学会正确使用逻辑运算符和逻辑表达式以及关系运算符与关系表达式,掌握在程序设计中灵活使用顺序结构。
2.实验环境:
(1)硬件环境
CPU:
InterPentium(R)4CPU3.00GHz以上
内存:
2GByte
硬盘:
500GByte
(2)软件环境
操作系统:
MicrosoftWindows7
编译系统:
MicrosoftVisualC++6.0
3.实验步骤:
按如图所示流程进行实验内容的调试。
(1)在XP操作系统中,启动VC++6.0编译环境;
(2)在VC++6.0编译界面输入C源程序;
(3)选择编译、组建、执行命令进行编译、链接和运行,并记录实验数据;
(4)按以上方法依次输入其他源程序并调试、运行和记录实验数据。
4.实验内容:
4.1输入并运行下列程序,查看程序运行的结果。
#include
voidmain()
{
printf(“**********\n”);
printf(“ProgramingincALabrtryMaual\n”);
printf(“****\n”);
printf(“*\n”);
}
4.2查看程序运行的结果
#include
voidmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j--;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
}
4.3找出下列程序中的错误,改正后写出程序运行结果.
#include
voidmain()
{
Intx,y=z=5,aver;
x=7;
AVER=(x+y+z)/3
printf(“AVER=%d\n”,aver);
}
4.4输入参考程序。
在下划线处分别填入不同的变量定义、表达式、输出格式控制符号。
#include
voidmain()
{
inta,b,x;//数据类型定义
a=5;
b=10;
x=a+10;//表达式
printf(“%d”,x);//格式控制符
}
该程序的执行结果为:
15
当数据类型说明符为int时,对应的格式控制符为%d;
当数据类型说明符为long时,对应的格式控制符为%l;;
当数据类型说明符为float时,对应的格式控制符为%f;
当数据类型说明符为double时,对应的格式控制符为%lf;
当数据类型说明符为char时,对应的格式控制符为%c;
仅当表达式更改为1/2*a*b时,程序执行结果为0;
仅当表达式更改为0.5*a*b时,程序执行结果为25
(2)求从键盘上输入的两个整数之和,完成程序并将结果输出。
源程序:
#include
voidmain()
{
intx,y,z;
scanf("%d%d",&x,&y);
z=x+y;
printf("%d\n",z);
}
输入:
1
2
输出:
3
4.5将整型变量a、b的值进行交换。
方法一:
借助中间变量t
#include
voidmain()
{
inta=1,b=2,t;
t=a;
a=b;
b=t;
printf("%d\n%d\n",a,b);
}
方法二:
不借助中间变量
#include
voidmain()
{
inta=1,b=2;
a=b-a;
b=b-a;
a=b+a;
printf("%d\n%d\n",a,b);
}
4.6编写程序输入华氏温度f,求摄氏温度c。
华氏转摄氏的公式为:
c=5/9(f-32)
输入输出都要有文字提示和说明,输出保留2位小数。
#include
voidmain()
{
floatf,c;
printf("输入华氏温度=");
scanf("%f",&f);
c=(f-32)*5/9;
printf("摄氏温度=%.2f\n",c);
}
4.7编程求
。
要求a和x从键盘输入。
当a=6.4,x=3.4时,求y的值。
#include
#include
voidmain()
{
floata,x,y;
scanf("%f%f",&a,&x);
y=sin(sqrt(a*x))+log(a+x);
printf("%f\n",y);
}
4.8从键盘上任意输入一个三位整数,按逆序输出。
例如输入456,输出654。
提示:
456%10=6456/10%10=5456/10/10=4
6*102+5*101+4*100=654
#include
main()
{
intn;
inta,b,c;
intnum;
printf("请输入一个三位整数n\n");
scanf("%d",&n);
c=n/100;
b=(n-c*100)/10;
a=n%10;
num=a*100+b*10+c;
printf("num=%d\n",num);
}
5.实验总结
实验二:
分支结构与循环结构程序设计
专业班级
学号
姓名
实验学时
6
实验类型
设计型
实验地点
实验时间
指导老师
周涛
成绩
教师批语
年月日
1.实验目的:
了解C语言表示逻辑量的方法;(0为“假”,非0为“真”)学会正确使用关系表达式和逻辑表达式。
⑵熟练掌握if语句、switch语句、while语句、do-while语句和for语句的使用方法。
⑶结合程序掌握一些简单的算法。
掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
学习调试程序
2.实验环境:
操作系统:
Windows7编程软件:
VisualC++6.0
3.实验内容:
(1)使用if语句或者switch语句编程求解以下分段函数:
y=
。
#include
#include
main()
{
floatx,y;
scanf("%f",&x);
if(x<1)
y=2*x-1;
elseif(x>=1&&x<10)
y=sqrt(x+10);
else
y=2*x+1;
printf("%f\n",y);
}
(2)使用if语句或者switch语句编程实现以下功能:
从键盘任意输入0----100之间的整数作为学生的成绩,要求根据以下的条件判断并输出相应成绩的等级。
大于等于90,小于等于100:
优秀
大于等于70,小于等于89:
良好
大于等于60,小于等于69:
及格
小于60:
不及格
#include
main()
{
intx;
scanf("%d",&x);
switch(x/10)
{
case10:
printf("优秀\n");break;
case9:
printf("优秀\n");break;
case8:
printf("良好\n");break;
case7:
printf("良好\n");break;
case6:
printf("及格\n");break;
default:
printf("不及格\n");
}
}
(3)n的值从键盘输入,要求分别用三种循环语句实现以下功能:
1+2+3+4+……+n
1、用while语句实现。
#include
main()
{
inti=1,s=0,n;
scanf("%d",&n);
while(i<=n)
{
s=s+i;
i=i++;
}
printf("%d\n",s);
}
2、用do----while语句实现
#include
main()
{
inti=1,s=0,n;
scanf("%d",&n);
do
{
s=s+i;
i=i++;
}
while(i<=n);
printf("%d\n",s);
}
3、用for语句实现。
#include
main()
{
inti=1,s=0,n;
scanf("%d",&n);
for(;i<=n;i++)
s=s+i;
printf("%d\n",s);
}
(4)n的值从键盘输入,要求用循环语句实现以下功能:
1!
+2!
+………+n!
#include
voidmain()
{intn,i;
floats=0,t=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{t*=i;s+=t;}
printf("1+2!
+3!
...+n!
=%f\n",s);
}
(5)程序填空,求100以内的整数中最大可被13整除的数是哪一个?
#include
intmain()
{
inti;
for(i=100;i>=0;i--)
{if(i%13==0)
break;
}
printf("%d\n",i);
return0;
}
(6)输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
intmain()
{
intp,r,n,m,temp;
printf("Entern,m:
");
scanf("%d,%d",&n,&m);
if(m{
temp=m;m=n;n=temp;
}
p=m*n;
r=m%n;
while(r!
=0)
{
m=n;
n=r;
r=m%n;
}
printf("Thegreatestcommondivisor:
%d\n",n);
printf("Thelowestcommonmultiple:
%d\n",p/n);
return0;
}
提示:
if语句的功能是将两数中大的那个放在m中,保证m>n,然后再求m对n的余数r,通过while语句循环,直到余数r为零。
(7)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
#include
intmain()
{
charc;
intletters=0,space=0,digit=0,other=0;
printf("Enterlinecharacter:
\n");
while((c=getchar())!
='\n')
{
if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)letters++;
elseif(“c==”)space++;
elseif(c>=’0’&&c<=’9’)digit++;
elseother++;
}
printf("letters:
%d\nspace:
%d\ndigit:
%d\nother:
%d\n",letters,space,digit,other);
return0;
}
(8)编写程序输出如下图形,请填空。
#include"stdio.h"
#defines''
intmain()
{
intn,i,j;
printf("Entern:
");
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{for(j=1;j<=10;j++)
putchar(s);
for(j=1;j<=n-i;j++)
putchar(s);
for(j=1;j<=2*i-1;j++)
putchar(‘*’);
printf("\n");
}
for(i=1;i<=n-1;i++)
{for(j=1;j<=10;j++)
putchar(s);
for(j=1;j<=i;j++)
putchar(s);
for(j=1;j<=2*(n-i)-1;j++)
putchar('*');
printf("\n");
}
}
记录运行结果:
4.实验总结
实验三数组及数组的应用
专业班级
学号
姓名
实验学时
2
实验类型
综合设计型
实验地点
实验时间
指导老师
周涛
成绩
教师批语
年月日
1.实验目的:
1、掌握一维数组和二维数组的定义、数组元素的引用和数组的输入输出方法。
2、重点掌握一维数组的应用(如排序等)。
3、了解与数组有关的数值计算方法(如矩阵运算)。
2.实验环境:
操作系统:
Windows7
编程软件:
VisualC++6.0
3.实验内容:
(1)以下程序以每行输出8个数据的形式输出a数组。
#include
voidmain()
{inta[50],i;
for(i=0;i<50;i++)
scanf(“%d”,);
for(i=0;i<50;i++)
{if();
printf(“%3d”,a[i]);
}
printf(“\n”);}
输出结果:
(2)利用数组实现以下功能:
从键盘任意输入若干个整数(不超过100个),统计并输出这些整数的平均值,以及高于此平均值的整数个数。
程序:
(3)对于二维数组
,求1)所有元素中最大、最小值。
2)各行元素之和。
3)主对角线元素之和。
。
程序:
4.实验总结:
实验四:
函数与指针
专业班级
学号
姓名
实验学时
4
实验类型
设计型
实验地点
实验时间
指导老师
周涛
成绩
教师批语
年月日
1.实验目的:
掌握函数的定义及函数调用的方法
⑵掌握函数的声明方法,能利用函数来实现具有独立功能的程序模块
⑶熟悉函数的嵌套调用和递归调用
⑷正确理解指针的概念及其使用方法
学会使用通过指针去访问数组元素
2.实验内容:
(1)已知部分程序如下,请补全程序并回答。
本题要求掌握函数的定义、声明、和调用的方法
#include"stdio.h"
voidmain()
{voida1();//对被调函数a1的声明
//对被调函数a2的声明
a1();
//main函数调用a2函数
//main函数调用a1函数
}
a1()//定义a1函数的类型
{
printf(“###############”);
}
voida2()
{printf(“Howdoyoudo”);
}
运行程序并记录输出结果:
回答:
a1函数是有参函数还是无参函数?
a1函数有没有返回值,返回值为什么类型?
(2)分析并运行下面的程序,给出运行结果。
本题要求理解函数实参和形参的对应关系以及参数传递的方式
#include
intf(inti)
{
returni*i-1?
}
voidmain()
{
inti?
for(i=0?
i<5?
i++)printf("%d,%d,",i,f(i))?
}
运行程序,察看并分析程序执行结果:
回答:
f函数是有参函数还是无参函数?
f函数有没有返回值,返回值为什么类型?
(3)编写一个s函数,其功能如下。
本题要求能理解利用函数来实现具有独立功能的程序模块
(4)运行以下程序并回答相应问题。
本题要求熟悉函数递归调用的方法
#include
voidmain()
{longy,n,;
longf1(longn);
scanf(“%ld”,&n);//默认n的值大于0
y=f1(n);
printf(“%ld\n”,y);
}
longf1(longn)
{longx=1,i;
for(i=1;i<=n;i++)
x*=i;
returnx;
}
问以上程序的功能是什么?
重新编写f1函数,把f1函数的功能改为用递归的方法实现,请给出f1函数的代码
如果实现的功能为:
1!
+2!
+………+n!
,请问以上参考程序如何修改?
(原f1函数可以不用修改,主要修改main函数)
(5)swap函数用来交换变量a,b的值,请补全程序。
本题要求正确理解指针的概念及其使用方法
#include
voidmain()
{voidswap(int*p1,int*p2);
inta,b;
scanf(“%d,%d”,&a,&b);
swap(&a,);
printf("a=%d,b=%d\n",a,b);
}
voidswap(int*p1,int*p2)
{inttemp;
;
;
;
}
运行程序,察看并分析程序执行结果:
(6)分析以下程序的运行结果。
本题要求学会通过指针去访问数组元素
#include"stdio.h"
voidmain()
{inti,*p,a[7]={1,2,3,4,5,6,7};
p=a+2;
for(i=0;i<3;i++,p++)
printf("%3d",*p);
}
察看并分析程序执行结果:
3.实验总结