实验二 选择结构程序设计 实验报告

2018-11-11 21:30

实验二 选择结构程序设计

一、实验目的和要求

1. 掌握关系表达式和逻辑表达式的使用。 2. 熟悉选择结构程序设计。

3. 熟练使用if语句进行程序设计。

4. 使用switch语句实现多分支选择结构。

二、实验设备

PC机 Visual C++6.0

三、实验内容 (一)实验准备

1.从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支(选择)结构、循环结构。 2.If-else语句:

一般形式为: if(表达式) 语句1; else

语句2;

该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句2. 2.switch语句

switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。 (二)实验项目 1. 计算a+|b| #include int main(void) {

int a,b,z;

printf(\ scanf(\ if (b>=0){ b=b; } else{ b=-b; } z=a+b;

printf(\

return 0 ; }

2 判断一个整数是否可以被3和5整除 #include int main(void) {

int a ;

printf(\scanf(\if (a%3==0){

printf(\可以被3整除:\\n\} else{

if (a%5==0){

printf(\可以被5整除:\\n\}

else {

printf(\不可以被5整除,也不可以被3整除:\\n\ } }

3.从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。 #include int main(void) {

int a ;

printf(\ scanf(\ if((0<=a)&&(a<=9)) {

printf(\ } else {

printf(\这个字符不是个整数:\\n\ }

return 0 ; }

4.编写一个程序,其功能为:从键盘输入三个数x、y、z,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。 #include int main(void) {

int x,y,z;

printf (\请输入x,y,z:\\n\ scanf (\ if (x+y==z) {

printf (\ } else {

printf (\ }

return 0; }

5.编写一个程序,其功能为:输入三个整数,输出最大数和最小数。 #include int main(void) {

int a,b,c,x,y;

printf (\请输入三个数字:\\n\ scanf (\ x=0; if (a>b) {

x=a; if (x>c) {

x=x; } else {

x=c; } } else {

x=b; if(x>c) {

x=x; } else {

x=c; }

} y=0;

if (a

y=a; if (y

y=y; }

else {

y=c; } } else {

y=a; if(y>c) {

y=c; } else {

y=y; } }

printf (\最大数是%d,最小值是%d\\n\

return 0; }

6.如下两个线性方程组的两个未知数为x1和x2: ax1+bx2=m cx1+dx2=n

该方程的唯一解为(ad-cb不等于零时):

请编写一个程序,读取a、b、c、d的值,计算x1和x2的值。如果ad-cd等于零,应给出适当的提示信息。

#include int main(void) {

int a,b,c,d,m,n,x1,x2;

printf(\请输入方程组a,b,c,d,m,n\\n\

scanf(\ if(a*d-c*b==0) {

printf(\此方程组无解\\n\ } else {

x1=(m*d-b*n)/(a*d-c*b); x2=(n*a-m*c)/(a*d-b*c);

printf(\此方程组的解为%d和%d\\n\ }

return 0; }

7.某产品生产成本c=c1+mc2,其中c1为固定成本,c2为单位产品可变成本。当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m≥10000时,c1=40000元,c2=5元;编写一个程序,其功能为:分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。 #include int main(void) {

int c,c1,c2,m;

printf(\请输入生产数量m:\\n\ scanf(\ if (m<10000) {

c1=20000; c2=10; } else {

c1=40000; c2=5; }

c=c1+m*c2;

printf(\生产成本为%d\\n\ return 0; }

8.编写一个程序,计算下列函数:

x

y=

x<1 1≤x<10

2x-1

3x-11 X≥10

#include int main(void) {

int x,y;

printf (\ scanf (\ if (x<1) {y=x;} else {

if(x>=10) {y=3*x-11; } else

{y=2*x-1; } }

printf (\return 0; }

9. 编写一个程序,其功能为:从键盘输入一个字符,判别该字符的类别,并输出向相应信息。 #include int main(void) {

char i;

scanf(\ if (i<32)

{printf (\此字符为控制字符\\n\ else {

if((i>='0')&&(i<='9'))

{printf (\此字符为数字字符\\n\ else {

if((i>='A')&&(i<='Z'))

{printf (\此字符为大写字母\\n\ else {

if((i>='a')&&(i<='z'))

{printf (\此字符为小写字母\\n\ else {

printf(\此字符为其他字符\\n\ } } } }

return 0; }

10.编写一个程序,其功能为:从键盘输入一元二次方程ax2+bx+c=0的各项系数a、b、c的值,判断方程实数解的不同情况,分别求解方程,并输出(结果保留两位小数,如无实根给出相应的信息)。 应用如下规则:

(1)若a、b的值为零,则没有解; (2)若a为零,只有一个实数解;

(3)若b2-4ac为负数,则没有实数解;若b2-4ac为正数,有两个实数解;若b2-4ac为零,有两个相等的实数解。 #include #include int main(void) {

float a,b,c; double x1,x2;

printf (\ scanf (\ if((a==0)&&(b==0))

{printf (\此方程没有解\\n\ else {

if(a==0) {

printf(\此方程有一个实根\\n\ else

{if((b*b-4*a*c)<0)

{printf (\此方程无实根\\n\ else {

if((b*b-4*a*c)==0) {x1=((-b)/(2*a));

printf(\此方程有两个相等实根: x1=x2=%lf\\n\ }

else

{x1=(-b+(sqrt(b*b-4*a*c)))/(2*a); x2=(-b-(sqrt(b*b-4*a*c)))/(2*a);

printf(\此方程有两个实根: x1=%lf x2=%lf\\n\ } } } }

return 0; }

11.编写程序,输入三角形三边 a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。 #include int main(void) {

int a,b,c;

printf(\ scanf(\ if((a+b>c)&&(a+c>b)&&(b+c>a)) {

if(a==b&&b==c&&a==c)

{printf(\能构成等边三角形\\n\ } else {

if(a==b||b==c||a==c)

{printf(\能构成等腰三角形\\n\ } else {

if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b) {printf(\能构成直角三角形\\n\ } else

{printf(\能构成一般三角形\\n\ } } } } else

{printf(\不能构成三角形\\n\

}

return 0; }

12.某个电力公司对其用户的收费规定如下: 用电数量 收费标准 0~200 x*0.5元

201~400 100+(x-200)*0.65元 401~600 230+(x-400)*0.8元 601以上 390+(x-600)*1.0元

编写程序,对于一个输入的用电数量,计算用户的缴费额。 #include int main(void) {

double x,y;

printf(\ scanf(\ if(x<0)

{printf(\输入的数据有误!\\n\ else {

if(x>=0&&x<=200) {y=x*0.5; } else {

if(x>=201&&x<=400) {y=100+(x-200)*0.65;

} else {

if(x>=401&&x<=600) {y=230+(x-400)*0.8; } else

{y=390+(x-600)*1.0; } }

printf(\ }

return 0; }

13某个服装展示厅对所卖商品打折规定如下:

------------------------------------------------------------ 购买总额 折扣

------------------------------------------- 机加工产品 手工产品 0~100 - 5% 101~200 5% 7.5% 201~300 7.5% 10.0% 大于300 10.0% 15.0%

-------------------------------------------------------------- 编写程序输入购买总额,计算并输顾客实际应付的货款。 #include \int main(void) {

double x,y; int lb;

printf(\请输入顾客购买总额x:\\n\ scanf(\

printf(\请输入顾客购买类别lb:\\n\ scanf(\ if(x<0)

printf(\输入购买总额数据有误!\ else {

if(x>=0&&x<=100) {

if(lb==0) y=x;

else if(lb==1) y=x*0.05; else

printf(\输入购买类别数据有误!\ }

else if(x>=101&&x<=200) {

if(lb==0) y=x*0.5; else if(lb==1) y=x*0.075; else

printf(\输入购买类别数据有误!\ }

else if(x>=201&&x<=300) {

if(lb==0)

y=x*0.075; else if(lb==1) y=x*0.1; else

printf(\输入购买类别数据有误!\ }

else {

if(lb==0) y=x*0.1; else if(lb==1) y=x*0.15; else

printf(\输入购买类别数据有误!\ }

printf(\ }

return 0; }

14编程在屏幕上显示一张如下所示的时间表: *******Time******* 1morning 2afternoon 3night

Please enter your choice:

根据用户输入的时间序号显示相应的问候信息,选择1时显示“Good morning”, 选择2时显示“Good afternoon”, 选择3时显示“Good night”,对于其他选择显示“Selection error!”。 #include int main(void) {

int xh;

printf(\ printf(\ printf(\ printf(\

printf(\请输入您的选择(1、2、3):\ scanf(\ switch(xh) {

case 1: printf(\ case 2: printf(\ case 3: printf(\

default: printf(\ }

return 0; }

15编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2

计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/) #include int main(void) {

float x,y,z; char op;

printf(“请输入表达式:”); scanf(“%f,%c,%f”,&x,&op,&y); if (op==‘+’) z=x+y;

if (op==‘-’) z=x-y;

if(op==‘*’) z=x*y;

if (op==‘/’)

{if (y!=0) z=x/y;

else printf(“除数为0”);}

printf(“%f%c%f=%f\\n”,x,op,y,z); }

#include void main()

{ float x,y,z; char op;

printf(“请输入表达式:”); scanf(“%f,%c,%f”,&x,&op,&y); switch(op) {

case ‘+’: z=x+y; case ‘-’: z=x-y; case ‘*’: z=x*y;

case ‘/’: {if (y!=0) z=x/y; else printf(“除数为0”);} }

printf(“%f%c%f=%f\\n”,x,op,y,z); return 0; }

16输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E 方法一:(用if语句的嵌套) ##include int main(void) {

float score;

printf(\请输入成绩:\ scanf(\

if(score>=0&&score<=100) if(score>=90)

printf(\ else if(score>=80)

printf(\ else if(score>=70)

printf(\ else if(score>=60)

printf(\ else printf(\ else printf(\成绩输入有误!\return 0; }

方法二:用switch语句 #include int main(void) {

float score; int p;

printf(\请输入成绩:\ scanf(\ p=(int)(score/10);

if(score>=0&&score<=100) switch(p) {

case 10:

case 9: printf(\ case 8: printf(\ case 7: printf(\ case 6: printf(\ default: printf(\

}

else printf(\成绩输入有误!\return 0; }

四、实验小结

通过本次实验我进一步熟悉了C语言操作环境,学习了两种条件语句,弄清了语句格式和使用方法。学会了分别使用使用if嵌套语句和switch语句实现功能,其中在使用if嵌套时要注意分清层次,明白else所对应的应当是离得最近的if语句,防止发生逻辑错误。条件判断语句可以结合逻辑运算符更好得实现。


实验二 选择结构程序设计 实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:4-3-3_圆与扇形[1].题库教师版.doc

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: