7-16 计算符号函数的值 (10 分)
对于任一整数n,符号函数sign(n)的定义如下:
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1
#include <stdio.h>
int main(){
int num, sign;
scanf("%d", &num);
if(num < 0){
sign = -1;
}else if(num > 0){
sign = 1;
}else{
sign = 0;
}
printf("sign(%d) = %d", num, sign);
return 0;
}
7-17 成绩转换 (15 分)
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
输入样例:
90
输出样例:
A
#include <stdio.h>
int main(){
int grade;
char scale;
scanf("%d", &grade);
if(grade >= 90){
scale = 'A';
}else if(grade >= 80){
scale = 'B';
}else if(grade >= 70){
scale = 'C';
}else if(grade >= 60){
scale = 'D';
}else{
scale = 'E';
}
printf("%c", scale);
return 0;
}
7-18 出租车计价 (15 分)
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为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>
int main(){
float length, lCharge, charge;
int wait, wCharge;
scanf("%f %d", &length, &wait);
wCharge = (wait / 5) * 2;
if(length <= 3){
lCharge = 10;
}else if(length <= 10){
lCharge = 10 + (length - 3) * 2;
}else{
lCharge = 24 + (length - 10) * 3;
}
charge = lCharge + wCharge;
printf("%.0f", charge);
return 0;
}
7-19 计算天数 (15 分)
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
#include <stdio.h>
int main(){
int month_day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month, day, today;
scanf("%d/%d/%d", &year, &month, &day);
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
month_day[1] = 29;
}
for(int i=0; i<month-1; i++){
today = month_day[i] + today;
}
today = today + day;
printf("%d", today);
return 0;
}
7-20 简单计算器 (20 分)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
#include <stdio.h>
int main(){
int opSum, operand;
char operator;
scanf("%d%c", &opSum, &operator);
while(operator != '='){
switch(operator){
case '+':
scanf("%d", &operand);
opSum = opSum + operand;
break;
case '-':
scanf("%d", &operand);
opSum = opSum - operand;
break;
case '*':
scanf("%d", &operand);
opSum = opSum * operand;
break;
case '/':
scanf("%d", &operand);
if(operand == 0){
printf("ERROR");
return 0;
}else{
opSum = opSum / operand;
break;
}
default :{
printf("ERROR");
return 0;
}
}
scanf("%c", &operator);
}
printf("%d", opSum);
return 0;
}