实验二选择结构程序设计一、实验目的和要求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=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("此方程组的解为%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.编写一个程序,计算下列函数:y =x x<12x-1 1≤x<10 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;}elseif(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元编写程序,对于一个输入的用电数量,计算用户的缴费额。