第四章选择结构程序设计4.1~4.6
第四章 选择结构程序设计
例4.1 解方程ax^2+bx+c=0的根。由键盘输入a,b,c。a,b,c的值任意,并不保证bb-4ac>=0。bb-4ac>=0时,就计算并输出两个方程的两个实根,如果b*b-4ac<0,就输出“此方程无实根”的信息。
例4.2 输入两个实数,按由大到小的顺序输出这两个数
例4.3 输入3个数a,b,c,要求按由小到大的顺序输出
例4.4 输入一个字符,判别它是否为大写字母,如果是,转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
例4.5 有一阶跃函数:y=-1(x<0)y=0(x=0)y=1(x>0)编一程序,输入一个x值,要求输出相应的y值。
方法一
方法二
例4.6 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分, C等为60~69分,D等为60分以下。成绩的等级由键盘输入。)
##例4.1题目要求解得ax2+bx+c=0方程的根。由键盘输入a,b,c.假设a,b,c的值任意,并不保证判别式大于等于0,若大于等于0,就计算输出两个根,若小于0,输出无实根。
#include<stdio.h> #include<math.h> int main() { double a,b,c,disc,x1,x2,p,q; scanf("%lf%lf%lf",&a,&b,&c); disc=b*b-4*a*c; if(disc<0) printf("This equation hasn't real roots\n"); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q;x2=p-q; printf("real roots:\nx1=%7.2f\nx2=%7.2f\n",x1,x2); } return 0; }
运行结果如下:
##例4.2输入两个实数,安由小到大的顺序输出这两个数。
#include<stdio.h> int main() float a,b,t; scanf("%f,%f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; }
运行结果如下:
##例4.3输入三个数a,b,c,按由小到大的顺序输出。
#include<stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
运行结果如下:
##例4.4输入一个字符,判别它是否为大写字母,如果是,将它转换为小写字母:如果不是,不转换。然后输出最后得到的字符。
#include<stdio.h> int main() { char ch; scanf("%c",&ch); ch=(ch>='A'&&ch<='Z')?(ch+32):ch; printf("%c\n",ch); return 0; }
运行结果如下:
##例4.5有一阶跃函数
y=1(x<0)
y=0(x=0)
y=-1x(x>0)编译程序,输入一个X值,要求输出相应的Y值。
#include<stdio.h> int main() { int x,y; scanf("%d",&x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf("x=%d,y=%d\n",x,y); return 0; }
运行结果如下:
##例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70—84分,C等为60—69分,D等为60分以下。成绩的等级由键盘输入。
#include<stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case'A':printf("85~100\n");break; case'B':printf("70~84\n");break; case'C':printf("60~69\n");break; case'D':printf("<60\n");break; default:printf("enter data error!\n"); } return 0; }
运行结果如下: