ZZULIOJ.1033: 五级制成绩 —— 1043: 最大值(C语言 Vs Python)

目录

    • 1033: 五级制成绩
    • 1034: 夏季促销
    • 1035: 分段函数求值
    • 1036: 某年某月有多少天
    • 1037: 四则运算
    • 1038: 绝对值最大
    • 1039: n个数求和
    • 1040: 数列求和1
    • 1041: 数列求和2
    • 1042: 数列求和3
    • 1043: 最大值

1033: 五级制成绩

题目描述
给定一个百分制成绩, 请根据百分制成绩输出其对应的等级。转换关系如下:
90分及以上为’A’,80~89为’B’, 70~79为’C’, 60~69为’D’,60分以下为’E’。

输入 一个百分制成绩(0~100的整数)。
输出 输出对应的等级。

样例输入 Copy
100
样例输出 Copy
A

#include
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
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
#include
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
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
#include
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
#include 
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
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
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
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
#include
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
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
#include
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)

你可能感兴趣的:(ZZULIOJ)