例4.7 用switch 语句处理菜单命令
#include<stdio.h>
int main()
{void actionl(int,int),action2(int,int);
char ch;
int a=15,b=23;
ch=getchar();
switch(ch)
{case’a’:
case’A’:action1(a,b);break;
case’b’:
case’B’:action2(a,b);break;
default:putchar(’\a’);
}
return 0;
}
void actionl(int x,int y)
{printf(“x+y=%d\n”,x+y);}
void action2(int x,int y)
{printf("xy=%d\n",xy);}
例4.8 写一程序,判断某一年是否为闰年
#include<stdio.h>
int main()
{
int year ,leap;
printf(“enter year:”);scanf("%d",&year);
if(year%40)
{if(year%1000)
{
if(year%400==0)
leap=1;
else leap=0;
}
else leap=1;
}
else leap=0;
if(leap)
printf("%d is “,year);
else printf(”%d is not ",year);
printf(“a leap year.\n”);
return 0;
}
例4.9 求ax^2+bx+c=0方程的解
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,realpart,imagpart,le;
scanf("%lf,%lf,%lf",&a,&b,&c);
printf(“The equation:”);
if(fabs(a)<= le -6)
printf(“is not a quadratic\n”);
else
{
disc=bb-4ac;
if(fabs(disc)<= le -6)
printf(“has two equal roots:%8.4f\n”,-b/(2a));
else
if(disc> le -6)
{
x1=(-b+sqrt(disc))/(a2);
x1=(-b-sqrt(disc))/(a2);
printf(“has distinct real :%8.4f and %8.4f\n”,x1,x2);
}
else
{
realpart=-b/(a2);
imagpart=sqrt(-disc)/(a2);
printf(“has complex roots:\n”);
printf("%8.4f+%8.4fi\n",realpart,imagpart);
printf("%8.4f-%8.4fi\n",realpart,imagpart);
}
}
return 0;
}
例4.10
#include<stdio.h>
int main()
{
int c,s;
float p,w,d,f;
printf(“please enter price,weight,discount:”);
scanf("%f,%f,%d",&p,&w,&s);
if(s>=3000)c=12;
else c=s/250;
switch©
{
case 0:d=0;break;
case 1:d=2;break;
case 2:
case 3:d=5;break;
case 4:
case 5:
case 6:
case 7:d=8;break;
case 8:
case 9:
case 10:
case 11:d=10;break;
case 12:d=15;break;
}
f=pws*(1-d/100);
printf(“freight=%10.2f\n”,f);
return 0;
}