跳转至

Contest 1

求整数均值
Description
输入4个整数,计算并输出这些整数的和与平均值,其中平均值精确到小数点后1位,试编写相应程序
Input
输入4个整数。
Output
计算并输出这些整数的和与平均值(float形式),其中平均值精确到小数点后1位。
Sample Input 1 
1 2 3 4
Sample Output 1
10 2.5
#include <stdio.h>
int ans1,tmp;
int main(){
    for(int i=0;i<4;i++){
        scanf("%d",&tmp);
        ans1+=tmp;
    }
    printf("%d %.1f",ans1,(float)ans1/4);
    return 0;
}
阶梯电价
Description
为提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,
电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量电价上调0.05元/千瓦时。输入用户的月用电量(千瓦时),计算并输出改用户应支付的电费(元)。试着编写相应程序。
Input
输入用电量的整数形式。
Output
输出电费,用float形式。
Sample Input 1 
50
Sample Output 1
26.500000
#include<stdio.h>
int main()
{
    int cos;
    scanf("%d", &cos);
    if (cos <= 50)
        printf("%f", (float)(cos * 0.53));
    else
        printf("%f", (float)(50 * 0.53 + (cos - 50) * 0.58));
    return 0;
}
序列求和
Description
输入两个正整数m和n(0<m<=n),求和:   i^2+1/i   (i 从 m 到 n),保留最后6位小数,是编写相应的程序。
Input
输入两个整数分别对应m和n。
Output
输出用double形式。计算公式:i^2+1/i,i 从 m到n的和。
Sample Input 1 
1 2
Sample Output 1
6.500000
#include<stdio.h>
int main()
{
    int m;
    int n;
    scanf("%d" , &m);
    scanf("%d" , &n );
    double result;
    result=0;
    int i;
    for(i=m;i<=n;i++)
{
    result=result+(i*i+1.0/i); 
}
    printf ("%.6f\n",result);
    return 0;
}
求交错序列前n项的和
Description
输入一个正整数n,计算交错序列1-2/3+3/5-4/7+5/9-6/11+……的前n项之和,试编写相应程序。
Input
输入一个整数形式n
Output
输出数值为double形式,最后保留小数点后六位。
Sample Input 1 
56
Sample Output 1
0.390467
#include <stdio.h>
int main()
{
    int denominator,i,n,flag,a;
    double item,sum;

    scanf ("%d", &n);
    denominator=1;
    sum=0;
    a=1;
    flag=1;
    for(i=1; i<=n; i++)
    {
        item=a*1.0/denominator;
        sum = sum + flag*item;
        denominator=denominator+2;
        flag=-flag;
        a=a+1;
    }
    printf ("%.6lf\n",sum);
    return 0;
}
平方根求和
Description
输入一个正整数n,计算1+\sqrt(2)+\sqrt(3)+……+\sqrt(n)的值(保留2位小数)。可能包含头文件marth.h,并调用sqrt()函数求平方根。是编写相应程序。
Input
输入一个整数n。
Output
输出一个保留两位小数的求和值。
Sample Input 1 
4561
Sample Output 1
205385.52
#include <stdio.h>
#include <math.h>
int main(){
    int n;
    double ans=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        ans+=(double)sqrt((double) (i));
    }
    printf("%.2lf",ans);
    return 0;
}
求给定序列前n项的和(1!+2!+3!+……+n!)
Description
输入一个正整数n,求e=1!+2!+3!+……+n!,要求定义调用函数fact(n) 计算n!,函数类型是double。是编写想用的程序。
Input
输入一个整数n。
Output
输出最后阶乘求和的值,用double形式,不保留小数点。
Sample Input 1 
12
Sample Output 1
522956313
#include <stdio.h>
double fact(int n);
int main()
{
    int i,n;
    double e;
    scanf("%d",&n);
    e=0;
    for(i=1;i<=n;i++)
    {
        e=e+fact(i);
    }
    printf("%.lf",e);
    return 0;
}
double fact(int n)
{
    int i;
    double product;
    product =1;
    for(i=1;i<=n;i++)
    {
      product =product*i;
    }
    return product;
}