浙江大学PAT 编程初级

以下是《基础编程题目集》的前半部分题目(4-1到4-6)及代码,为了节约时间,就直接将题目和代码粘贴如下:如果大家有其他好的思路和方法,感谢赐教

/*
4-1 简单输出整数   (10分)
本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。
*/
#include
using namespace std;
void f(int n);
int main(){
    int a;
    cin >> a;
    f(a);
}
void f(int n){
    for(int i=1;i<=n;i++)
        cout << i << endl;
}


/*
4-2 多项式求值   (15分)
本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=\sum_{i=0}^{n}(a[i]\times x^i)f(x)=∑
​i=0
​n
​​ (a[i]×x
​i
​​ ) 在x点的值。
*/
#include
#include
const int MAXN=100;
using namespace std;
float f(float x,float n,float *a);
int main(){
    float a[MAXN];


    float x,n;
    cin >> x;
    cin >> n;
    for(int i=0;i<=n;i++){
        cin >> a[i];
    }
    cout << f(x,n,a);
    return 0;
}
float f(float x,float n,float *a){
    float sum=0;
    for(int i=0;i<=n;i++)
        sum += a[i]*std::pow(x,i);
    return sum;
}


/*
4-3 简单求和   (10分)
本题要求实现一个函数,求给定的N个整数的和。
*/
#include
using namespace std;
const int MAXN=100;
int sum(int *a,int N);
int main(){
    int x,a[MAXN];
    int N;
    cin >> N;
    for(int i=0;i         cin >> a[i];
    cout << sum(a,N) << endl;
    return 0;
}
int sum(int *a,int N){
    int sumCount=0;
    for(int i=0;i         sumCount+=a[i];
    return sumCount;
}

//4-4

#include


#define MAXN 10
typedef float ElementType;


ElementType Average( ElementType S[], int N );


int main ()
{
    ElementType S[MAXN];
    int N, i;


    scanf("%d", &N);
    for ( i=0; i         scanf("%f", &S[i]);
    printf("%.2f\n", Average(S, N));


    return 0;
}
ElementType Average(ElementType S[],int N){
    int i=0;
    ElementType sum=0;
    for(i=0;i         sum+=S[i];
    }
    return sum/N;
}


//4-5

#include


#define MAXN 10
typedef float ElementType;


ElementType Max( ElementType S[], int N );


int main ()
{
    ElementType S[MAXN];
    int N, i;


    scanf("%d", &N);
    for ( i=0; i         scanf("%f", &S[i]);
    printf("%.2f\n", Max(S, N));


    return 0;
}


/* 你的代码将被嵌在这里 */
ElementType Max(ElementType S[],int N){
    int i=0;
    ElementType minNum=-100000000.0;
    for(i=0;i         if(S[i]>minNum)
            minNum=S[i];
    }
    return minNum;


}


//4-6

/*
4-6 求单链表结点的阶乘和   (15分)
本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。
*/
#include
#include
typedef struct Node *PtrToNode;
struct Node{
    int Data;
    PtrToNode Next;
};
typedef PtrToNode List;
int FactorialSum(List L);
int main(){
    int N,i;
    List L,p;
    scanf("%d",&N);
    L = NULL;
    for(i=0;i         p=(List)malloc(sizeof(struct Node));
        scanf("%d",&p->Data);
        p->Next = L;
        L= p;
    }
    printf("%d\n",FactorialSum(L));
    return 0;
}
int FactorialSum(List L){
    List q=L;
    int i,result=0;
    while(q){   //这里不是q->Next 而是q
        int sum=1;
        for(i=1;i<=q->Data;i++)
            sum *= i;
        q=q->Next;
        result+=sum;
    }
    return result;
}

你可能感兴趣的:(浙江大学PAT 编程初级)