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++集成开发环境,掌握FileEditProjectBuild等菜单中常用功能的使用。
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. 掌握控制语句breakcontinuegoto语句的使用方法。
实验内容
1. 定义求圆球的体积、表面积,求圆柱体的体积、表面积的函数。
2. 定义函数:double tmax(double, double, double),它返回三个参数中最大的一个。写一个主函数试验各种参数情况。
3. 请写一个程序,它打印出1100之间被6或者7整除的所有的数;修改这个程序,使它打印出1100之间只被6或者7之一整除的数(不包括同时被两者整除的那些数)
4. scanf函数输入一个百分制成绩,输出成绩等级ABCDE,其中90~100分为A80~89分为B70~79分为C60~69分为D 60分以下分为E
要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。
5. 写函数计算 1! + 2! + ... + k!。用主函数试验函数对一系列k值计算出的结果。你写出的函数对110计算结果都正确吗?如果出现错误,弄清楚是什么原因。这个程序能对k = 30得到正确结果吗?(另外,你能只用一重循环完成函数的定义吗?)
6. 考虑不用函数(例如isprime)直接写出对6200的偶数验证哥德巴赫猜想的程序(利用循环、条件、break语句等,不使用goto语句)。将这样写出的程序与用定义函数的方式写出的程序比较。例如考察两个函数的行数、字节数,其中各种控制结构的嵌套深度,控制结构使用的个数等。
实验三、模块化程序设计
实验课程:C语言程序设计        课程学分:4学分
设课形式:非独立                项目类型:设计
项目学时:8学时                实验项目:模块化程序设计
【实验目的】
1.掌握C语言中定义函数的方法
2.掌握函数嵌套调用和递归调用的方法。
3.掌握通过“值传递”调用函数的方法。
4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法。
【实验内容】
1.编写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。
2.编写程序,计算下面公式并输出结果。
要求:
1)编写一个函数计算n!
2)编写主函数,由键盘输入nm,调用(1)中的函数完成计算。
3)输入nm要给出提示,并检查nm的合理性,不合理的输入应输出错误信息,并不
再进行计算。
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小时内删除。