在本实例中,使用条件运算符和逻辑运算符构造表达式,通过输出函数显示表达式的结果,根据结果分析表达式的计算过程。
#include
int main()
{
int m=2,n=3,a=1,b=2;
int x,y;
x=(m=a>b)&&(n=a
printf("x=%d,m=%d,n=%dn",x,m,n);
y=(m=a>b)||(n=a
printf("y=%d,m=%d,n=%dn",y,m,n);
return 0;
}
编程实现,输入两个整数,输出这两个数中较大的数
例题分析
可定义三个变量(a,b和max)用来存放输入的两个整数和较大数。从键盘输入两个整数,首先假设a是较大数,将a的值赋给max,然后使用if语句进行条件判断,如果a小于b,则b为较大数,即将b的值赋给max。
#include
int main()
{
int a,b,max;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
max=a;
if(a
max=b;
printf("两数中较大的数为:%dn",max);
return 0;
}
编程实现,输入两个整数,输出这两个数中较大的数(用if-else语句实现)。
问题分析
本实例的功能与例5-2相同,都是求两数中较大数。使用if-else语句进行条件判断,如果a大于b,则a为较大数,输出a的值,否则b为较大数,输出b的值。、
#include
int main()
{
int a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%dn",a);
else
printf("max=%dn",b);
return 0;
}
编写程序,要求输入三角形的三条边,计算三角形的面积并输出。
问题分析
在例4-7中我们实现了求解三角形面积的程序,但还有两个隐含的问题存在:一是输入的三个数都必须大于0,否则无意义;二是输入的三个数必须满足两数之和大于第三个数,否则构不成三角形,即也是无意义的。所以我们需要先判断三条边是否都大于0并且任意两边之和是否大于第三边,如果满足条件,可以构成三角形,然后再计算三角形的面积,否则不进行计算并输出提示信息。
#include
#include
int main()
{
float a,b,c,s,area;
printf("请输入三角形三条边:n");
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%fn",area);
}
else
printf("输入的三条边不能构成三角形n");
return 0;
}
学生成绩可分为百分制和五级制,根据输入的百分制成绩score,转换成相应的五级制成绩后输出,百分制与五级制的对应关系如表所示。
问题分析
#include
int main()
{
int score;
printf("请输入成绩:");
scanf("%d",&score);
if(score>100||score<0)
printf("输入数据无意义n");
else if(score>=90)
printf("优n");
else if(score>=80)
printf("良n");
else if(score>=70)
printf("中n");
else if(score>=60)
printf("及格n");
else
printf("不及格n");
return 0;
}
编程实现,从键盘上输入1~12之间的数字时,显示对应月份,当输入数字不在1~12的范围内时,输出“错误!”。
问题分析
这是一道典型的可以利用多分支选择语句的题目,可以定义整型变量a,使用switch语句判断整型变量a的值,利用case语句检验a值的不同情况;如果a的值不是case中所检验列出的情况,那么利用default语句输出“Error!”。
#include
int main()
{
int a;
printf("Please enter an integer :");
scanf("%d",&a);
switch(a)
{
case 1:printf("Januaryn");break;
case 2:printf("Februaryn");break;
case 3:printf("Marchn");break;
case 4:printf("April n");break;
case 5:printf("Mayn");break;
case 6:printf("Junen");break;
case 7:printf("Julyn");break;
case 8:printf("Augustn");break;
case 9:printf("Septembern");break;
case 10:printf("Octobern");break;
case 11:printf("Novembern");break;
case 12:printf("Decembern");break;
default:printf("Error!n"); break;
}
使用switch语句实现例5-5中百分制与等级制的转换。
问题分析
定义整型变量score,先用if语句判断数值是否在0~100之间,如果是,就使用switch语句判断score/10的值,利用case语句检验score/10值的不同情况,并输出相关等级;否则输出错误提示信息。
#include
int main()
{
int score;
printf("Please enter score:");
scanf("%d",&score);
if(score>100||score<0)
printf("输入数据无意义!n");
else
switch(score/10)
{
case 10:
case 9:printf("优n");break;
case 8:printf("良n");break;
case 7:printf("中n");break;
case 6:printf("及格n");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("不及格n");break;
}
return 0;
}
编程实现,根据任一年的公元年号,判断该年是否是闰年。
#include
int main()
{
int year,leap;
printf("请输入年号:");
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap)
printf("%d 是闰年n",year);
else
printf("%d 不是闰年n",year);
return 0;
}
某加油站有89号、92号和95号三种汽油,售价分别为5.88、6.28、6.68(元/升),提供了“加油员加油”或“自助加油”两个服务等级,这样用户可以得到2%或5%的优惠。试编程实现针对用户输入加油量x,汽油的品种y和服务的类型z,输出用户应付的金额。
问题分析
本例题最终要根据所输入的汽油类型和服务等级来计算应付的金额,应付金额=单价*数量*(1-折扣数),因此,问题的关键在于要根据汽油类型确定单价和根据服务类型确定折扣。
本例可用switch语句进行多分支选择,程序流程图如图所示,首先输入x、y和z的值,根据输入的y值判断选择的是哪种类型的汽油,如输入的是a即为89号汽油,将单价值5.88赋给变量m1,以此类推;随后用同样的方法根据输入的z值判断是哪种服务等级;最后计算出总金额后输出。
#include
int main()
{
float x,m1,m2,m;
char y,z;
printf("输入要加哪种类型的汽油,a代表89号,b代表92号,c代表95号n");
scanf("%c",&y);
getchar();
printf("输入进行哪种加油服务,m代表加油员加油,e代表自助加油n");
scanf("%c",&z);
getchar();
printf("输入要加油的数量n");
scanf("%f", &x);
switch(y)
{
case 'a':m1=5.88;break;
case 'b':m1=6.28;break;
case 'c':m1=6.68;break;
}
switch(z)
{
case 'm':m2=0.02;break;
case 'e':m2=0.05;break;
}
m=x*m1*(1-m2);
printf("花费的金额:%.2fn",m);
return 0;
}
求ax2+bx+c=0方程的解。
一元二次方程求解主要有以下几种情况。
(1)当a=0时,不是一元二次方程,为一元一次方程,x的值为-c/b。
(2)当b2-4ac=0时,有两个相等的实数根,x的值为x=-b/(2*a)。
(3)当b2-4ac>0时,有两个不等的实数根,分别是 。
(4)当b2-4ac<0时,有两个共轭复数根。可以用p+qi和p-qi的形式输出复数根,其中,p=-b/(2*a),q=
#include
#include
int main()
{
double a,b,c,disc,x,x1,x2,p,q;
printf("请输入一元二次方程中a,b,c的值用逗号隔开n");
scanf("%lf,%lf,%lf",&a,&b,&c);
if(a==0)
{
x=-c/b;
printf("该方程为一元一次方程,x=%8.4fn",x);
}
else
{
disc=b*b-4*a*c;
if(disc==0)
{
x=-b/(2*a);
printf("该方程有两个相同的根,即x=%8.4fn",x);
}
else
if(disc>0)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("该方程有两个实数根:%8.4f和%8.4fn",x1,x2);
}
else
{
p=-b/(2*a);
q=sqrt(-disc)/(2*a);
printf("该方程有两个共轭复数根,分别为:n");
printf("%8.4f+%8.4fin",p,q);
printf("%8.4f-%8.4fin",p,q);
}
}
return 0;
}
在本实例中,使用条件运算符和逻辑运算符构造表达式,通过输出函数显示表达式的结果,根据结果分析表达式的计算过程。
#include
int main()
{
int m=2,n=3,a=1,b=2;
int x,y;
x=(m=a>b)&&(n=a
printf("x=%d,m=%d,n=%dn",x,m,n);
y=(m=a>b)||(n=a
printf("y=%d,m=%d,n=%dn",y,m,n);
return 0;
}
编程实现,输入两个整数,输出这两个数中较大的数
例题分析
可定义三个变量(a,b和max)用来存放输入的两个整数和较大数。从键盘输入两个整数,首先假设a是较大数,将a的值赋给max,然后使用if语句进行条件判断,如果a小于b,则b为较大数,即将b的值赋给max。
#include
int main()
{
int a,b,max;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
max=a;
if(a
max=b;
printf("两数中较大的数为:%dn",max);
return 0;
}
编程实现,输入两个整数,输出这两个数中较大的数(用if-else语句实现)。
问题分析
本实例的功能与例5-2相同,都是求两数中较大数。使用if-else语句进行条件判断,如果a大于b,则a为较大数,输出a的值,否则b为较大数,输出b的值。、
#include
int main()
{
int a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%dn",a);
else
printf("max=%dn",b);
return 0;
}
编写程序,要求输入三角形的三条边,计算三角形的面积并输出。
问题分析
在例4-7中我们实现了求解三角形面积的程序,但还有两个隐含的问题存在:一是输入的三个数都必须大于0,否则无意义;二是输入的三个数必须满足两数之和大于第三个数,否则构不成三角形,即也是无意义的。所以我们需要先判断三条边是否都大于0并且任意两边之和是否大于第三边,如果满足条件,可以构成三角形,然后再计算三角形的面积,否则不进行计算并输出提示信息。
#include
#include
int main()
{
float a,b,c,s,area;
printf("请输入三角形三条边:n");
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%fn",area);
}
else
printf("输入的三条边不能构成三角形n");
return 0;
}
学生成绩可分为百分制和五级制,根据输入的百分制成绩score,转换成相应的五级制成绩后输出,百分制与五级制的对应关系如表所示。
问题分析
#include
int main()
{
int score;
printf("请输入成绩:");
scanf("%d",&score);
if(score>100||score<0)
printf("输入数据无意义n");
else if(score>=90)
printf("优n");
else if(score>=80)
printf("良n");
else if(score>=70)
printf("中n");
else if(score>=60)
printf("及格n");
else
printf("不及格n");
return 0;
}
编程实现,从键盘上输入1~12之间的数字时,显示对应月份,当输入数字不在1~12的范围内时,输出“错误!”。
问题分析
这是一道典型的可以利用多分支选择语句的题目,可以定义整型变量a,使用switch语句判断整型变量a的值,利用case语句检验a值的不同情况;如果a的值不是case中所检验列出的情况,那么利用default语句输出“Error!”。
#include
int main()
{
int a;
printf("Please enter an integer :");
scanf("%d",&a);
switch(a)
{
case 1:printf("Januaryn");break;
case 2:printf("Februaryn");break;
case 3:printf("Marchn");break;
case 4:printf("April n");break;
case 5:printf("Mayn");break;
case 6:printf("Junen");break;
case 7:printf("Julyn");break;
case 8:printf("Augustn");break;
case 9:printf("Septembern");break;
case 10:printf("Octobern");break;
case 11:printf("Novembern");break;
case 12:printf("Decembern");break;
default:printf("Error!n"); break;
}
使用switch语句实现例5-5中百分制与等级制的转换。
问题分析
定义整型变量score,先用if语句判断数值是否在0~100之间,如果是,就使用switch语句判断score/10的值,利用case语句检验score/10值的不同情况,并输出相关等级;否则输出错误提示信息。
#include
int main()
{
int score;
printf("Please enter score:");
scanf("%d",&score);
if(score>100||score<0)
printf("输入数据无意义!n");
else
switch(score/10)
{
case 10:
case 9:printf("优n");break;
case 8:printf("良n");break;
case 7:printf("中n");break;
case 6:printf("及格n");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("不及格n");break;
}
return 0;
}
编程实现,根据任一年的公元年号,判断该年是否是闰年。
#include
int main()
{
int year,leap;
printf("请输入年号:");
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap)
printf("%d 是闰年n",year);
else
printf("%d 不是闰年n",year);
return 0;
}
某加油站有89号、92号和95号三种汽油,售价分别为5.88、6.28、6.68(元/升),提供了“加油员加油”或“自助加油”两个服务等级,这样用户可以得到2%或5%的优惠。试编程实现针对用户输入加油量x,汽油的品种y和服务的类型z,输出用户应付的金额。
问题分析
本例题最终要根据所输入的汽油类型和服务等级来计算应付的金额,应付金额=单价*数量*(1-折扣数),因此,问题的关键在于要根据汽油类型确定单价和根据服务类型确定折扣。
本例可用switch语句进行多分支选择,程序流程图如图所示,首先输入x、y和z的值,根据输入的y值判断选择的是哪种类型的汽油,如输入的是a即为89号汽油,将单价值5.88赋给变量m1,以此类推;随后用同样的方法根据输入的z值判断是哪种服务等级;最后计算出总金额后输出。
#include
int main()
{
float x,m1,m2,m;
char y,z;
printf("输入要加哪种类型的汽油,a代表89号,b代表92号,c代表95号n");
scanf("%c",&y);
getchar();
printf("输入进行哪种加油服务,m代表加油员加油,e代表自助加油n");
scanf("%c",&z);
getchar();
printf("输入要加油的数量n");
scanf("%f", &x);
switch(y)
{
case 'a':m1=5.88;break;
case 'b':m1=6.28;break;
case 'c':m1=6.68;break;
}
switch(z)
{
case 'm':m2=0.02;break;
case 'e':m2=0.05;break;
}
m=x*m1*(1-m2);
printf("花费的金额:%.2fn",m);
return 0;
}
求ax2+bx+c=0方程的解。
一元二次方程求解主要有以下几种情况。
(1)当a=0时,不是一元二次方程,为一元一次方程,x的值为-c/b。
(2)当b2-4ac=0时,有两个相等的实数根,x的值为x=-b/(2*a)。
(3)当b2-4ac>0时,有两个不等的实数根,分别是 。
(4)当b2-4ac<0时,有两个共轭复数根。可以用p+qi和p-qi的形式输出复数根,其中,p=-b/(2*a),q=
#include
#include
int main()
{
double a,b,c,disc,x,x1,x2,p,q;
printf("请输入一元二次方程中a,b,c的值用逗号隔开n");
scanf("%lf,%lf,%lf",&a,&b,&c);
if(a==0)
{
x=-c/b;
printf("该方程为一元一次方程,x=%8.4fn",x);
}
else
{
disc=b*b-4*a*c;
if(disc==0)
{
x=-b/(2*a);
printf("该方程有两个相同的根,即x=%8.4fn",x);
}
else
if(disc>0)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("该方程有两个实数根:%8.4f和%8.4fn",x1,x2);
}
else
{
p=-b/(2*a);
q=sqrt(-disc)/(2*a);
printf("该方程有两个共轭复数根,分别为:n");
printf("%8.4f+%8.4fin",p,q);
printf("%8.4f-%8.4fin",p,q);
}
}
return 0;
}
。
。



