C语言程序实验报告分支结构的程序设计

时间:2024.4.30

                 数学与软件科学学院 实验报告

学期:1112___ 第_1  学期                          2011年10 月 17 日

课程名称:程序设计基础教程-C语言                      专业:20105_

实验编号:04 实验项目分支结构的程序设计     指导教师_

姓名:    学号:                实验成绩:          

 

一、实验目的及要求

(1) 掌握C语言程序设计中逻辑量的表示和运用方法;

(2) 掌握C语言程序设计中条件表达式的值的计算方法及其跟程序执行流程之间的逻辑顺序关系;

(3) 掌握C语言中的4中选择结构语句的执行逻辑及其运用方法。

二、实验内容

1. if 语句的实验。请分析如下语句段的逻辑关系:

int main(void)

{

   ...

   if (nA>1 && nB==0) nX=nX/nA;

   if (nA==2 || nX>1) nX=nX+1;

   ...

   return 0;

}

(a) 以算法流程图的形式表述;

(b) 增加输入、输出功能以补充完整该程序段,使之能够运行;

(c) 测试该程序段的各种条件组合下的运行结果。测试数据组如下:

nA nB nX

1  1  1

1  1  2

3  0  1

2  0  4

2  1  1

1  0  2

2  1  2

3  0  2

(d) 分析讨论:

1) 用哪组数据就可以使程序段中每个处理语句都执行一次?为了找出程序中的逻辑错误,应使用什么样的数据进行测试?请上机验证自己的分析结果。

2) 用哪两组数据可以使程序段中的每个分支都至少运行一次?为找出各个分支中的逻辑错误,应选用什么样的数据进行逻辑测试?请上机验证自己的分析结果。

3) 用哪四组数据可以将从起点到终点的各条路径都覆盖一次?为了测试程序在各个不同路径上的错误,应选用什么样的测试数据?请上机验证自己的分析结果。

2. if else语句实验。用if else句型,编写求4个数中最大者的程序,并设计测试用例、记录测试结果;

3. (选做)试用if  else if  else if ...else实现求4个数中最大者的程序,并做相应测试;

4.请理清习题5-23的逻辑关系,并上机进行验证。

三、实验步骤(该部分不够填写.请填写附页)

1.  书P84-4-17

打开TC,输入程序#include<stdio.h>

int main()

{

 int nYY,nWJ,nLJ,nYJ,nWF,nLF,nYF,nN;

 clrscr();

 printf("YY WJ LJ YJ WF LF YF\n");

 for(nYY=0;nYY<=1;nYY++)

  for(nWJ=0;nWJ<=10;nWJ++)

   for(nLJ=0;nLJ<=10;nLJ++)

    for(nYJ=0;nYJ<=10;nYJ++)

     for(nWF=0;nWF<=100;nWF++)

      for(nLF=0;nLF<=100;nLF++)

       for(nYF=0;nYF<=100;nYF++)

   if(nYY*100+nWJ*50+nLJ*20+nYJ*10+nWF*5+nLF*2+nYF==100)

    printf("%2d%2d%2d%2d%2d%2d%2d%d\n",nYY,nWJ,nLJ,nYJ,nWF,nLF,nYF,nN);

 getch();

 return 0;

}

按ctrl+F9运行,结果见图一

2.  书P84-4-19

选择file菜单下的new,输入

#include<stdio.h>

#include<math.h>

int main()

{

 int k,j;

 clrscr();

 for(k=1;k<=9;k++)

  {for(j=1;j<=9;j++)

   if(j<k)

    printf("        ");

   else

    printf("%d%c%d%c%d\t",k,'*',j,'=',k*j);

   printf("\n");}

 getch();

 return 0;

}

按ctrl+F9运行,结果见图二

3.  if else句型,编写求4个数中最大者的程序

#include<stdio.h>

int main()

{

 float fA,fB,fC,fD,fMAX;

 clrscr();

 printf("please input four numbers::\n");

 scanf("%f %f %f %f", &fA,&fB,&fC,&fD);

 fMAX=fA;

 if(fMAX<fB)fMAX=fB;

 if(fMAX<fC)fMAX=fC;

 if(fMAX<fD)fMAX=fD;

 printf("The max is %f\n",fMAX);

 getch();

 return 0;

}

