目录
1033: 五级制成绩
题目描述
给定一个百分制成绩, 请根据百分制成绩输出其对应的等级。转换关系如下:
90分及以上为’A’,80~89为’B’, 70~79为’C’, 60~69为’D’,60分以下为’E’。
输入 一个百分制成绩(0~100的整数)。
输出 输出对应的等级。
样例输入 Copy
100
样例输出 Copy
A
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
switch(n/10)
{
case 10:
case 9:printf("A");break;
case 8:printf("B");break;
case 7:printf("C");break;
case 6:printf("D");break;
default:printf("E");break;
}
}
Vs
n = int(input())
if n // 10 == 10 or n // 10 == 9:
print("A")
elif n // 10 == 8:
print("B")
elif n // 10 == 7:
print("C")
elif n // 10 == 6:
print("D")
else:
print("E")
1034: 夏季促销
题目描述
商场夏季促销,购物500元以下,不打折;购物500元(含)以上,95折;购物1000元(含)以上,9折;购物3000元(含)以上,85折;购物5000元(含)以上,8折。根据消费金额,确定用户实际需要支付的数目。
输入 输入一个实数,表示消费金额。
输出 输出一个实数,表示用户实际需要支出的数目,保留两位小数。
样例输入 Copy
5100
样例输出 Copy
4080.00
#include<stdio.h>
int main(void)
{
double a;
scanf("%lf",&a);
if(a>=500&&a<1000)
a=a*0.95;
else if(a>=1000&&a<3000)
a=a*0.9;
else if(a>=3000&&a<5000)
a=a*0.85;
else if(a>=5000)
a=a*0.8;
else
a=a*1;
printf("%.2f",a);
}
Vs
a = float(input())
if a >= 500 and a < 1000:
a = a * 0.95
elif a >= 1000 and a < 3000:
a = a * 0.90
elif a >= 3000 and a < 5000:
a = a * 0.85
elif a >= 5000:
a = a * 0.80
else:
a = a * 1
print("%.2f" %a)
1035: 分段函数求值
题目描述
已知:y是x的函数,
当x<-2时,y=7-2x;
当x>=-2,且x<3时,y=5-|3x+2|;
当x>=3时,y=3x+4
输入 任意输入一个整数x。
输出 输出为一个整数,即x对应的函数值。
样例输入 Copy
2
样例输出 Copy
-3
#include<stdio.h>
#include<math.h>
int main(void)
{
int x, y;
scanf("%d",&x);
if(x<-2)
y=7-2*x;
else if(x>=3)
y=3*x+4;
else
y=5-fabs(3*x+2);
printf("%d",y);
}
Vs
import math
x = int(input())
if x < -2:
y = 7 - 2 * x
elif x >= 3:
y = 3 * x + 4
else:
y = 5 - math.fabs(3 * x + 2)
print("%d" %y)
1036: 某年某月有多少天
题目描述
给你一个年份和月份,求该月有多少天
输入 一个年份(正整数),一个月份(1-12),中间有一个空格隔开
输出 该月的天数,单独占一行。
样例输入 Copy
2012 2
样例输出 Copy
29
#include<stdio.h>
int main(void)
{
int m, n;
scanf("%d%d",&m, &n);
switch(n)
{
case 4:
case 6:
case 9:
case 11:printf("30\n");break;
case 2:
if(m%400==0||m%100!=0&&m%4==0)
printf("29\n");
else
printf("28\n");break;
default:printf("31\n");
}
}
Vs
m , n = map(int,input().split())
if n == 4 or n == 6 or n == 9 or n == 11 :
print("30")
elif n == 2:
if m % 400 == 0 or (m % 100 != 0 and m % 4 == 0):
print("29")
else:
print("28")
else:
print("31")
1037: 四则运算
题目描述
给你一个简单的四则运算表达式,包含两个实数和一个运算符,请编程计算出结果
输入 表达式的格式为:s1 op s2, s1和s2是两个实数,op表示的是运算符(+,-,*,/),也可能是其他字符
输出 如果运算符合法,输出表达式的值;若运算符不合法或进行除法运算时除数是0,则输出"Wrong input!"。最后结果小数点后保留两位。
样例输入 Copy
1.0 + 1.0
样例输出 Copy
2.00
提示
除数是0,用|s2|<1e-10(即10的-10次方)判断
#include<stdio.h>
#include<math.h>
int main(void)
{
char op;
double x, y;
scanf("%lf %c %lf",&x, &op, &y);
switch(op)
{
case'+':printf("%.2f\n",x+y);break;
case'-':printf("%.2f\n",x-y);break;
case'*':printf("%.2f\n",x*y);break;
case'/':
if(fabs(y)<1e-10)
printf("Wrong input!\n");
else
printf("%.2f\n",x/y);break;
default:printf("Wrong input!\n");break;
}
return 0;
}
Vs
import math
a = input().split()
x = float(a[0])
op = str(a[1])
y = float(a[2])
if op == '+':
print("%.2f" %(x + y))
elif op == '-':
print("%.2f" %(x - y))
elif op == '*':
print("%.2f" %(x * y))
elif op == '/':
if(math.fabs(y) < 1e-10):
print("Wrong input!")
else:
print("%.2f" %(x // y))
else:
print("Wrong input!")
1038: 绝对值最大
题目描述
输入3个整数,输出绝对值最大的那个数。
输入 输入包含3个int范围内的整数,用空格隔开。
输出 输出三个数中绝对值最大的数,单独占一行。若绝对值最大的数不唯一,则输出最先出现的那个。例如,若输入为1 -3 3,则输出为-3;若输入为1 3 -3则输出为3。
样例输入 Copy
1 2 -3
样例输出 Copy
-3
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c, max;
scanf("%d %d %d",&a,&b,&c);
max=(abs(a)>=abs(b))?a:b;
max=(abs(max)>=abs(c))?max:c;
printf("%d",max);
}
Vs
import math
a , b , c = map(int,input().split() )
max = a
if math.fabs(max) < math.fabs(b):
max = b
if math.fabs(max) < math.fabs(c):
max = c
print(max)
1039: n个数求和
题目描述
输入一个整数n和n个整数,输出这n个整数的和。
输入 输入有两行:第一行是一个正整数n,第二行是n个整数。
输出 输出一个整数,即n个数的和。输出单独占一行。
样例输入 Copy
3
7 3 2
样例输出 Copy
12
#include<stdio.h>
int main(void)
{
int i, m, n, sum;
scanf("%d",&n);
i=1;
sum=0;
while(i<=n)
{
scanf("%d",&m);
sum+=m;
i++;
}
printf("%d",sum);
}
Vs
n = int(input())
a=input().split()
sum = i = 0
for m in range(n) :
m = int(a[i])
sum += m
i += 1
print(sum)
1040: 数列求和1
题目描述
输入一个整数n,输出数列1+1/3+1/5+……前n项的和。
输入 输入只有一个正整数n。
输出 结果保留2位小数,单独占一行
样例输入 Copy
3
样例输出 Copy
1.53
#include<stdio.h>
int main()
{
int n,i;
double sum;
scanf("%d",&n);
sum=0.0;
for(i=1;i<=n;i++)
{
sum=sum+1.0/(2*i-1);
}
printf("%.2lf\n",sum);
}
Vs
n = int(input())
sum = 0.0
j = 1
for i in range(n):
sum += 1.0 / (2 * j - 1)
j += 1
print("%.2f" %sum)
1041: 数列求和2
题目描述
输入一个整数n,输出数列1-1/3+1/5-……前n项的和。
输入 输入只有一个整数n。
输出 结果保留2为小数,单独占一行。
样例输入 Copy
3
样例输出 Copy
0.87
#include<stdio.h>
int main()
{
int n,i,deno;
double sum,flag;
scanf("%d",&n);
sum=0.0;
flag=1.0;
deno=1;
for(i=1;i<=n;i++)
{
sum=sum+flag/deno;
deno+=2;
flag=-flag;
}
printf("%.2lf\n",sum);
}
Vs
n = int(input())
sum = 0.0
flag = deno = 1
for i in range(n):
sum += flag / deno
deno += 2
flag = -flag
print("%.2f" %sum)
1042: 数列求和3
题目描述
求1-2/3+3/5-4/7+5/9-6/11+…的前n项和,结果保留3位小数。
输入 输入正整数n(n>0)。
输出 输出一个实数,保留3位小数,单独占一行。
样例输入 Copy
5
样例输出 Copy
0.917
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,deno;
double sum,flag;
scanf("%d",&n);
sum=0.0;
flag=1.0;
deno=1;
for(i=1;i<=n;i++)
{
sum=sum+i*flag/deno;
deno+=2;
flag=-flag;
}
printf("%.3lf\n",sum);
}
Vs
n = int(input())
sum = 0.0
flag = deno = j = 1
for i in range(n):
sum += j * flag / deno
deno += 2
flag = -flag
j += 1
print("%.3f" %sum)
1043: 最大值
题目描述
输入一个整数n和n个整数,输出这n个整数的最大值。
输入 输入有两行:第一行是一个正整数n,第二行是n个整数。
输出 输出包含一个整数,即n个数中的最大值,单独占一行。
样例输入 Copy
4
3 7 5 6
样例输出 Copy
7
/*方法一*/
#include<stdio.h>
int main()
{
int n,i,max,m;
scanf("%d",&n);
scanf("%d",&max);
for(i=1;i<=n-1;i++)
{
scanf("%d",&m);
max=(max>m)?max:m;
}
printf("%d",max);
}
/*方法二*/
#include<stdio.h>
#include<limits.h>
int main()
{
int n,i,max,m;
scanf("%d",&n);
max = INT_MIN;
/*在limits头文件中,INT_MIN表示无穷小,
对应INT_MAX表示无穷大*/
for(i=1;i<=n;i++)
{
scanf("%d",&m);
max=(max>m)?max:m;
}
printf("%d",max);
}
Vs
n = int(input())
a = input().split()
j = 0
max = float("-inf")
#对max定义负的无穷大,对应正的无穷大为"inf"
for i in range(n):
if int(a[j]) > max :
max = int(a[j])
j += 1
print(max)