高级语言程序设计实验.docx
《高级语言程序设计实验.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计实验.docx(18页珍藏版)》请在冰点文库上搜索。
高级语言程序设计实验
《高级语言程序设计》实验课程要求
高级语言程序设计是一门实践性很强的课程,理论与实践双重并重,学好理论课的同时应加强注重动手能力的培养与提高。
为了达到上述目的,本课程根据课程内容,安排了十个实验题目,在实验时应注意以下几点,并完成相应的实验要求。
一、实验设备
1软件系统:
WindowXP操作系统、MicrosoftVisualC++6.0
2硬件环境:
多媒体机房、微机
二、实验报告要求
1源程序清单;
2运行结果截图;
3.每个实验另起一页。
三、每次上机前应了解本次的实验目的与要求,对题目进行问题分析和算法求解,按要求完成实验报告。
实验一C语言系统环境
一、目的要求
1熟悉C语言的运行环境;
2学会C语言的源程序的调试及运行;
3了解C源程序的结构特点。
二、实验内容
1求三个数中的大数并输出。
三、源程序清单
#include
intmain()
{
inta,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>b)max=a;
elsemax=b;
if(c>max)max=c;
elsemax=max;
printf("max=%d\n",max);
return0;
}
四、运行结果截图:
实验二顺序结构程序设计
一、目的要求
1掌握C语言数据类型及对它们的赋值方式;
2学会使用C语言的有关算数运算符及表达式的使用;
3熟练掌握数据的输入输出方法,能正确使用各种格式转换符。
二、实验内容
要求用scanf输入数据,输出计算结果,结果取小数点后两位。
1已知圆的半径r=1.5cm,求圆的周长、面积。
2已知一个圆柱高h=3cm,求圆柱体的体积。
三、源程序清单
#include
intmain()
{
floatr,l,s,h,v;
floatpi=3.1415926;
scanf("%f%f",&r,&h);
l=2*pi*r;
s=pi*r*r;
v=s*h;
printf("周长l=%.2f\n面积s=%.2f\n圆柱体积v=%.2f\n",l,s,v);
return0;
}
四、运行结果截图
实验三选择结构程序设计
一、目的要求
1了解C语言表示逻辑量的方法;
2学会正确使用C语言的逻辑运算符和逻辑表达式;
3熟练掌握if语句和switch语句。
二、实验内容
1输入三个数,判断能否以这三个数构成一个三角形,若能则输出所构成三角形的类别(等边、等腰、直角或斜三角形)。
2已知年月,求该年该月有多少天。
三、源程序清单
1#include
int main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
if((a<0)||(b<0)||(c<0)||(a+b<=c)||(b+c<=a)||(a+c<=b))
printf("不能构成三角形\n");
else
if(a==b&&b==c&&a==c)
printf("能构成等边三角形\n");
else if(a==b||b==c||a==c)
printf("能构成等腰三角形\n");
else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
printf("能构成直角三角形\n");
elseprintf("能构成斜三角形\n");
return 0;}
2
#include
intmain()
{
intyear,month,day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d,%d",&year,&month);
if(year%400==0||(year%100!
=0&&year%4==0))day[1]=29;
printf("%d天\n",day[month-1]);
return0;
}
四、运行结果截图
1
2
实验四循环结构程序设计
一、目的要求
1掌握while语句、do-while语句和for语句实现循环的方法;
2用循环的方法实现各种算法。
二、实验内容
1求两个自然数,其和是667,最小公倍数与最大公约数之比为120:
1。
2一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。
求它在第10次落地时,共经过多少米?
第10次反弹多高?
三、源程序清单
1
#include
intmain()
{
intm,n,yue,bei;
for(n=1;n<334;n++)
{
m=667-n;
for(yue=n;yue>=1;yue--)
if(m%yue==0&&n%yue==0)break;
bei=m/yue*n;
if(bei%yue==0&&bei/yue==120)
printf("m=%d,n=%d\n",m,n);
}
return0;
}
2
#include
intmain()
{
floatsum=100,h=sum/2;
intn;
for(n=2;n<=10;n++)
{
sum=sum+h*2;
h=h/2;
}
printf("sum=%f\nh=%f\n",sum,h);
return0;
}
四、运行结果截图
1
2
实验五数组及其应用
一、目的要求
1掌握一维数组和二维数组的定义、赋值和输入输出方法;
2掌握与数组有关的算法(特别是排序算法);
3掌握字符数组的使用方法和字符串函数的使用。
二、实验内容
1用选择法对10个整数进行排序,要求用scanf函数输入。
2打印杨辉三角形。
3编程将两个字符串连接起来,不能使用strcat函数。
三、源程序清单
1
#include
intmain()
{
inti,j,min,temp,a[11];
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<=10;i++)
printf("%4d",a[i]);
printf("\n");
for(i=1;i<=9;i++)
{
min=i;
for(j=i+i;j<=10;j++)
if(a[min]>a[j])min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
for(i=1;i<=10;i++)
printf("%4d",a[i]);
printf("\n");
return0;
}
2
#include
#defineN10
intmain()
{
inti,j,a[N][N];
for(i=0;i{a[i][i]=1;
a[i][0]=1;
}
for(i=2;ifor(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
return0;
}
3
#include
intmain()
{
chars1[80],s2[40];
inti=0,j=0;
printf("inputstring1:
");
scanf("%s",s1);
printf("inputstring2:
");
scanf("%s",s2);
while(s1[i]!
='\0')i++;
while(s2[j]!
='0')s1[i++]=s2[i++];
s1[i]='\0';
printf("\nThenewstringis:
%s\n",s1);
return0;
}
四、运行结果截图
1
2
实验六函数及其应用
一、目的要求
1掌握函数的定义方法;
2掌握函数中实参和形参的传递关系和对应关系,返回语句return的使用;
3掌握函数的一般调用、嵌套调用和递归调用的方法。
4了解局部和全局变量,静态和动态存储方式,内部和外部函数。
二、实验内容
1用递归法将一个整数n转换成字符串。
n的位数不确定,可以是任意位数的整数。
例如,输入483,应输出字符串“483”。
2编程求前n个素数。
n的大小由用户键盘输入决定。
三、源程序清单
1#include
int main()
{
void convert(int n);
int num;
printf("intput an integer:
");
scanf("%d",&num);
printf("output:
");
if(num<0)
{putchar('-');putchar(' ');
num=-num;
}
convert(num);
printf("\n");
return 0;
}
void convert(int n)
{int i;
if((i=n/10)!
=0)
convert(i);
putchar(n%10+'0');
putchar(32);
}
2
#include
intmain()
{
intn=0;
printf("n=");
scanf("%d",&n);
ints=1;
intj=0;
for(inti=0;i{s++;
intt=s-1;
for(j=2;j{
if(s%j==0){break;}
}
if(j==t||s==2)
{
printf("%d\n",s);
}
else{i--;}
}
return0;
}
四、运行结果截图
1
2
实验七指针及其应用
一、目的要求
1掌握指针的概念,会定义和使用指针变量;
2学会使用字符串的指针和指向字符串的指针变量;
3学会使用指针数组的引用方法和理解其含义;
4了解命令行参数的使用方法。
二、实验内容
1用指针完成函数strlen的功能。
2将n个数按照输入的顺序的逆序输出,用函数实现。
(传递时的实参或形参尽量使用指针进行传递。
)
三、源程序清单
1.#include
intmain()
{
intlength(char*p);
intlen;
charstr[20];
printf("intputstring:
");
scanf("%s",str);
len=length(str);
printf("Thelengthofstringis%d.\n",len);
return0;
}
intlength(char*p)
{
intn;
n=0;
while(*p!
='\0')
{n++;p++;}
return(n);
}
2.#include
intmain()
{
voidsort(char*p,intm);
inti,n;
char*p,num[20];
printf("intputn:
");
scanf("%d",&n);
printf("intputnumbers:
\n");
for(i=0;iscanf("%d",&num[i]);
p=&num[0];
sort(p,n);
printf("thesequenceis:
\n");
for(i=0;iprintf("%d",num[i]);
printf("\n");
return0;
}
voidsort(char*p,intm)
{
inti;
chartemp,*p1,*p2;
for(i=0;i<=m/2;i++)
{p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}
四、运行结果截图
1
2
实验八结构体、共同体
一、目的要求
1掌握结构体定义方法,结构体变量作为函数参数的调用方法;
2掌握共同体的定义和使用方法,以及与结构体的区别。
二、实验内容
1定义一个结构体变量(包括年、月、日)。
计算某一日在本年中是第几天?
(注意闰年的不同)
2将一个链表按逆序排列,即将链头当做链尾,链尾当做链头。
(此题目选做)
三、源程序清单
1.#include
structDate
{intyear;
intmonth;
intday;
}date;
intmain()
{
inti,days;
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入年月日:
");
scanf("%d%d%d",&date.year,&date.month,&date.day);
days=0;
for(i=1;idays=days+day_tab[i];
days=days+date.day;
if((date.year%4==0&&date.year%100!
=0||date.year%400==0)&&date.month>=3)
days=days+1;
printf("%d月%d日在%d年中是第%d天\n",date.month,date.day,date.year,days);
return0;
}
四、运行结果截图
实验九文件操作及应用
一、目的要求
1掌握文件、文件指针,以及缓冲文件系统的概念;
2学会使用文件打开、关闭、文件读和写等操作。
二、实验内容
1对std文件中的数据进行输入,并按平均分排序,且存入新文件sort中。
*实验十预处理命令、位运算
一、目的要求
1掌握按位运算的概念和方法,学会使用位运算;
2学会通过运算实现对某些位和运算。
二、实验内容
1编写一个函数getbits,从一个16位的单元中取出某几位。