按ctrl+F9运行,结果如图三

4.   if 语句的实验。请分析如下语句段的逻辑关系:

int main(void)

{

   ...

   if (nA>1 && nB==0) nX=nX/nA;

   if (nA==2 || nX>1) nX=nX+1;

   ...

   return 0;

}

(a)     以算法流程图的形式表述;

(b)    增加输入、输出功能以补充完整该程序段,使之能够运行;

int main()

{

 int na,nb,nx,nc=0,nd=0;

 clrscr();

 scanf("%d %d %d",&na,&nb,&nx);

 if(na>1&&nb==0)

  {nx=nx/na;

   nc=nc+1 ;}

 if(na==2||nx>1)

  {nx=nx+1;

   nd=nd+1;}

 printf("na=%d nb=%d nx=%d nc=%d nd=%d\n",na,nb,nx,nc,nd);

 getch();

 return 0;

}

(c) 测试该程序段的各种条件组合下的运行结果。测试数据组如下:

nA nB nX

1  1  1

1  1  2

3  0  1

2  0  4

2  1  1

1  0  2

2  1  2

3  0  2

实验结果见图

(d) 分析讨论:

1)204

2)206,306实验结果见图五

3

5重新书写5-23的程序

int main()

{

 int a,b,c,d,x;

 clrscr();

 scanf("%d %d %d %d",&a,&b,&c,&d);

 if(a<b)

   if(c<d)

     x=1;

   else

     if(a<c)

       if(b<d)

 x=2;

       else

 x=3;

     else

       if(a<d)

 if(b<c)

   x=4;

 else

   x=5;

       else

 x=6;

 else

   x=7;

 printf("x=%d",x);

 getch();

 return 0;

}

         

 


四、实验结果分析与评价 (该部分不够填写.请填写附页)

图一

图二

图三

图四

图五

 


注:实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格


第二篇:c语言 实验报告 范例


程序设计基础实验报告――选择结构程序设计

实验报告

实验题目:选择结构程序设计

实验目的:

(1) 了解C语言表示逻辑量的方法(以0代表“假”以非0

代表“真”)。

(2)

(3)

(4)

(5)

(6) 学会正确使用逻辑运算算符和逻辑表达式。 熟练掌握if语句的使用(包括if语句的嵌套)。 熟练掌握多分支选择语句——switch语句。 结合程序掌握一些简单的算法。 进一步学习调试程序的方法。

实验内容:

本实验要求事先编好解决下面问题的程序,然后上级输入程序并调试运行程序。

(1) 有一函数:

程序设计基础实验报告――选择结构程序设计

(x?1)?x?y??2x?1(1?x?10)

?3x?11x?10 ?

输入x的值,输出y相应的值。用scanf函数输入x的值,求y

x的值(分别为x<1、1?x?10、x?10这三值(第四章第六题) 运行程序,输入

种情况),检查输出y值是否正确。

答:

1)调试通过的程序清单如下:

#include<stdio.h>

void main() {

int x,y;

printf("请输入X:");

scanf("%d",&x);

if(x<1)

y=x;

else if(x<10)

y=2*x-1;

程序设计基础实验报告――选择结构程序设计

else y=3*x-11; printf("y=%d\n",y);

}

3)调试过程出现的问题说明及处理方法:

编译提示信息如下:

Compiling...

c4_4.c

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : error C2059: syntax error : 'bad suffix on number'

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : error C2146: syntax error : missing ';' before identifier 'x'

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : warning C4552: '-' : operator has no effect; expected operator with side-effect

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2181: illegal else without matching if

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2059: syntax error : 'bad suffix on number'

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2146: syntax error : missing ';' before identifier 'x'

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) :

程序设计基础实验报告――选择结构程序设计

warning C4552: '-' : operator has no effect; expected operator with side-effect

执行 cl.exe 时出错.

c4_4.obj - 1 error(s), 0 warning(s) 原因分析:

由于习惯在数学上习惯于用2x表示2*x,导致在这里忽略了“*”,以致程序出现严重错误。

