C语言程序设计(第四版)—习题2程序设计题

  • Post author:
  • Post category:其他



目录


1.求整数均值:


2.阶梯电价:


3.序列求和:


4.求交错序列前n项和:


5.平方根求和:


6.求给定序列前n项和(1!+2!+…):


1.求整数均值:

输入4个整数,计算并输出这些整数的和与平均值,其中平均值精确到小数点后1位。试编写相应程序。


输入格式:

输入在一行中给出4个整数,其间以空格分隔。


输出格式:

在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。


输入样例:

1 2 3 4


输出样例:

Sum = 10; Average = 2.5
#include<stdio.h>
int main()
{
    int n;
    double sum=0,ave=0,num=0;
    while((scanf("%d",&n))!=EOF){
        sum+=n;
        num++;
    }
    printf("Sum = %.0f; Average = %.1f",sum,sum/num);
    return 0;
}


2.阶梯电价:

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元),若用电量小于0,则输出“Invalid Value!”。试编写相应程序。


输入格式:

输入在一行中给出某用户的月用电量(单位:千瓦时)。


输出格式:

在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出”Invalid Value!”。


输入样例1:

10


输出样例1:

cost = 5.30


输入样例2:

100


输出样例2:

cost = 55.50
#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    
    if(n<0){
        printf("Invalid Value!\n");
    }else{
        double res=0;
        res=n*0.53;
        if(n>50){
            res=res+(n-50)*0.05;
        }
        printf("cost = %.2f",res);
    }
    return 0;
}


3.序列求和:

输入两个正整数 m 和 n(0<m≤n),求
\sum_{i=m}^{n}\left ( i^{2}+\frac{1}{i} \right )
,结果保留6位小数。试编写相应程序。

注:
\sum_{i=m}^{n}\left ( i^{2}+\frac{1}{i} \right )=m^{2}+\frac{1}{m}+(m+1)^2+\frac{1}{m+1}+...+n^2+\frac{1}{n}


输入格式:

输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。


输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。


输入样例:

5 10


输出样例:

sum = 355.845635
#include<stdio.h>
int main()
{
    int m,n;
    scanf("%d %d",&m,&n);
    
    double sum=0;
    for(int i=m;i<=n;i++){
        sum=sum+i*i*1.0+1.0/i;
    }
    printf("sum = %.6f",sum);
    return 0;
}


4.求交错序列前n项和:

输入一个正整数n,计算交错序列
1-\frac{2}{3}+\frac{3}{5}-\frac{4}{7}+\frac{5}{9}-\frac{6}{11}+...
的前n项之和。试编写相应程序。


输入格式:

输入在一行中给出一个正整数N。


输出格式:

在一行中输出部分和的值,结果保留三位小数。


输入样例:

5


输出样例:

0.917
#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    
    double sum=0;
    double a=1,flag=1;
    for(int i=1;i<=n;i++){
        sum=sum+flag*(i*1.0/a);
        flag*=-1;
        a+=2;
    }
    printf("%.3f",sum);
    return 0;
}


5.平方根求和:

输入一个正整数n,计算
1+\sqrt{2}+\sqrt{3}+...+\sqrt{n}
的值(保留2位小数)。可包含头文件math.h,并调用sqrt()函数求平方根。试编写相应程序。


输入格式:

输入在一行中给出一个正整数N。


输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。


输入样例:

10


输出样例:

sum = 22.47
#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    scanf("%d",&n);
    
    double sum=0;
    for(int i=1;i<=n;i++)
        sum+=sqrt(i);
    printf("sum = %.2f",sum);
    return 0;
}


6.求给定序列前n项和(1!+2!+



):

输入一个正整数n,求 e=1!+2!+3!+…+n!的值。要求定义和调用函数 fact(n)计算n!,函数类型是double。试编写相应程序。


输入格式:

输入在一行中给出一个不超过12的正整数N。


输出格式:

在一行中输出整数结果。


输入样例:

5


输出样例:

153
#include<stdio.h>
int fact(int n){
    int sum=1;
    for(int i=1;i<=n;i++)
        sum*=i;
    return sum;
}
int main()
{
    int n;
    scanf("%d",&n);
    
    int res;
    for(int i=1;i<=n;i++)
        res+=fact(i);
    printf("%d",res);
    return 0;
}



版权声明:本文为m0_64782700原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。