实验二选择结构程序设计一、实验目的和要求1.掌握关系表达式和逻辑表达式的使用。
2.熟悉选择结构程序设计。
3.熟练使用if语句进行程序设计。
4.使用switch语句实现多分支选择结构二、实验设备PC 机Visual C++6.0三、实验内容(一)实验准备1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环结构。
2.lf-else 语句:一般形式为:if (表达式)语句1 ;else语句2 ;该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。
首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句 2. 2.switch 语句switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。
(二)实验项目1.计算a+|b|#in clude<stdio.h>int main (void){int a,b, z;prin tf("Please en ter a,b:\n");sca nf("%d,%d",&a,&b);if (b>=0)tb=b;prin tf("%d+%d=%d\n",a,b,z);return 0 ;}2判断一个整数是否可以被3和5整除#in clude<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;} } elsey=a;if(y>c){y=c;}else{y=y;}}printf (" 最大数是%d,最小值是%d\n",x,y);return 0;}6.如下两个线性方程组的两个未知数为x1 和x2:ax1+bx2=mcx1+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(" 此方程组的解为%4和%d\n",x1,x2);}return 0;}7.某产品生产成本c=c1+mc2其中cl为固定成本,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 x<1y= 2x-1 1 < x<103x-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%编写程序输入购买总额,计算并输顾客实际应付的货款。