(2) 从键盘输入一个小于1000的正数,

要求输出它的平方根(如平方根不是

整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否小

于1000的正数。若不是,则要求重

新输入。

1)调试通过的程序清单如下:

#include<stdio.h>

#include<math.h>

#define M 1000

int main()

{

程序设计基础实验报告――选择结构程序设计

int i,k;

printf("请输入一个小于%d的整数i:",M); scanf("%d",&i);

if(i>1000) {printf("输入的数据有误,请重新输入:",M);

scanf("%d",&i); }

k=sqrt(i);

printf("%d的平方根的整数部分是%d\n",i,k);

return 0;

}

2)调试通过的运行结果:

3)调试过程出现的问题说明及处理方法: Compiling...

c4_4.c

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) :

程序设计基础实验报告――选择结构程序设计

error C2018: unknown character '0xa3'

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : error C2018: unknown character '0xbb'

F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2146: syntax error : missing ';' before identifier 'scanf' F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(13) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data

执行 cl.exe 时出错.

c4_4.exe - 1 error(s), 0 warning(s)

答:

因为把第十行的“;”在中文模式输入,变成了“;”导致编译错误。

(3) 给出一个百分制成绩,要求输出成绩

等级A,B,C,D,E.90分以上为A,81~89分为B,70~79分为C,60分

~69分为D,60分以下为E。

① 事先编好程序,要求分别用if语句和

程序设计基础实验报告――选择结构程序设计

switch语句来实现。运行程序,并检查结果是否正确。 1)调试通过的程序清单如下: #include<stdio.h> void main() {

int g,s; char ch; printf("\n输入学生的分数:"); scanf("%d",&g); s=g/10; if(s<0||s>10) { switch(s) { case 10: case 9:ch='A';break; case 8:ch='B';break; case 7:ch='C';break; case 6:ch='D';break; printf("\n输入数据错误!\n\n"); else

程序设计基础实验报告――选择结构程序设计

} } default:ch='E'; } printf("\n学生的成绩等级是:%c\n\n",ch); 2)调试通过的运行结果:

3)调试过程出现的问题说明及处理方法:

(1)编译提示信息如下: Compiling...

c4_4.c

c4_4.obj - 0 error(s), 0 warning(s)

(2)连接提示信息如下:

程序设计基础实验报告――选择结构程序设计

Linking...

c4_4.exe - 0 error(s), 0 warning(s)

原因分析:

由于忽略了在程序中加入换行符,导致输出成绩等级和“Press any ey to contine”连在一起。

② 再运行一次程序,输入分数为负值,这显

然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,通知用户“输入数据错误”。程序结束。

答:在编写程序的时候已经考虑到了该情况,第一次编写时已经进行了优化,能够自动处理该情况的出现。以下是运行结果:

程序设计基础实验报告――选择结构程序设计

(4) 输入4个整数,要求按由小到大顺序

输出,在得到正确结果后,修改程序

使之按由大到小的顺序输出。 1) 调试通过的程序清单如下: #include<stdio.h> int main()

{

int a,b,c,d,t; printf("请依次输入四个整数以空格隔开。\n"); scanf("%d%d%d%d",&a,&b,&c,&d); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t;

程序设计基础实验报告――选择结构程序设计

} if(a>d) { } if(b>c) { } if(b>d) { } if(c>d) { t=c; t=b; b=d; d=t; t=b; b=c; c=t; t=a; a=d; d=t;

程序设计基础实验报告――选择结构程序设计

} c=d; d=t; printf("四个整数经从小到大的顺序排列后的结果如下\n");

}

printf("%d,%d,%d,%d\n",a,b,c,d); return 0;

2) 程序运行的结果:

从大到小排列的程序是: 1) 通过排列的程序清单如下: #include<stdio.h>

int main()

{

int a,b,c,d,t; printf("请依次输入四个整数以空格隔开。\n");

程序设计基础实验报告――选择结构程序设计

scanf("%d%d%d%d",&a,&b,&c,&d); if(a<b) { t=a; a=b; b=t; } if(a<c) { } if(a<d) { } if(b<c) { t=b; t=a; a=d; d=t; t=a; a=c; c=t;

程序设计基础实验报告――选择结构程序设计

} b=c; c=t; if(b<d) { } if(c<d) { } printf("四个整数经从大到小的顺序排列后的结果如下t=c; c=d; d=t; t=b; b=d; d=t; \n");

} printf("%d,%d,%d,%d\n",a,b,c,d); return 0;

