资源描述
陕西理工大学
《高级语言程序设计(C)》
实验报告
院系:
班级:
学号:
姓名:
目录
实验一:C开发环境与顺序结构程序设计 2
1.实验目得: 2
2.实验环境: 2
3.实验步骤: 2
4.实验内容: 2
5.实验总结 9
实验二:分支结构与循环结构程序设计 10
1、实验目得: 10
2、实验环境: 10
3、实验内容: 10
4、实验总结 18
实验三 数组及数组得应用 19
1、实验目得: 19
2、实验环境: 19
3、实验内容: 19
4、实验总结: 20
实验四:函数与指针 20
1、实验目得: 21
2、实验内容: 21
3、实验总结 24
实验一:C开发环境与顺序结构程序设计
专业班级
学 号
姓 名
实验学时
4
实验类型
设计
实验地点
实验时间
指导老师
周涛
成 绩
教师批语
年 月 日
1.实验目得:
(1) 了解集成开发环境VC++6、0得使用方法,理解相关命令得含义,掌握编辑、编译、连接以及运行调试得方法,掌握程序得基本结构,掌握输入输出得方式。
(2) 掌握程序设计得基本要 素中得数据类型、变量、运算符以及表达式得运用。
(3) 学会正确使用逻辑运算符与逻辑表达式以及关系运算符与关系表达式,掌握在程序设计中灵活使用顺序结构。
2.实验环境:
(1) 硬件环境
CPU: Inter Pentium(R)4 CPU 3、00GHz 以上
内存:2GByte
不正确
正确
无
有
开始
结束
编辑
编译
连接(组建)
执行
有错?
结果正确?
源程序
f、cpp
目标程序
f、obj
库函数与其
它目标程序
可执行目标程序f、exe
硬盘:500GByte
(2) 软件环境
操作系统:Microsoft Windows 7
编译系统:Microsoft Visual C++ 6、0
3.实验步骤:
按如图所示流程进行实验内容得调试。
(1) 在XP操作系统中,启动VC++6、0编译环境;
(2) 在VC++6、0编译界面输入C源程序;
(3) 选择编译、组建 、执行命令进行编译、链接与运行,并记录实验数据;
(4) 按以上方法依次输入其她源程序并调试、运行与记录实验数据。
4.实验内容:
4、1 输入并运行下列程序,查瞧程序运行得结果。
#include<stdio、h>
void main()
{
printf(“* * * * * * * * * *\n”);
printf(“Programing in c A Labrtry Maual\n”);
printf(“* * * *\n”);
printf(“*\n”);
}
4、2查瞧程序运行得结果
#include<stdio、h>
void main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j--;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
}
4、3找出下列程序中得错误,改正后写出程序运行结果、
#include<stdio、h>
void main()
{
Int x,y=z=5,aver;
x=7;
AVER=(x+y+z)/3
printf(“AVER=%d\n”,aver);
}
4、4输入参考程序。在下划线处分别填入不同得变量定义、表达式、输出格式控制符号。
#include<stdio、h>
void main()
{
int a,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<stdio、h>
void main( )
{
int x,y,z;
scanf("%d%d",&x,&y);
z=x+y;
printf("%d\n",z);
}
输入:1
2
输出:3
4、5将整型变量a、b得值进行交换。
方法一:借助中间变量t
#include<stdio、h>
void main()
{
int a=1,b=2,t;
t=a;
a=b;
b=t;
printf("%d\n%d\n",a,b);
}
方法二:不借助中间变量
#include<stdio、h>
void main()
{
int a=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<stdio、h>
void main()
{
float f,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<stdio、h>
#include<math、h>
void main()
{
float a,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=6 456/10%10=5 456/10/10=4
6*102+5*101+4*100=654
#include<stdio、h>
main()
{
int n;
int a,b, c;
int num;
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、实验环境:
操作系统:Windows 7 编程软件:Visual C++ 6、0
3、实验内容:
(1) 使用if语句或者switch语句编程求解以下分段函数:
2x-1 (x<1)
(1<x<10)
y=
2x+1 (x>10)
。
#include<stdio、h>
#include<math、h>
main()
{
float x,y;
scanf("%f",&x);
if(x<1)
y=2*x-1;
else if(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<stdio、h>
main()
{
int x;
scanf("%d",&x);
switch(x/10)
{
case 10:printf("优秀\n");break;
case 9:printf("优秀\n");break;
case 8:printf("良好\n");break;
case 7:printf("良好\n");break;
case 6:printf("及格\n");break;
default:
printf("不及格\n");
}
}
(3)n得值从键盘输入,要求分别用三种循环语句实现以下功能:
1+2+3+4+……+n
1、用while语句实现。
#include<stdio、h>
main()
{
int i=1,s=0,n;
scanf("%d",&n);
while(i<=n)
{
s=s+i;
i=i++;
}
printf("%d\n",s);
}
2、用do----while语句实现
#include<stdio、h>
main()
{
int i=1,s=0,n;
scanf("%d",&n);
do
{
s=s+i;
i=i++;
}
while(i<=n);
printf("%d\n",s);
}
3、用for语句实现。
#include<stdio、h>
main()
{
int i=1,s=0,n;
scanf("%d",&n);
for (;i<=n;i++)
s=s+i;
printf("%d\n",s);
}
(4)n得值从键盘输入,要求用循环语句实现以下功能:
1!+2!+………+n!
#include<stdio、h>
void main()
{ int n,i;
float s=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<stdio、h>
int main( )
{
int i;
for( i=100 ; i>=0 ;i--)
{ if( i%13==0 )
break;
}
printf("%d\n",i);
return 0;
}
(6)输入两个正整数m与n,求其最大公约数与最小公倍数。
#include<stdio、h>
int main()
{
int p,r,n,m,temp;
printf("Enter n,m :");
scanf("%d,%d",&n,&m);
if(m<n)
{
temp=m ; m=n ; n=temp ;
}
p=m*n;
r=m%n;
while( r!=0 )
{
m=n;
n=r;
r=m%n ;
}
printf("The greatest mon divisor:%d\n",n);
printf("The lowest mon multiple :%d\n",p/n);
return 0;
}
提示:if语句得功能就是将两数中大得那个放在m中,保证m>n,然后再求m对n得余数r,通过while语句循环,直到余数r为零。
(7)输入一行字符,分别统计出其中得英文字母、空格、数字与其它字符得个数。
#include<stdio、h>
int main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("Enter line character :\n");
while(( c=getchar())!='\n')
{
if( c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’ ) letters++;
else if( “c==” ) space++;
else if( c>=’0’&&c<=’9’ ) digit++;
else other++;
}
printf("letters:%d\nspace:%d\ndigit:%d\nother:%d\n",letters,space,digit,other);
return 0;
}
(8)编写程序输出如下图形,请填空。
#include"stdio、h"
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
#define s ' '
int main()
{
int n,i,j;
printf("Enter n:");
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、实验环境:
操作系统:Windows 7
编程软件:Visual C++ 6、0
3、实验内容:
(1)以下程序以每行输出8个数据得形式输出a数组。
#include<stdio、h>
void main( )
{int a[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"
void main( )
{ void a1( ); //对被调函数a1得声明
//对被调函数a2得声明
a1( );
// main函数调用a2函数
// main函数调用a1函数
}
a1( ) //定义a1函数得类型
{
printf(“###############”);
}
void a2( )
{ printf(“ How do you do”);
}
运行程序并记录输出结果:
回答:a1函数就是有参函数还就是无参函数?a1函数有没有返回值,返回值为什么类型?
(2)分析并运行下面得程序,给出运行结果。本题要求理解函数实参与形参得对应关系以及参数传递得方式
#include<stdio、h>
int f(int i)
{
return i*i1;
}
void main( )
{
int i;
for(i=0;i<5;i++) printf("%d,%d,",i,f(i));
}
运行程序,察瞧并分析程序执行结果:
回答:f函数就是有参函数还就是无参函数?f函数有没有返回值,返回值为什么类型?
(3)编写一个s函数,其功能如下。本题要求能理解利用函数来实现具有独立功能得程序模块
(4)运行以下程序并回答相应问题。本题要求熟悉函数递归调用得方法
#include<stdio、h>
void main( )
{ long y, n,;
long f1(long n);
scanf(“%ld”,&n); //默认n得值大于0
y=f1(n);
printf(“%ld\n”,y);
}
long f1(long n)
{ long x=1,i;
for(i=1;i<=n;i++)
x*=i;
return x;
}
问以上程序得功能就是什么?
重新编写f1函数,把f1函数得功能改为用递归得方法实现,请给出f1函数得代码
如果实现得功能为:1!+2!+………+n!,请问以上参考程序如何修改?(原f1函数可以不用修改,主要修改main函数)
(5)swap函数用来交换变量a,b得值,请补全程序。本题要求正确理解指针得概念及其使用方法
#include<stdio、h>
void main( )
{ void s *p1,int *p2);
int a, b;
scanf(“%d,%d”,&a,&b);
swap( &a, );
printf("a=%d,b=%d\n",a,b);
}
void s *p1, int *p2)
{ int temp;
;
;
;
}
运行程序,察瞧并分析程序执行结果:
(6)分析以下程序得运行结果。本题要求学会通过指针去访问数组元素
#include "stdio、h"
void main( )
{ int i,*p,a[7]={1,2,3,4,5,6,7};
p=a+2;
for(i=0;i<3;i++,p++)
printf("%3d",*p);
}
察瞧并分析程序执行结果:
3、实验总结
展开阅读全文