- 1-1本题目要求计算下列分段函数f(x)的值:
注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f(10.00) = 3.16
输入样例2:
-0.5
输出样例2:
f(-0.50) = -2.75
#include <stdio.h>
#include <math.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x >= 0)
{
y = pow(x,0.5);
}
else
{
y = pow(x+1 , 2) + 2*x + 1/x;
}
printf("f(%.2lf) = %.2lf",x,y);
return 0;
}
- 1-2 本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
输入样例:
4 2 8
输出样例:
2->4->8
#include <stdio.h>
int main()
{
int x,y,z,n;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{
n = x;
x = y;
y = n;
}
if(x>z)
{
n = x;
x = z;
z = n;
}
if(y>z)
{
n = y;
y = z;
z = n;
}
printf("%d->%d->%d",x,y,z);
return 0;
}
-
1-3 假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:
当工资不超过1600时,税率为0;
当工资在区间(1600, 2500]时,税率为5%;
当工资在区间(2500, 3500]时,税率为10%;
当工资在区间(3500, 4500]时,税率为15%;
当工资超过4500时,税率为20%。
输入格式:
输入在一行中给出非负工资。
输出格式:
在一行输出个人所得税,精确到小数点后2位。
输入样例1:
1600
输出样例1:
0.00
输入样例2:
1601
输出样例2:
0.05
输入样例3:
3000
输出样例3:
140.00
输入样例4:
4000
输出样例4:
360.00
输入样例5:
5000
输出样例5:
680.00
#include <stdio.h>
int main() {
double money,tax;
scanf("%lf",&money);
if(money <= 1600) {
tax = 0;
} else if(money>1600 && money<=2500) {
tax = (money-1600)*0.05;
} else if(money>2500 && money<=3500) {
tax = (money-1600)*0.1;
} else if(money>3500 && money<=4500) {
tax = (money-1600)*0.15;
} else if(money>4500) {
tax = (money-1600)*0.2;
}
printf("%.2lf",tax);
return 0;
}
- 1-4 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。
输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。
输出格式:
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。
输入样例1:
-1 2
输出样例1:
-1/2=-0.50
输入样例2:
1 -3
输出样例2:
1/(-3)=-0.33
输入样例3:
5 0
输出样例3:
5/0=Error
#include <stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
double c = 1.0*a/b;
if(a>=-100 && a<=100 && b>=-100 && b<=100)
{
if(b>0)
{
printf("%d/%d=%.2lf",a,b,c);
}
else if(b<0)
{
printf("%d/(%d)=%.2lf",a,b,c);
}
else
{
printf("%d/%d=Error",a,b);
}
}
return 0;
}
- 1-5 为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
输入格式:
输入在一行中给出非负实数x。
输出格式:
在一行输出应交的水费,精确到小数点后2位。
输入样例1:
12
输出样例1:
16.00
输入样例2:
16
输出样例2:
22.50
#include <stdio.h>
int main()
{
double fee,volume;
scanf("%lf",&volume);
if(volume<=15)
{
fee = 4 * volume /3;
}
else
{
fee = 2.5*volume - 17.5;
}
printf("%.2lf",fee);
return 0;
}
- 1-6 本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
#include <stdio.h>
int main()
{
int starttime,endtime;
int starthour,endhour,usehour;
int startminute,endminute,useminute;
scanf("%d%d",&starttime,&endtime);
starthour = starttime / 100;
endhour = endtime / 100;
startminute = starttime % 100;
endminute = endtime % 100;
if(endminute < startminute)
{
useminute = (endminute+60) - startminute;
usehour = endhour-1-starthour;
}
else
{
useminute = endminute - startminute;
usehour = endhour - starthour;
}
printf("%.2d:%.2d",usehour,useminute);
return 0;
}
-
1-7 本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
#include <stdio.h>
#include <math.h>
int main()
{
double mileage,money;
int waittime;
scanf("%lf%d",&mileage,&waittime);
if(mileage <= 3)
{
money = 10;
}
else if(mileage>3 && mileage<=10)
{
money = 10 + (mileage-3)*2;
}
else
{
money = 24 + (mileage-10)*3;
}
if(waittime >= 5)
{
//money = money + ceil(1.0*waittime/5)*2;//这道题理解起来太难了,按照输出样例来看,是把九分钟多出来的四分钟忽略不计了
money = money + waittime/5 * 2;
}
printf("%.0lf",money);
return 0;
}
- 1-8 三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。
输入格式:
输入在一行中给出3个正整数,顺序对应球A、B、C的重量。
输出格式:
在一行中输出唯一的那个不一样的球。
输入样例:
1 1 2
输出样例:
C
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==b && a!=c)
{
printf("C");
}
else if(a==c && a!=b)
{
printf("B");
}
else if(b==c && b!=a)
{
printf("A");
}
return 0;
}
-
1-9 本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
#include <stdio.h>
int main()
{
int score;
char grade;
scanf("%d",&score);
if(score >= 90)
{
grade = 'A';
}
else if(score >= 80 && score < 90)
{
grade = 'B';
}
else if(score >= 70 && score < 80)
{
grade = 'C';
}
else if(score >= 60 && score < 70)
{
grade = 'D';
}
else
{
grade = 'E';
}
printf("%c",grade);
return 0;
}
- 1-10 为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。
输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100
输出样例2:
cost = 55.50
#include <stdio.h>
int main()
{
double used,cost;
scanf("%lf",&used);
if(used <= 50 && used >= 0)
{
printf("cost = %.2lf",used * 0.53);
}
else if(used > 50)
{
printf("cost = %.2lf",0.53*50 + (used-50)*(0.53+0.05));
}
else
{
printf("Invalid Value!");
}
return 0;
}
- 1-11 本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR
#include <stdio.h>
int main()
{
int data1,data2,result;
char op;
scanf("%d %c %d",&data1,&op,&data2);
switch(op)
{
case'+':
printf("%d",data1 + data2);
break;
case'-':
printf("%d",data1 - data2);
break;
case'*':
printf("%d",data1 * data2);
break;
case'/':
printf("%d",data1 / data2);
break;
case'%':
printf("%d",data1 % data2);
break;
default:
printf("ERROR");
}
return 0;
}
- 1-12 中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:
103
输出样例1:
Fishing in day 103
#include <stdio.h>
int main() {
int days,data;
scanf("%d",&days);
data = days % 5; //余数
if(data <= 3 && data >= 1)
{
printf("Fishing in day %d",days);
}
else
{
printf("Drying in day %d",days);
}
return 0;
}
- 1-13 现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。
输入样例:
40 97 m
输出样例:
301.34
#include <stdio.h>
int main() {
double oil_amount,price,cost;
int oil_type;
char service_type;
scanf("%lf %d %c",&oil_amount,&oil_type,&service_type);
switch(oil_type)
{
case 90:
price = 6.95;
break;
case 93:
price = 7.44;
break;
case 97:
price = 7.93;
break;
default:
return 0;
}
if(service_type == 'm')
{
cost = oil_amount * price * (1-0.05);
}
else if(service_type == 'e')
{
cost = oil_amount * price * (1-0.03);
}
printf("%.2lf",cost);
return 0;
}
- 1-14 模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。
输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。
输出格式:
在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK。
输入样例1:
40
输出样例1:
Speed: 40 - OK
输入样例2:
75
输出样例2:
Speed: 75 - Speeding
#include <stdio.h>
int main() {
int V;
scanf("%d",&V);
if(V > 60)
{
printf("Speed: %d - Speeding",V);
}
else
{
printf("Speed: %d - OK",V);
}
return 0;
}
- 1-15 判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。。
输入格式:
直接输入一个5位数正整数。
输出格式:
输出“yes”或“no”。此处均为小写字母
输入样例:
12521
输出样例:
yes
输入样例:
65432
输出样例:
no
#include <stdio.h>
int main()
{
int num,num1,num2,num3,num4;
scanf("%d",&num);
num1 = num / 10000; //万位
num2 = num%10000 / 1000; //千位
num3 = num%100 / 10; //十位
num4 = num%10; //个位
if(num1 == num4 & num2 == num3)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
顺便吐槽一下在PTA提交太严苛了