3) 运行的结果:

程序设计基础实验报告――选择结构程序设计

实验心得:

通过此次实验本人更加熟练的掌握了程序C语言逻辑运算符和逻辑表达式的应用,也深深了解到了,C语言的强大,同时是我对这门语言的兴趣更加深厚。做完本次实验,我纠正了以往的一个观点,学习一门语言不要以为看书看明白了就以为对这方面的知识掌握了,学习语言更为重要的是要会使用,不能仅仅是以为明白就可以了事,合上书本,能够应用这方面的知识写出一个程序来,才能算对它的初步掌握。

更多相关推荐:
分支程序设计实验报告

实验二分支程序设计一实验目的1学习分支程序的设计方法2熟悉在PC机上建立汇编连接调试和运行汇编语言程序的过程二实验环境硬件环境IBMPC及其兼容机软件环境操作系统DOS编辑程序EDIT或其他编辑程序汇编程序MA...

汇编语言实验报告——分支程序设计

汇编语言实验报告——分支程序设计,内容附图。

单片机第二次试验报告——分支程序设计

《微机实验》报告实验名称分支程序设计实验专业班级姓名学号序号联系方式一、任务要求熟练掌握KeilC环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计…

微机原理实验报告——分支程序设计

实验三分支程序设计一实验要求和目的1熟悉汇编语言程序设计结构2熟悉汇编语言分支程序基本指令的使用方法3掌握利用汇编语言实现单分支双分支多分支的程序设计方法二软硬件环境1硬件环境微机CPU486以上500MB以上...

微处理器实验报告分支和循环程序设计

实验四实验题目分支和循环程序设计实验目的1掌握分支程序编写方法2掌握循环程序设计的方法和技巧3学习程序调试的基本过程和方法实验要求1阅读运行并调试已给的分支和循环程序2模仿已给程序分别汇编程序和C51程序实现两...

实验六 分支程序设计实验报告

实验六分支程序设计实验报告通信0704070900813韩一帆一实验目的1掌握分支程序的结构2掌握分支程序的设计调试方法二实验内容假设有一组数据540310051请编一程序判断每个数大于0等于0还是小于0并输出...

实验报告分支结构程序设计

宁德师范学院计算机系实验报告20xx20xx学年第2学期课程名称高级语言程序设计实验名称实验三分支结构程序设计专业年级学号姓名指导教师实验日期20xx2教师批改学生实验报告应在学生提交实验报告10日内

汇编分支程序设计实验四报告

附件2北京理工大学珠海学院实验报告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班级软件4班学号13020xx41025姓名李森指导教师吴方成绩实验题目实验四分支程序设计...

Java程序设计课程上机实验报告模板二

昆明理工大学信息工程与自动化学院学生实验报告(20##20##学年第2学期)课程名称:Java程序设计开课实验室:44420##年4月24日一、上机目的及内容1.实验目的:1)掌握Java语言的基本语法成分,包…

微机原理与接口技术实验指导_3_分支程序设计实验

23分支程序设计实验231实验目的1掌握分支程序的设计方法2掌握宏定义及宏调用的基本方法3了解小写和大写字母的ASCII码表示及其转换方法了解数字及其它字符在的ASCII码表示方法4进一步掌握调试工具的使用方法...

分支程序结构设计实验报告

分支程序结构设计一实验目的和要求1熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法2掌握条件转移无条件转移指令的使用方法3掌握分支程序设计编写调试和运行的方法二实验设备环境及要求MASMEXELINKE...

西邮 分支程序设计实验报告

微机原理实验报告专业班级学号姓名实验三分支程序设计实验一实验目的1掌握分支程序的设计方法2掌握宏定义及宏调用的基本放大3了解小写和大写字母的ASCII码表示及其转换方法了解数字及其他字符的ASCII表示方法4进...

分支程序设计实验报告(28篇)