综合练习四

 

问题 A: 多项式求和

题目描述

多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...,现在请你求出该多项式的前n项的和。 

 
 

 

输入要求

输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和

 

输出要求

对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。

 

假如输入

3
2 3 4

应当输出

0.50
0.83
0.58
#include<stdio.h>
int main(void)
{
    int m,n,a,i;
    int x;
    double sum,item;
 
    scanf("%d",&m);
    for(a=1;a<=m;a++){
        scanf("%d ",&n);
            x=1;
            sum=0;
            item=1.0;
            for(i=1;i<=n;i++){
            sum=sum+item;
            x=-x;
            item=x*1.0/(i+1);
        }
            printf("%.2f\n",sum);
    }
        return 0;
}
             

 

 

问题 B: 计算矩阵各行的和

题目描述

输入2个正整数mn1m61n6),然后输入矩阵amn列)中元素,分别计算并输出各行元素之和。

输入要求

有多组测试数据,第一行输入k,k为测试的矩阵组数,第二行输入m和n,分别表示矩阵的行数和列数,然后输入mxn的矩阵元素。

输出要求

每行输出矩阵各行的元素之和,每个数据之间以空格隔开。

假如输入

1
3 3
1 2 3
4 5 6
7 8 9

应当输出

6 15 24 
#include<stdio.h>
int main(void)
{
    int k,m,n,i,b,j,sum;
    int a[6][6];
    scanf("%d",&k);
     
 
    for(b=1;b<=k;b++){
        scanf("%d %d",&m,&n);
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
                scanf("%d",&a[i][j]);
 
            for(i=0;i<m;i++){
                sum=0;
                for(j=0;j<n;j++)
                    sum=sum+a[i][j];
                printf("%d ",sum);
            }
    }
    return 0;
}
 

问题 C: 用泰勒展开式计算sin

题目描述

用泰勒展开式计算sin,泰勒展开式如下:

当最后一项的绝对值小于0.00001时,累加结束

 

 

输入要求

输入1个正整数x

 

输出要求

输出利用展开式算出的sin(x)值,保留6位小数

 

 

假如输入

30

应当输出

0.500000
提示const double PI=3.1415926;
#include<stdio.h>
#include<math.h>
#define P 3.1415926
double fact(int m);
int main(void)
{
    int a,m;
    double item,sum,b,c;
    double x,y;
    scanf("%lf",&y);
    x=P/180*y;
    
    sum=0;
    item=1.0;
    a=1;
    m=1;

    while(fabs(item)>=0.00001){
        b=a*pow(x,m);
        c=fact(m);
        item=b/c;
        sum=sum+item;
        m=m+2;
        a=-a;
    }
    printf("%.6f\n",sum);
    return 0;
}

double fact(int m)
{
    int z;
    double result;

    result=1;
    for(z=1;z<=m;z++)
        result=result*z;

    return result;
}

 

 
posted @ 2013-12-02 13:52  simple9495  阅读(416)  评论(0编辑  收藏  举报