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

实验二 选择结构程序设计

一、实验目的和要求

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<stdio.h>

int main(void)

{

int a,b,z;

printf("Please enter a,b:\n");

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

if (b>=0){

b=b;

}

else{

b=-b;

}

z=a+b;

printf("%d+%d=%d\n",a,b,z);

return 0 ;

}

2 判断一个整数是否可以被3和5整除

#include<stdio.h>

int main(void)

{

int a ;

printf("Please enter a:\n");

scanf("%d",&a);

if (a%3==0){

printf("a可以被3整除:\n");

}

else{

if (a%5==0){

printf("a可以被5整除:\n");

}

else {

printf("a不可以被5整除,也不可以被3整除:\n");

}

}

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

#include<stdio.h>

int main(void)

{

int a ;

printf("please enter a char:\n");

scanf("%d",&a);

if((0<=a)&&(a<=9))

{

printf("This char is %d:\n",a);

}

else

{

printf("这个字符不是个整数:\n");

}

return 0 ;

}

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

#include<stdio.h>

int main(void)

{

int x,y,z;

printf ("请输入x,y,z:\n");

scanf ("%d,%d,%d",&x,&y,&z);

if (x+y==z)

{

printf ("x+y=z\n");

}

else

{

printf ("x+y!=z\n");

}

return 0;

}

5.编写一个程序,其功能为:输入三个整数,输出最大数和最小数。 #include<stdio.h>

int main(void)

{

int a,b,c,x,y;

printf ("请输入三个数字:\n");

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

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<b)

{

y=a;

if (y<c)

{

y=y;

}

else

{

y=c;

}

}

else

{

y=a;

if(y>c)

{

y=c;

}

else

{

y=y;

}

}

printf ("最大数是%d,最小值是%d\n",x,y);

return 0;

}

6.如下两个线性方程组的两个未知数为x1和x2:

ax1+bx2=m

cx1+dx2=n

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

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

#include<stdio.h>

int main(void)

{

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

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

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

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",x1,x2);

}

return 0;

}

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

#include<stdio.h>

int main(void)

{

int c,c1,c2,m;

printf("请输入生产数量m:\n");

scanf("%d",&m);

if (m<10000)

{

c1=20000;

c2=10;

}

else

{

c1=40000;

c2=5;

}

c=c1+m*c2;

printf("生产成本为%d\n",c);

return 0;

}

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

x

y= x<1 1≤x<10 2x-1 3x-11 X≥10

#include<stdio.h>

int main(void)

{

int x,y;

printf ("Plesse input a x :\n");

scanf ("%d",&x);

if (x<1)

{y=x;}

else

{

if(x>=10)

{y=3*x-11;

}

else

{y=2*x-1;

}

}

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

return 0;

}

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

#include<stdio.h>

int main(void)

{

char i;

scanf("%c",&i);

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 <stdio.h>

#include <math.h>

int main(void)

{

float a,b,c;

double x1,x2;

printf ("Please input a,b,c\n");

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

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",x1); }

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",x1,x2); }

}

}

}

return 0;

}

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

int main(void)

{

int a,b,c;

printf("piease input a,b,c:\n");

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

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<stdio.h>

int main(void)

{

double x,y;

printf("piease input x:\n");

scanf("%lf",&x);

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("y=%lf\n",y); }

}

return 0;

}

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

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

------------------------------------------- 机加工产品 手工产品

0~100 - 5%

101~200 5% 7.5%

201~300 7.5% 10.0%

大于300 10.0% 15.0%

-------------------------------------------------------------- 编写程序输入购买总额,计算并输顾客实际应付的货款。

#include "stdio.h"

int main(void)

{

double x,y;

int lb;

printf("请输入顾客购买总额x:\n");

scanf("%lf",&x);

printf("请输入顾客购买类别lb:\n");

scanf("%d",&lb);

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("x=%lf y=%lf\n",x,y);

}

return 0;

}

14编程在屏幕上显示一张如下所示的时间表:

*******Time*******

1morning

2afternoon

3night

Please enter your choice:

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

#include<stdio.h>

int main(void)

{

int xh;

printf("\n\n*******Time*******\n");

printf("1 morning \n");

printf("2 afternoon \n");

printf("3 night \n");

printf("\n\n请输入您的选择(1、2、3):");

scanf("%d",&xh);

switch(xh)

{

case 1: printf("\nGood morning\n");break;

case 2: printf("\nGood atfernoon\n");break;

case 3: printf("\nGood night\n");break;

default: printf("\nSelection error!\n");break;

}

return 0;

}

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

计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/) #include<stdio.h>

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 <stdio.h>

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<stdio.h>

int main(void)

{

float score;

printf("请输入成绩:");

scanf("%f",&score);

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

if(score>=90)

printf("%f A",score);

else if(score>=80)

printf("%f B",score);

else if(score>=70)

printf("%f C",score);

else if(score>=60)

printf("%f D",score);

else printf("%f E",score);

else printf("成绩输入有误!");

return 0;

}

方法二:用switch语句

#include<stdio.h>

int main(void)

{

float score;

int p;

printf("请输入成绩:");

scanf("%f",&score);

p=(int)(score/10);

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

switch(p)

{

case 10:

case 9: printf("%f A",score);break; case 8: printf("%f B",score);break; case 7: printf("%f C",score);break; case 6: printf("%f D",score);break; default: printf("%f E",score);

}

else printf("成绩输入有误!");

return 0;

} 四、实验小结

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

相关推荐