电子科技大学高级语言程序设计实验报告二

 电子科技大学 通信与信息工程 学院

 实 实 验 报 告

  (实验)课程名称

  高级语言程序设计

  电子科技大学教务处制表

  电 电 子 科 技 大 学 实 实

  验

  报

  告 学生姓名:

  学 号:

 指导教师:

 实验地点:

 实验时间:

 一、实验室名称:

  校公共机房

  二、实验项目名称:

 分支及循环结构程序设计 三 、实验学时:4 学时 四、实验原理:

 首先通过阅读案例程序让学生更近一步理解循环及分支语句的具体使用。通过使用 VC2010 或 VC6 开发环境对案例程序进行编译运行,让学生切身体会循环及分支结构的执行过程,帮助学生培养使用这两种结构的独立编程能力。其次,通过自己动手编程进一步锻炼学生对分支及循环结构的使用能力,在程序调试过程中锻炼学生的查错、定错以及纠错的能力。

  五、实验目的:

 1. 掌握 C 程序基本调试技巧,特别是查看变量的值和单步调试方法。

 2. 掌握分支程序设计。

 3. 掌握三种循环程序设计以及循环的嵌套,循环和分支的嵌套等。

 4. 掌握循环和分支程序设计方法,能够利用循环和分支结构解决一些简单 数学计算问题。

 六、实验内容:

 上机完成以下编程实验,调试运行程序并完成报告。

 1. 阅读教材 3.10 节案例 2“图书管理系统主界面” (p130),理解该程序的结构以及其中每个语句的作用。在 VC 上编辑、调试、运行该程序。

  2. 习题 3.4(p134)。

 3. 习题 3.7(p134)

 4. 习题 3.14(p135)

 5. 编写一个 C 程序,用迭代法求 x 的值,当最后一项小于 1e-6 时停止计算。

 七、实验器材(设备、元器件):

 硬件要求:普通 pc 机。

 软件要求:Windows 7/XP/2003 等。

 八、实验步骤、 实验编程与运行结果:

 :

 1. 1)

 编辑的程序

 2. #include<stdio.h> 3. #include<conio.h> 4.

 5. void main() 6. { 7.

 char ch; 8.

 9.

 printf("**********************************************************\n"); 10.

 printf("**************欢迎进入中文图书馆管理系统!****************\n"); 11.

 printf("**********************************************************\n"); 12.

 printf("~~~~~~~~~~~~~~~~~~\t\t\t~~~~~~~~~~~~~~~~~~\n"); 13.

 14.

 while(1) 15.

 { 16.

  printf("\t\t 请选择操作类型:\n"); 17.

  printf("1:<查阅图书>\n"); 18.

  printf("2:<借阅图书>\n"); 19.

  printf("3:<管理系统>\n"); 20.

  printf("4:<还书>\n"); 21.

  printf("0:<退出>\n"); 22.

  printf("请输入 0--4\n"); 23.

 24.

  ch=getch(); 25.

 12!nnxn 

  26.

  if(ch == "1") 27.

  { 28.

 printf("----欢迎进入查阅图书系统----\n"); 29.

 printf("输入任意键结束!\n"); 30.

 getch(); 31.

 continue; 32.

 33.

  } 34.

  else if(ch == "2") 35.

  { 36.

 printf("----欢迎进入借阅图书系统----\n"); 37.

 printf("输入任意键结束!\n"); 38.

 getch(); 39.

 continue; 40.

  } 41.

  else if(ch == "3") 42.

  { 43.

 printf("----欢迎进入管理系统----\n"); 44.

 printf("输入任意键结束!\n"); 45.

 getch(); 46.

 continue; 47.

  } 48.

  else if(ch == "4") 49.

  { 50.

 printf("----欢迎进入还书系统---\n"); 51.

 printf("输入任意键结束!\n"); 52.

 getch(); 53.

 continue; 54.

  } 55.

  else if(ch == "0") 56.

  { 57.

 printf("----欢迎下次使用中文图书管理系统,再见!----\n"); 58.

 break; 59.

  } 60.

  else 61.

  { 62.

 printf("输入错误,请输入 0--4,请重新输入!\n"); 63.

 printf("按任意键重新开始!\n"); 64.

 getch(); 65.

  } 66.

 } 67. }

 68. 2)典型测试数据(输入):11,6,3 69. 3)应输出(上机前自己分析的结果):内容太多,见课本

  70. 上机时遇到的问题:①continue,break 理解有误

  解决办法:通过运行程序加以理解 71.

  实际运行结果:同教材

 72.

 1)

 编辑的程序 #include <stdio.h>

 void main() {

 int result, data, Operator, invalid;

  /*

  result

  --- the result of computation.

  data

  --- the second number in computation.

  operator --- "+" --> +1

 "-" --> -1

  invalid

 ---

 0

 --> valid input.

  1

 --> invalid input.

 */

  char c;

  /**************************************/

 /*

 */

 /*

 Initialization & Input

 */

 /*

 */

 /**************************************/

  result = 0;

 data = 0;

 Operator = 0;

 invalid = 0;

 printf("Please input the equation with the end of ";".\n");

 c = getchar();

 /*************************************/

 /*

  */

 /* Processing.

  */

 /*

  */

 /*************************************/

  while (c != ";")

 {

  if ( (c >= "0") && (c <= "9") )

  {

  if (Operator == 0)

  result = result*10 + c - "0";

  else

  data = data*10 + c - "0";

  }

 else if ( (c == "+") || (c == "-") )

  {

  if (Operator != 0)

  {

  result = result + Operator*data;

  data = 0;

  }

 Operator = (c == "+")? 1: -1;

  }

 else

  {

  invalid = 1;

  break;

  }

 c = getchar();

  }

  result = result + Operator*data;

  if (invalid)

  printf("Invalid Input!\n");

 else

  printf("result = %d\n",result);

 getchar();

 getchar();

  } 2)典型数据输入1+2-3+1;1+2-3+1

  上 机 时 遇 到 的 问 题 :

 ① 运 用 数 组 函 数 敲 击 回 车 无 法 正 常 停 止

  解决办法:

 ② 对 题 目 要 求 理 解 有 误

  解决办法:

 实际运行结果:1

 Invalid input

 73. 1)

 编写的程序

 74. #include<stdio.h> 75.

 76. void main() 77. { 78.

 int

 i, j, result; 79.

 80.

  /*定义循环变量 i*/ 81.

 82.

 printf("Please enter an integer\n"); 83.

 scanf("%d",&i); 84.

 if(i

 <=

 5) 85.

 { 86.

  result = 0; 87.

  for(j

 =

 1; j <= i; j++) 88.

 result += j; 89.

 } 90.

 91.

  else if(i <= 10) 92.

 93.

 /*如果 5<i<=10*/ 94.

 95.

  { 96.

 result = 100; 97.

 for(j

 =

 i; j >= 1; j--) 98.

  result -= j; 99.

  } 100.

 101.

 else 102.

 103.

  /*i>10*/ 104.

 105.

  result = i*i; 106.

 printf("%d\n",result); 107. }

 2)典型测试数据(输入):11,6,3 3)应输出(上机前自己分析的结果):121,79,6

  上机时遇到的问题:①程序可读性差

 解决办法:等号前后加空格,适当换行等

  ② 缺少适当注释

  解决办法:添加适当注释

  实际运行结果:121,79,6

 108. 1)

 编写的程序

 109. #include<stdio.h> 110. void main() 111. { 112.

 int i,j; 113.

  114.

 /*计数用j*/ 115.

 116.

 for(i = 1,j = 0;j <= 10;i++) 117.

  if(i%2 == 0 && i%3 == 0 && i%5 == 0) 118.

 119.

 /*i同时被2,3,5整除*/ 120.

 121.

 { 122.

  printf("%d\t",i); 123.

  j++; 124.

  } 125.

  getchar(); 126. } 127.

 128.

 2)典型测试数据(输入):无

 2)应输出(上机前自己分析的结果):30 60 90 120 150 180 210 240 270 300 上机时遇到的问题:① 输出结果未分开

 解决办法:添加\t

  ② 输出对话框消失太快

 解决办法:添加getchar() 实际运行结果:30 60 90 120 150 180 210 240 270 300

 1 )编写的程序

 129. #include<stdio.h> 130. void main() 131.

 132. { 133.

 int n; 134.

 float a, x = 0;

  135.

 136.

 for(a = 2,n = 1;a >= 1e-6;a = 2*a/(n + 1),n++) 137.

  x += a; 138.

 139.

 printf("%f",x); 140.

 141.

 getchar(); 142. } 143.

 144.

 2)典型测试数据(输入):无 3)应输出(上机前自己分析的结果):6.389057

 上机时遇到的问题:① 对 FOR 循环处理不当

  解决办法:添加断点

 实际运行结果:6.389057

 1 )

 编写的程序 2)

 #include<stdio.h> 3)

 void main() 4)

 5)

 { 6)

 int n; 7)

 float a, x = 0; 8)

  9)

 for(a = 2,n = 1;a >= 1e-6;a = 2*a/(n + 1),n++) 10)

  x += a; 11)

  12)

 printf("%f",x); 13)

  14)

 getchar(); 15)

 } 2)观察每执行一次循环 x,n 以及 n!值得变化 2)典型测试数据(输入):无 3)应输出(上机前自己分析的结果):6.389057

 上机时遇到的问题:① 2010 版添加断点后操作不详

 解决办法:

 实际运行结果:6.389057

 九、实验结论:

 掌握了 C 程序基本调试技巧,特别是查看变量的值和单步调试方法;分

  支程序设计三种循环程序设计以及循环的嵌套,循环和分支的嵌套等;循环和分支程序设计方法,利用循环和分支结构解决一些简单 数学计算问题。

 十、总结及心得体会:

 循环语句嵌套可以解决许多问题,需要加深理解掌握。

 十一、对本实验过程及方法、手段的改进建议:

  报告评分:

  指导教师签字: