第1页/共9页西安财经学院信息学院《程序设计基础》实验报告实验名称实验三选择结构程序设计教室407实验室实验日期2011/4/28一、实验目的及要求(一)掌握C语言关系表达式和逻辑表达式的运算和使用;(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计二、实验环境Visualc++6.0三、实验内容(一)分析下面程序,掌握关系及逻辑表达式的运算规则(二)输入下面两段程序并运行,掌握case语句中break语句的作用。(三)完善程序,从键盘上输入x的值,按下式计算y的值。(四)编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。(五)下面程序运行时从键盘上分别输入(20,15),(15,20),写出运行结果。(六)编写程序,给出一个不多于3位的正整数n,要求:(1)求出它是几位数;(2)分别打印出每一位数字(数字之间加一个空格);(3)按逆序打印出各位数字(数字之间加一个空格)。(七)写出与表达式z=(x=y?x:y)等价的if语句,并上机验证。四、实验步骤实验一:/*c3-1.c关系及逻辑表达式运算规则*/#includestdio.hvoidmain(){inta=3,b=5,c=8;if(a++3&&c--!=0)b=b+1;printf(a=%d\tb=%d\tc=%d\n,a,b,c);}姓名袁杨洋学号1005230132班级电商1001班指导教师王浩鸣第2页/共9页实验二:1./*c3-2.c*//*不含break的switch*/#includestdio.hvoidmain(){inta,m=0,n=0,k=0;scanf(%d,&a);switch(a){case1:m++;case2:case3:n++;case4:case5:k++;}printf(%d,%d,%d\n,m,n,k);}2./*c3-3.c*//*含break的switch*/#includestdio.hvoidmain(){inta,m=0,n=0,k=0;scanf(%d,&a);switch(a){case1:m++;break;case2:case3:n++;break;case4:case5:k++;}printf(%d,%d,%d\n,m,n,k);}实验三(填空)/*c3-4.cif语句实现的多分支结构*/#includestdio.hvoidmain(){floatx,y;第3页/共9页Scanf(“%f”,&x);if(x1)y=x;elseif(x=1&&x10)y=2*x-1;elsey=3*x-11;printf(y=%f\n,y);}实验四(编程题)/*输入一个百分制成绩,输出等级*/#includestdio.hvoidmain(){intgrade,c;charA,B,C,D,E;scanf(%d,&grade);c=grade/10;switch(c){case10:case9:printf(A\n);break;case8:printf(B\n);break;case7:printf(C\n);break;case6:printf(D\n);break;default:printf(E\n);break;}}实验五/*c3-5.c分支结构中的复合语句*/#includestdio.h第4页/共9页voidmain(){inta,b,t;t=0;scanf(%d,%d,&a,&b);if(ab)t=a;a=b;b=t;printf(a=%d,b=%d\n,a,b);}实验六(编程题)/*输入一个三位以内的正整数,输出其为几位数,各位数字是多少,相反顺序输出该数字*/#includestdio.hvoidmain(){intg,b,s,n;/*g表示个位数字,b表示百位数字,s表示十位数字*/printf(输入一个三位以内的正整数:);scanf(%d,&n);g=n%10;s=((n%100))/10;b=n/100;printf(%d%d%d\n,b,s,g);if(b!=0)printf(这是一个三位数.\n);elseif(s!=0)printf(这是一个两位数.\n);elseprintf(这是一个一位数.\n);第5页/共9页printf(%d%d%d\n,g,s,b);}实验七/*用条件语句将X,Y的较大值赋给Z*/#includestdio.hvoidmain(){intx,y,z;scanf(%d,%d,x,y);z=(x=y?x:y);printf(z=%d\n,z);}/*用if选择结构将X,Y较大值赋给Z*/#includestdio.hvoidmain(){intx,y,z;scanf(%d,%d,&x,&y);if(x=y)z=x;elsez=y;printf(z=%d\n,z);}五、调试过程及实验结果实验一、运行结果实验二、当switch不含break时第6页/共9页当switch含break时实验三第7页/共9页实验四实验五、实验六实验七、if语句或条件表达式均可输出相同结果将较大值赋予Z第8页/共9页六、总结(可选)(一)、对于实验三,if的表达式不能用习惯上的数学式子,比如,1x10;必须用逻辑表达式;而x1则可以,因为关系表达式是if的表达式中允许的。且乘号在C语言中必须表示*,不能省略。(二)对于实验四,switch语句中case的常量表达式的确定很关键,它可以自行定义,却也容易矛盾冲突。(三)对于实验五,if语句的语句部分结束应该用“;”,未结束且有多条应该用花括号括起来,在此实验中极易将t=a;a=b;b=t;认为均是if的语句部分而计算错误,实际上t=a;即表示该语句结束。(四)在实验过程中,感觉有程序文件间某种关联性的错误尚不明确,导致无语法错误的程序也不能运行。七、[源程序清单](可选)第9页/共9页