高级语言程序的设计实验(C)2017(2)37677.pdf
理工大学 高级语言程序设计(C)实验报告 院系:班级:学号:目录 实验一:C开发环境与顺序结构程序设计.2 1实验目的:.2 2实验环境:.2 3实验步骤:.2 4实验容:.2 5实验总结.8 实验二:分支结构与循环结构程序设计.9 1.实验目的:.9 2.实验环境:.9 3.实验容:.9 4.实验总结.17 实验三 数组及数组的应用.18 1.实验目的:.18 2.实验环境:.18 3.实验容:.18 4.实验总结:.19 实验四:函数与指针.19 1.实验目的:.20 2.实验容:.20 3.实验总结.23 不正确 正确 无 有 开始 结束 编辑 编译 连接(组建)执行 有错?结果正确?源程序 f.cpp 目标程序 f.obj 库函数和其 它目标程序 可执行目标程序 f.exe 实验一:C开发环境与顺序结构程序设计 专业班级 学 号 姓 名 实验学时 4 实验类型 设计 实验地点 实验时间 指导老师 周涛 成 绩 教师批语 年 月 日 1实验目的:(1)了解集成开发环境 VC+6.0 的使用方法,理解相关命令的含义,掌握编辑、编译、连接以及运行调试的方法,掌握程序的基本结构,掌握输入输出的方式。(2)掌握程序设计的基本要 素中的数据类型、变量、运算符以及表达式的运用。(3)学会正确使用逻辑运算符和逻辑表达式以及关系运算符与关系表达式,掌握在程序设计中灵活使用顺序结构。2实验环境:(1)硬件环境 CPU:Inter Pentium(R)4 CPU 3.00GHz 以上 存:2GByte 硬盘: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 void main()printf(“*n”);printf(“Programing in c A Labrtry Maualn”);printf(“*n”);printf(“*n”);4.2 查看程序运行的结果#include void main()int i,j,m,n;i=8;j=10;m=+i;n=j-;printf(“%d,%d,%d,%dn”,i,j,m,n);4.3找出下列程序中的错误,改正后写出程序运行结果.#include void main()Int x,y=z=5,aver;x=7;AVER=(x+y+z)/3 printf(“AVER=%dn”,aver);4.4 输入参考程序。在下划线处分别填入不同的变量定义、表达式、输出格式控制符号。#include 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 void main()int x,y,z;scanf(%d%d,&x,&y);z=x+y;printf(%dn,z);输入:1 2 输出:3 4.5 将整型变量 a、b 的值进行交换。方法一:借助中间变量 t#include void main()int a=1,b=2,t;t=a;a=b;b=t;printf(%dn%dn,a,b);方法二:不借助中间变量#include void main()int a=1,b=2;a=b-a;b=b-a;a=b+a;printf(%dn%dn,a,b);4.6 编写程序输入华氏温度 f,求摄氏温度 c。华氏转摄氏的公式为:c=5/9(f-32)输入输出都要有文字提示和说明,输出保留 2 位小数。#include void main()float f,c;printf(输入华氏温度=);scanf(%f,&f);c=(f-32)*5/9;printf(摄氏温度=%.2fn,c);4.7 编程求)ln()sin(xaaxy。要求 a和 x 从键盘输入。当 a=6.4,x=3.4 时,求 y的值。#include#include void main()float a,x,y;scanf(%f%f,&a,&x);y=sin(sqrt(a*x)+log(a+x);printf(%fn,y);4.8 从键盘上任意输入一个三位整数,按逆序输出。例如输入456,输出 654。提示:456%10=6 456/10%10=5 456/10/10=4 6*102+5*101+4*100=654#include main()int n;int a,b,c;int num;printf(请输入一个三位整数 nn);scanf(%d,&n);c=n/100;b=(n-c*100)/10;a=n%10;num=a*100+b*10+c;printf(num=%dn,num);5实验总结 实验二:分支结构与循环结构程序设计 专业班级 学 号 姓 名 实验学时 6 实验类型 设计型 实验地点 实验时间 指导老师 周涛 成 绩 教师批语 年 月 日 1.实验目的:了解 C 语言表示逻辑量的方法;(0 为“假”,非 0 为“真”)学会正确使用关系表达式和逻辑表达式。熟练掌握 if语句、switch语句、while语句、do-while语句和 for语句的使用方法。结合程序掌握一些简单的算法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。学习调试程序 2.实验环境:操作系统:Windows 7 编程软件:Visual C+6.0 3.实验容:(1)使用 if语句或者 switch 语句编程求解以下分段函数:y=。#include#include main()float x,y;scanf(%f,&x);if(x=1&x10)y=sqrt(x+10);else y=2*x+1;printf(%fn,y);2x-1 (x1)10 x (1x10)(2)使用 if语句或者 switch 语句编程实现以下功能:从键盘任意输入 0-100之间的整数作为学生的成绩,要求根据以下的条件判断并输出相应成绩的等级。大于等于 90,小于等于 100:优秀 大于等于 70,小于等于 89:良好 大于等于 60,小于等于 69:及格 小于 60:不及格#include 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 main()int i=1,s=0,n;scanf(%d,&n);while(i=n)s=s+i;i=i+;printf(%dn,s);2、用 do-while语句实现#include main()int i=1,s=0,n;scanf(%d,&n);do s=s+i;i=i+;while(i=n);printf(%dn,s);3、用 for语句实现。#include main()int i=1,s=0,n;scanf(%d,&n);for(;i=n;i+)s=s+i;printf(%dn,s);(4)n的值从键盘输入,要求用循环语句实现以下功能:1!+2!+n!#include 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!=%fn,s);(5)程序填空,求 100 以的整数中最大可被 13整除的数是哪一个?#include int main()int i;for(i=100 ;i=0 ;i-)if(i%13=0 )break;printf(%dn,i);return 0;(6)输入两个正整数 m 和 n,求其最大公约数和最小公倍数。#include int main()*int p,r,n,m,temp;printf(Enter n,m:);scanf(%d,%d,&n,&m);if(mn,然后再求 m 对 n的余数 r,通过 while语句循环,直到余数 r为零。(7)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。#include 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=A&c=0&c=9)digit+;else other+;printf(letters:%dnspace:%dndigit:%dnother:%dn,letters,space,digit,other);return 0;(8)编写程序输出如下图形,请填空。#includestdio.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 void main()int a50,i;for(i=0;i50;i+)scanf(“%d”,);for(i=0;i50;i+)if();printf(“%3d”,ai);printf(“n”);输出结果:(2)利用数组实现以下功能:从键盘任意输入若干个整数(不超过 100 个),统计并输出这些整数的平均值,以及高于此平均值的整数个数。程序:(3)对于二维数组987654321,求 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 int f(int i)return i*i 1 void main()int i for(i=0 i5 i+)printf(%d,%d,i,f(i)运行程序,察看并分析程序执行结果:回答:f函数是有参函数还是无参函数?f函数有没有返回值,返回值为什么类型?(3)编写一个 s 函数,其功能如下。本题要求能理解利用函数来实现具有独立功能的程序模块 ns.3211.32112111 (4)运行以下程序并回答相应问题。本题要求熟悉函数递归调用的方法#include void main()long y,n,;long f1(long n);scanf(“%ld”,&n);/默认 n 的值大于 0 y=f1(n);printf(“%ldn”,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 void main()void swap(int*p1,int*p2);int a,b;scanf(“%d,%d”,&a,&b);swap(&a,);printf(a=%d,b=%dn,a,b);void swap(int *p1,int*p2)int temp;运行程序,察看并分析程序执行结果:(6)分析以下程序的运行结果。本题要求学会通过指针去访问数组元素#include stdio.h void main()int i,*p,a7=1,2,3,4,5,6,7;p=a+2;for(i=0;i3;i+,p+)printf(%3d,*p);察看并分析程序执行结果:3.实验总结