11-12学年第1学期
《C语言程序设计》
实验指导书
实验一、C程序开发环境和数据处理
实验课程:C语言程序设计 课程学分:4学分
设课形式:非独立 项目类型:基础
项目学时:8学时 实验项目:C程序开发环境和数据处理
【实验目的】
1. 学会Visual C++ 的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法,
掌握C程序的基本结构。
2. 掌握C语言基本数据类型的概念,理解数据类型与运算的关系。
3. 学会使用C语言的有关运算符,以及包含这些运算符的表达式。
【实验内容】
1. 掌握Visual C++集成开发环境的安装、启动和退出的方法。熟悉Visual C++集成开发环境界面和有关菜单的使用方法。
2. 输入并运行简单C程序,了解C程序的特点和结构。
3. 编程计算表达式的值。
4. 编程计算的两个根。
5. 输入并运行给定程序,对照程序分析运行结果。
【实验条件】
装有Microsoft Visual C++6.0软件的PC机
【实验过程】
1. 安装并启动Visual C++集成开发环境,掌握File、Edit、Project、Build等菜单中常用功能的使用。
2. 输入并运行下面最简单的C程序。
(1)输出Hello World字符串。
#include <stdio.h>
mian()
{
printf(" Hello World!\n")
}
● 将输入的文件存盘。
● 通过build菜单或相应的工具按钮对程序进行编译和连接。
● 执行连接后的程序。
(2)输入并运行求三个数之和的程序。
#include <stdio.h>
mian()
{
printf("\n sum=%d\n",23+50+46);
}
● 输入该程序并存盘,然后进行编译和连接,如果出错,进行调试,直到无错为止。
● 运行程序,并查看运行结果,判断结果正确与否。
● 修改输出格式和三个数据,重新编译、连接和运行程序,分析运行结果。
3. 编程计算表达式的值。
(1)
(2)
(3) 2.5+2*7%2/4
(4) 3*(int)sqrt(34)-sin(6)*5+0x2AF
(5) 4.5+8%5*(int)(2.7+4.5)/2%4
4. 编程计算的两个根。
提示:对这个具体问题,可以先人工计算出判别式的值,以此作为已知信息就可以编程程序了。
实验二、结构化程序设计
实验课程:C语言程序设计 课程学分:4学分
设课形式:非独立 项目类型:设计
项目学时:12学时 实验项目:结构化程序设计
【实验目的】
1. 学会变量和函数的定义及使用,掌握基本输入输出函数的使用。
2. 掌握赋值语句、关系、逻辑、条件等表达式的含义及使用方法。
3. 使用顺序结构解决简单的计算问题。
4. 掌握利用if语句和switch语句实现选择结构程序设计。
5. 掌握利用while语句、for语句、do_while语句实现循环结构程序设计。
6. 掌握控制语句break、continue、goto语句的使用方法。
【实验内容】
1. 定义求圆球的体积、表面积,求圆柱体的体积、表面积的函数。
2. 定义函数:double tmax(double, double, double),它返回三个参数中最大的一个。写一个主函数试验各种参数情况。
3. 请写一个程序,它打印出1到100之间被6或者7整除的所有的数;修改这个程序,使它打印出1到100之间只被6或者7之一整除的数(不包括同时被两者整除的那些数)。
4. scanf函数输入一个百分制成绩,输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D ,60分以下分为E。
要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。
5. 写函数计算 1! + 2! + ... + k!。用主函数试验函数对一系列k值计算出的结果。你写出的函数对1到10计算结果都正确吗?如果出现错误,弄清楚是什么原因。这个程序能对k = 30得到正确结果吗?(另外,你能只用一重循环完成函数的定义吗?)
6. 考虑不用函数(例如isprime)直接写出对6~200的偶数验证哥德巴赫猜想的程序(利用循环、条件、break语句等,不使用goto语句)。将这样写出的程序与用定义函数的方式写出的程序比较。例如考察两个函数的行数、字节数,其中各种控制结构的嵌套深度,控制结构使用的个数等。
实验三、模块化程序设计
实验课程:C语言程序设计 课程学分:4学分
设课形式:非独立 项目类型:设计
项目学时:8学时 实验项目:模块化程序设计
【实验目的】
1.掌握C语言中定义函数的方法
2.掌握函数嵌套调用和递归调用的方法。
3.掌握通过“值传递”调用函数的方法。
4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法。
【实验内容】
1.编写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。
2.编写程序,计算下面公式并输出结果。
要求:
(1)编写一个函数计算n!
(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。
(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不
再进行计算。
(4)运行程序并计算、、、、。
3.将一个正整数n以相反的顺序输出的递归算法可以如下描述:
如果 要输出的整数只有一位
则 输出该整数
否则 输出整数的个位数字
反向输出除个位以外的全部数字
结束
据此算法设计的递归算法如下:
void printn(int n)
{ if ((n>=0)&&(n<=9))
printf("%d",n);
else
{ printf("%d",n%10);
printn(n/10);
}
}
请编写主程序,调用上述算法,反向输出正整数n。如输入123,则输出321。
4. 汉诺塔程序的设计。
(1)估算所用计算机搬完64个盘子所需的时间;
(2)请首先人工模拟计算机写出结果,再同实际程序结果对照,理解参数及变量的作用和作用域
参考程序如下:
#include <stdio.h>
void move(char getone, char putone)
{ printf("%c--->%c\n",getone,putone);
}
void hanoi(int n,char one,char two,char three)
{ if(n==1) move(one,three);
else
{ hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main()
{ int m;
printf("Input the number of disks:");
scanf("%d",&m);
printf("The steps to moving %3d disks:\n",m);
hanoi(m,'A','B','C');
}
5. 编程打印所有“水仙花数”。(一个三位的十进制数,其三个数位的数字之立方和等于这个数,称其为水仙花数)
实验四、数组程序设计
实验课程:C语言程序设计 课程学分:4学分
设课形式:非独立 scanf输入整型数组项目类型:综合
项目学时:8学时 实验项目:数组程序设计
【实验目的】
1.掌握一维数组与二维数组的定义、使用及初始化方法。
2.学习数组作为函数参数的用法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论