头歌实验---C/C++程序设计:实验三:选择结构程序设计进阶
目录
第1关:快递费用计算
任务描述
答案代码
第2关:计算一元二次方程的根
任务描述
答案代码
第3关:产品信息格式化
任务描述
答案代码
第4关:字母转换
任务描述
答案代码
第5关:输出最大最小数
任务描述
答案代码
第6关:日期
任务描述
答案代码
第1关:快递费用计算
任务描述
答案代码
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
int q;
float weight;
scanf("%d,%f",&q,&weight);
if(q==0)
printf("Price: %.2f\n",10+3.0*ceil(weight-1));
else if(q==1)
printf("Price: %.2f\n",10+4.0*ceil(weight-1));
else if(q==2)
printf("Price: %.2f\n",15+5.0*ceil(weight-1));
else if(q==3)
printf("Price: %.2f\n",15+6.5*ceil(weight-1));
else if(q==4)
printf("Price: %.2f\n",15+10.0*ceil(weight-1));
else
{
printf("Error in Area\n");
printf("Price: 0.00");
}
/*********End**********/
return 0;
}
第2关:计算一元二次方程的根
任务描述
答案代码
#include<math.h>
#include<stdio.h>
int main(void)
{
double a,b,c,d;
double x1,x2;
printf("Please enter the coefficients a,b,c:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
if(a==0){
printf("error!\n");
}
else {
d=(b*b)-(4*a*c);
if(d>0)
{
x1=(-b+sqrt(d))/(2.0000*a);
x2=(-b-sqrt(d))/(2.0000*a);
printf("x1=%.4f, x2=%.4f\n",x1,x2);
}
else if(d==0)
{
x1=x2=-b/(2.0000*a);
printf("x1=%.4f, x2=%.4f\n",x1,x2);
}
else if(d<0)
{
printf("error!\n");
}
}
return 0;
}
第3关:产品信息格式化
任务描述
答案代码
#include<stdio.h>
int main()
{
/*********Begin*********/
int item = 0,mm = 0, dd = 0,yy = 0;
double unit = 0;
printf("Enter item number:\n");
scanf("%d",&item);
printf("Enter unit price:\n");
scanf("%lf",&unit);
printf("Enter purchase date (mm/dd/yy):\n");
scanf("%d/%d/%d",&mm,&dd,&yy);
printf("Item Unit Purchase\n");
printf("%-9d$ %-9.2f%02d%02d%02d\n",item,unit,mm,dd,yy);
/*********End**********/
return 0;
}
第4关:字母转换
任务描述
答案代码
#include <stdio.h>
int main()
{
char c1,c2;
c1=getchar();
if(c1>='A'&&c1<='Z')
{
/*****以下一行有错误*****/
c2=c1+32;
if(c2>='a' && c2<='u')
/*****以下一行有错误*****/
c2=c2+5;
else if(c2>='v' && c2<='z') c2=c2-21;
printf("The letter %c change to %c\n",c1,c2);
}
return 0;
}
第5关:输出最大最小数
任务描述
答案代码
/********** Begin **********/
#include<stdio.h>
int main(void)
{
int a,b,c,max,min;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
if(c>max)
{
max=c;
min=min;
}
else
{
if(c<b) min=c;
else min=b;
}
printf("max = %d\n",max);
printf("min = %d",min);
return 0;
}
/********** End **********/
第6关:日期
任务描述
答案代码
#include <stdio.h>
#define THIRTY_ONE 31
#define THIRTY 30
#define LEAP_MOUTH 29
#define NO_LEAP_MOUTH 28
int judgeyear(int year){
int day=28;
if((year%4==0 && year%100!=0) || year % 400 == 0){
day=29;
}
return day;
}
int main()
{
int sequence=0;
int year,mouth,day;
/*printf("请输入年月日(用-隔开):");*/
scanf("%d%*c%d%*c%d",&year,&mouth,&day);
switch(mouth){
case 12:
case 11:
sequence+=+(mouth>11)*30;
case 10:
sequence+=+(mouth>10)*31;
case 9:
sequence+=+(mouth>9)*31;
case 8:
sequence+=+(mouth>8)*30;
case 7:
sequence+=+(mouth>7)*31;
case 6:
sequence+=+(mouth>6)*30;
case 5:
sequence+=+(mouth>5)*31;
case 4:
sequence+=+(mouth>4)*30;
case 3:
sequence+=+(mouth>3)*31;
case 2:
sequence+=+(mouth>2)*judgeyear(year);
case 1:
sequence+=+(mouth>1)*31;
sequence +=day;
}
printf("%d",sequence);
return 0;
}