99网
您的当前位置:首页高级语言程序设计实验

高级语言程序设计实验

来源:99网


《高级语言程序设计》实验课程要求

高级语言程序设计是一门实践性很强的课程,理论与实践双重并重,学好理论课的同时应加强注重动手能力的培养与提高。

为了达到上述目的,本课程根据课程内容,安排了十个实验题目,在实验时应注意以下几点,并完成相应的实验要求。

一、实验设备

1 软件系统:Window XP操作系统、Microsoft Visual C++ 6.0

2 硬件环境:多媒体机房、微机

二、实验报告要求

1源程序清单;

2 运行结果截图;

3.每个实验另起一页。

三、 每次上机前应了解本次的实验目的与要求,对题目进行问题分析和算法求解,按要求完成实验报告。

实验一 C语言系统环境

一、目的要求

1 熟悉C语言的运行环境;

2 学会C语言的源程序的调试及运行;

3 了解C源程序的结构特点。

二、实验内容

1 求三个数中的大数并输出。

三、源程序清单

#include

int main()

{

int a,b,c,max;

scanf(\"%d %d %d\

if(a>b) max=a;

else max=b;

if(c>max) max=c;

else max=max;

printf(\"max=%d\\n\

return 0;

}

四、运行结果截图:

实验二 顺序结构程序设计

一、目的要求

1 掌握C语言数据类型及对它们的赋值方式;

2 学会使用C语言的有关算数运算符及表达式的使用;

3 熟练掌握数据的输入输出方法,能正确使用各种格式转换符。

二、实验内容

要求用scanf输入数据,输出计算结果,结果取小数点后两位。

1 已知圆的半径r=1.5cm,求圆的周长、面积。

2 已知一个圆柱高h=3cm,求圆柱体的体积。

三、源程序清单

#include

int main()

{

float r,l,s,h,v;

float pi=3.1415926;

scanf(\"%f %f\

l=2*pi*r;

s=pi*r*r;

v=s*h;

printf(\"周长l=%.2f\\n面积s=%.2f\\n圆柱体积v=%.2f\\n\

return 0;

}

四、运行结果截图

实验三 选择结构程序设计

一、目的要求

1 了解C语言表示逻辑量的方法;

2 学会正确使用C语言的逻辑运算符和逻辑表达式;

3 熟练掌握if语句和switch语句。

二、实验内容

1 输入三个数,判断能否以这三个数构成一个三角形,若能则输出所构成三角形的类别(等边、等腰、直角或斜三角形)。

2 已知年月,求该年该月有多少天。

三、源程序清单

1#include

int main()

{

double a,b,c;

scanf(\"%lf %lf %lf\

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\");

else printf(\"能构成斜三角形\\n\");

return 0; }

2

#include

int main()

{

int year,month,day[12]={31,28,31,30,31,30,31,31,30,31,30,31};

scanf(\"%d,%d\

if(year%400==0||(year%100!=0&&year%4==0))day[1]=29;

printf(\"%d天\\n\

return 0;

}

四、运行结果截图

1

2

实验四 循环结构程序设计

一、目的要求

1 掌握while语句、 do-while语句和for语句实现循环的方法;

2 用循环的方法实现各种算法。

二、实验内容

1 求两个自然数,其和是667,最小公倍数与最大公约数之比为120:1。

2 一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?

三、源程序清单

1

#include

int main()

{

int m,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\

}

return 0;

}

2

#include

int main()

{

float sum=100,h=sum/2;

int n;

for (n=2;n<=10;n++)

{

sum=sum+h*2;

h=h/2;

}

printf(\"sum=%f\\nh=%f\\n\

return 0;

}

四、运行结果截图

1

2

实验五 数组及其应用

一、目的要求

1 掌握一维数组和二维数组的定义、赋值和输入输出方法;

2 掌握与数组有关的算法(特别是排序算法);

3 掌握字符数组的使用方法和字符串函数的使用。

二、实验内容

1 用选择法对10个整数进行排序,要求用scanf函数输入。

2 打印杨辉三角形。

3 编程将两个字符串连接起来,不能使用strcat函数。

三、源程序清单

1

#include

int main()

{

int i,j,min,temp,a[11];

for(i=1;i<=10;i++)

scanf(\"%d\

printf(\"\\n\");

for(i=1;i<=10;i++)

printf(\"%4d\

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\

printf(\"\\n\");

return 0;

}

2

#include

#define N 10

int main()

{

int i,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\j]);

printf(\"\\n\");

}

printf(\"\\n\");

return 0;

}

3

#include

int main()

{

char s1[80],s2[40];

int i=0,j=0;

printf(\"input string1:\");

scanf(\"%s\

printf(\"input string2:\");

scanf(\"%s\

while(s1[i]!='\\0') i++;

while(s2[j]!='0') s1[i++]=s2[i++];

s1[i]='\\0';

printf(\"\\nThe new string is: %s\\n\

return 0;

}

四、运行结果截图

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\

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

int main()

{

int n=0;

printf(\"n=\");

scanf(\"%d\

int s=1;

int j=0;

for (int i=0;i{ s++;

int t=s-1;

for(j=2;j{

if (s%j==0){break;}

}

if (j==t||s==2)

{

printf(\"%d\\n\

}

else{i--;}

}

return 0;

}

四、运行结果截图1

2

实验七 指针及其应用

一、目的要求

1 掌握指针的概念,会定义和使用指针变量;

2 学会使用字符串的指针和指向字符串的指针变量;

3 学会使用指针数组的引用方法和理解其含义;

4 了解命令行参数的使用方法。

二、实验内容

1 用指针完成函数strlen的功能。

2 将n个数按照输入的顺序的逆序输出,用函数实现。(传递时的实参或形参尽量使用指针进行传递。)

三、源程序清单

1. #include

int main()

{

int length(char*p);

int len;

char str[20];

printf(\"intput string: \");

scanf(\"%s\

len=length(str);

printf(\"The length of string is %d.\\n\

return 0;

}

int length(char*p)

{

int n;

n=0;

while (*p!='\\0')

{n++;p++;}

return (n);

}

2. #include

int main()

{

void sort(char*p,int m);

int i,n;

char *p,num[20];

printf(\"intput n: \");

scanf(\"%d\

printf(\"intput numbers:\\n\");

for(i=0;iscanf(\"%d\

p=&num[0];

sort(p,n);

printf(\"the sequence is:\\n\");

for(i=0;iprintf(\"%d \

printf(\"\\n\");

return 0;

}

void sort(char*p,int m)

{

int i;

char temp,*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

struct Date

{ int year;

int month;

int day;

}date;

int main()

{

int i,days;

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf(\"请输入年月日: \");

scanf(\"%d %d %d\

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\

return 0;

}

四、运行结果截图

实验九 文件操作及应用

一、目的要求

1 掌握文件、文件指针,以及缓冲文件系统的概念;

2 学会使用文件打开、关闭、文件读和写等操作。

二、实验内容

1 对std文件中的数据进行输入,并按平均分排序,且存入新文件sort中。

* 实验十 预处理命令、位运算

一、目的要求

1掌握按位运算的概念和方法,学会使用位运算;

2 学会通过运算实现对某些位和运算。

二、实验内容

1 编写一个函数getbits,从一个16位的单元中取出某几位。

因篇幅问题不能全部显示,请点此查看更多更全内容