y=sqrt(a*a-x*x);
else
y=0;
else
y=x-1;
printf("x=%g,a=%g,y=%g\n",x,a,y);
}
7、编写一个程序,判断从键盘上输入的一个年份是否为闰年?
方法一:
#include
#include
voidmain()
{intyear;
clrscr();
printf("Pleaseinputayear:
\n");
scanf("%d",&year);
if(year%4==0&&year%100!
=0||year%400==0)
printf("%disaleapyear\n",year);
else
printf("%disnotaleapyear\n",year);}
方法二:
(用ifif结构表达)
#include
#include
voidmain()
{intyear,leap;
clrscr();
printf("Pleaseinputayear:
\n");
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==1)
printf("%disaleapyear\n",year);
else
printf("%disnotaleapyear\n",year);}
方法三:
(用ifelseif结构表达)
#include
#include
voidmain()
{intyear,leap;
clrscr();
printf("Pleaseinputayear:
\n");
scanf("%d",&year);
if(year%400==0)
leap=1;
elseif(year%100==0)
leap=0;
elseif(year%4==0)
leap=1;
else
leap=0;
if(leap==1)
printf("%disaleapyear\n",year);
else
printf("%disnotaleapyear\n",year);}
8、输入一个三位自然数num,判断其是否为水仙花数?
注:
一个3位自然数,各个数位的数字立方和等于该数本身,即称为水仙花数。
如:
153=13+53+33。
#include
#include
voidmain()
{intm,a,b,c;
clrscr();
printf("Pleaseinputanum(100<=num<=999):
\n");
scanf("%d",&m);
a=m/100;b=m/10%10;c=m%10;
if(a*a*a+b*b*b+c*c*c==m)
printf("%dissxhshu.\n",m);
else
printf("%disnotsxhshu.\n",m);}
9、编写一个程序,实现对给出的一百分制成绩,输出相应的成绩等级。
即:
90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
方法一:
(用if结构)
#include
#include
voidmain()
{floatscore;chargrade;
clrscr();
printf("Pleaseinputascore(0<=score<=100):
\n");
scanf("%f",&score);
if(score>=90)
grade='A';
elseif(score>=80)
grade='B';
elseif(score>=70)
grade='C';
elseif(score>=60)
grade='D';
else
grade='E';
printf("scoreis%5.1f,gradeis%c.\n",score,grade);}
方法二:
(用switch结构)
#include
#include
voidmain()
{floatscore;chargrade;
clrscr();
printf("Pleaseinputascore(0<=score<=100):
\n");
scanf("%f",&score);
switch((int)(score/10))
{case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
default:
grade='E';
}
printf("scoreis%5.1f,gradeis%c.\n",score,grade);}
10、输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,根据
转换结果C的不同值,按以下要求给出相应的提示。
C>40时,打印“Hot”
3020100C≤0时,打印“Freezing”
程序代码如下:
#include
voidmain()
{floatf,c;
printf("Inputthefahrenheittemperature:
");
scanf("%f",&f);
c=5.0/9.0*(f-32);/*将华氏温度转换成摄氏温度*/
if(c>40)
printf("Hot\n");
elseif(c>30)
printf("Warm\n");
elseif(c>20)
printf("RoomTemperature\n");
elseif(c>10)
printf("Cool\n");
elseif(c>0)
printf("Cold\n");
else
printf("Freezing\n");
}
11、某商场开展购物打折活动,若购物款x在下述范围内,所付款y按
对应折扣支付:
x(x<1000)
y=
0.9x(1000≤x<2000)
0.8x(2000≤x<3000)
0.7x(x≥3000)
程序代码一:
#include
voidmain()
{floatx,y;
printf("Inputx:
");
scanf("%f",&x);
if(x<0)
printf("Inputerror.\n");
else
{if(x<1000)
y=x;
elseif(x<2000)
y=0.9*x;
elseif(x<3000)
y=0.8*x;
else
y=0.7*x;
printf("x=%.2f,y=%.2f\n",x,y);}
}
程序代码二:
#include
voidmain()
{floatx,y;intc;
printf("Inputx:
");
scanf("%f",&x);
if(x<0)
printf("Inputerror.\n");
else
{c=x/1000;
switch(c)
{case0:
y=x;break;
case1:
y=0.9*x;break;
case2:
y=0.8*x;break;
default:
y=0.7*x;
}
printf("x=%.2f,y=%.2f\n",x,y);
}
}
补充作业:
12、
完成下列分段函数的计算:
分别使用if-elseif-else结构和if-if嵌套结构来实现。
#include
#include
voidmain()
{floatx,y;
clrscr();
printf("Pleaseinputvalueofx:
\n");
scanf("%f",&x);
if(x<=1600)
y=0;
elseif(x<=2100)
y=(x-1600)*0.05;
elseif(x<=3100)
y=(x-1600)*0.1-25;
else
y=(x-1600)*0.15-125;
printf("x=%8.2f,y=%8.2f\n",x,y);}
13、
完成下列分段函数的计算:
分别使用if-elseif-else结构和if-if嵌套结构来实现。
#include
#include
#include
voidmain()
{floatx,y;
clrscr();
printf("Pleaseinputvalueofx:
\n");
scanf("%f",&x);
if(x<=0)
y=(x+2)*exp(x);
else
y=(x+2)*log(2*x);
printf("x=%8.2f,f(x)=%8.2f\n",x,y);}
14、完成下列分段函数的计算:
分别使用if-elseif-else结构和if-if嵌套结构来实现。
#include
#include
#include
voidmain()
{floatx,y;
clrscr();
printf("Pleaseinputvalueofx:
\n");
scanf("%f",&x);
if(x<=0)
y=0;
else
y=(fabs(x)+3.2)/(sin(x)+2);
printf("x=%8.2f,f(x)=%8.2f\n",x,y);}
15、完成下列函数的计算:
#include
#include
#include
voidmain()
{floatx,y;
clrscr();
printf("Pleaseinputvalueofx:
\n");
scanf("%f",&x);
y=(exp(x)+fabs(x-6))/(x+1.3);
printf("x=%8.2f,fun1(x)=%8.2f\n",x,y);}
16、完成下列函数的计算:
#include
#include
#include
voidmain()
{floatx,y;
clrscr();
printf("Pleaseinputvalueofx:
\n");
scanf("%f",&x);
y=(1+sin(x)+exp(x))/(x+1);
printf("x=%8.2f,fun1(x)=%8.2f\n",x,y);}
17、某服装店经营套服,也单件出售。
若买的不少于50套,每套80元;
不足50套的每套90元;只买上衣每件60元;只买裤子每条45。
以下程
序的功能是读入所买上衣c和裤子t的件数,计算应付款m。
#include
#include
voidmain()
{intc,t,d1,d2,m;
clrscr();
printf("Pleaseinputcandt:
\n");
scanf("%d,%d",&c,&t);
if(c>=t)
{d1=t;d2=c-t;
if(d1>=50)
m=d1*80+d2*60;
else
m=d1*90+d2*60;}
else
{d1=c;d2=t-c;
if(d1>=50)
m=d1*80+d2*45;
else
m=d1*90+d2*45;}
printf("c=%d,t=%d,m=%d\n",c,t,m);}
18、某邮局对邮寄包裹有如下规定:
若包裹的长宽高任一尺寸超过1米或
重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,再
加上根据下表按重量wei计算的邮资:
重量(千克)
收费标准(元/千克)
wei<10
0.80
100.75
200.70
#include
#include
voidmain()
{floatc,k,g,w,m;
clrscr();
printf("Pleaseinputc,k,gandw:
\n");
scanf("%f,%f,%f,%f",&c,&k,&g,&w);
if(c>100||k>100||g>100||w>30)
printf("cannottobemailed");
elseif(w<10)
m=0.2+w*0.8;
elseif(w<=20)
m=0.2+w*0.75;
else
m=0.2+w*0.7;
printf("c=%5.1f,k=%5.1f,g=%5.1f,w=%5.1f,m=%6.2f\n",c,k,g,w,m);}
}
19、请编写程序pro17.c。
从键盘输入当月利润I,求应发奖金总数。
根据利润进行奖金提成:
利润I低于或等于10万元的,奖金可提10%;
利润高于10万元,低于20万元(100000<I≤200000)时,低于10万元部分按10%提成,高于100000元的部分,提成7.5%;
200000<I≤400000时,低于20万元部分仍按上述办法提成(下同),高于20万元的部分,按5%提成;
400000<I≤600000时,高于40万元的部分,按3%提成;
600000<I≤1000000时,高于60万元部分,按1.5%提成;
I>1000000时,超过100万元的部分,按1%提成;
方法一:
用if语句编程序
#include
#include
voidmain()
{longi;floatbonus,bon1,bon2,bon4,bon6,bon10;
clrscr() ;
bon1=100000*0.1;/*利润为10万元时的奖金*/
bon2=bon1+100000*0.075;/*利润为20万元时的奖金*/
bon4=bon2+200000*0.05;/*利润为40万元时的奖金*/
bon6=bon4+200000*0.03;/*利润为60万元时的奖金*/
bon10=bon6+400000*0.015;/*利润为100万元时的奖金*/
printf("Pleaseinputi:
\n");
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1;/*利润在10万元以内按0.1提成奖金*/
elseif(i<=200000)
bonus=bon1+(i-100000)*0.075;/*利润在10万至20万元时的奖金*/
elseif(i<=400000)
bonus=bon2+(i-200000)*0.05;/*利润在20万至40万元时的奖金*/
elseif(i<=600000)
bonus=bon4+(i-400000)*0.03;/*利润在40万至60万元时的奖金*/
elseif(i<=1000000)
bonus=bon6+(i-600000)*0.015;/*利润在60万至100万元时的奖金*/
else
bonus=bon10+(i-1000000)*