你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

第六次作业

2021/12/6 14:06:26

设计一个函数,该函数用于求一个任意大小的二维double型数组的平均值。

该函数的名字叫做matrixAvg

请使用下面的main函数测试你设计的函数

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int N,M;

    scanf("%d %d",&M,&N);

    double A[M][N];

    for(int i=0;i<M;i++)
    {
        for(int j=0;j<N;j++)
        {
            scanf("%lf",&A[i][j]);
        }
    }
    double sum=0;

    for(int i=0;i<M;i++)
    {
        for(int j=0;j<N;j++)
        {
            sum=sum+A[i][j];
        }
    }
    int d=M*N;
    printf("%.2f",sum/d);

    return 0;
}

计一个函数,该函数用于实现一维数组的循环右移。

函数原型为:void arrayShiftRight(int a[ ],int n,int m);

该函数的功能是将长度为n的数组a循环右移m个位置。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int m,n;

    scanf("%d %d",&n,&m);

    int A[n];
    int B[n];

    for(int i=0;i<n;i++)
    {
        scanf("%d",&A[i]);
    }

    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(j==n-1)
            {
                B[0]=A[j];
            }
            else B[j+1]=A[j];
        }
        for(int j=0;j<n;j++)
        {
            A[j]=B[j];
        }
    }
    for(int i=0;i<n;i++)
    {
        printf("%d ",A[i]);
    }
    return 0;
}

本题要求实现一个对整数数组进行简单排序的函数。

函数原型为:void sort( int a[], int n );

其中a是待排序的数组,n是数组a中元素的个数。该函数用某种方法将数组a中的元素按升序排列,结果仍然在数组a中。

#include <stdio.h>
#include <stdlib.h>

void work(int ints[],int n)
{
    int t=0;
    while(t==0)
    {
        t=1;
        for(int i=0;i<n;i++)
        {
            if(ints[i]>ints[i+1])
            {
                int temp=ints[i];
                ints[i]=ints[i+1];
                ints[i+1]=temp;
                t=0;
            }
        }
    }
}
void Printf(int ints[],int n)
{
    printf("After sorted the array is: ");
    for(int i=0;i<n;i++)
    {
        printf("%d ",ints[i]);
    }

}
int main()
{
    int n;

    scanf("%d",&n);

    int ints[n];

    for(int i=0;i<n;i++)
    {
        scanf("%d",&ints[i]);
    }

    work(ints,n);

    Printf(ints,n);

    return 0;
}

本题要求实现一个求整数的逆序数的简单函数。

函数原型为:int reverse( int number );

其中函数reverse须返回用户传入的整型number的逆序数。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int reverse(int n)
{
    int N=1;
    int t=10;
    for(;abs(n)/1>=10;t=t*10)
    {
        if(abs(n)/t>0) N=N+1;
        else break;
    }

    int A[N];

    for(int i=0;i<N;i++)
    {
        t=t/10;
        A[i]=n/t;
        n=n-A[i]*t;
    }

    int B[N];

    for(int i=0;i<N;i++)
    {
        B[i]=A[N-1-i];
    }
    for(int i=0;i<N;i++)
    {
        A[i]=B[i];
    }

    int result=0;
    t=1;
    for(int i=N-1;i>=0;i--)
    {
        result=A[i]*t+result;
        t=t*10;
    }
    if(A[N-1]==0)
    result=result/10;

    return result;
}
int main()
{
    int n;

    scanf("%d",&n);

    printf("%d\n",reverse(n));

    return 0;
}

本题要求的程序功能是:首先在main函数中输入10个数,然后在被调函数ave中求出这10个数的平均值,最后在main函数中输出结果。要求写出函数ave。

函数原型为:double ave(double a[],int n);

其中an是由主调函数传入的参数。

#include <stdio.h>
#include <stdlib.h>

double ave(double x[],int N)
{
    double sum=0;
    double result;

    for(int i=0;i<N;i++)
    {
        sum=sum+x[i];
    }

    result=sum/N;

    return result;
}
int main()
{
    int N;

    scanf("%d",&N);

    double x[N];

    for(int i=0;i<N;i++)
    {
        scanf("%lf",&x[i]);
    }

    double p=ave(x,N);

    printf("ave=%.2f\n",p);

    return 0;
}

若两个复数分别为:c1=x1+y1i  和c2=x2+y2i,则它们的乘积为 c1×c2=(x1x2−y1y2)+(x1y2+x2y1)i。

本题要求实现一个函数计算两个复数之积。

#include <stdio.h>
#include<string.h>

double result_real, result_imag;
void complex_prod( double x1, double y1, double x2, double y2 )
{
    result_real=x1*x2-y1*y2;
    result_imag=x1*y2+x2*y1;
}

int main(void) {
    double imag1, imag2, real1, real2;

    scanf("%lf %lf", &real1, &imag1);
    scanf("%lf %lf", &real2, &imag2);
    complex_prod(real1, imag1, real2, imag2);
    printf("product of complex is (%f)+(%f)i\n", result_real, result_imag);    return 0;
}

本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。

函数原型为:int search( int n );

其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。

#include<stdio.h>
int search( int n )
{
    int i,j,a=0,b,c,e;
    for(i=101;i<=n;i++)
    {
        e=i/100;
        b=(i-e*100)/10;
        c=(i-e*100-b*10);
        if(e==b||b==c||e==c)
        {
            for(j=2;j<32;j++)
          {
               if(i%j==0)
                if(i/j==j)
                {
                    a++;
                    continue;
                }
          }
        }
    }
    return(a);
}
void main()
{
    int number;
    scanf("%d",&number);
    printf("count=%d\n",search(number));
}

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函数原型如下:int f( int n );

函数f应返回第n个Fabonacci数。

#include<stdio.h>
int f( int n )
{
 int a[n],i;
 a[0]=1;a[1]=1;
 for(i=2;i<n;i++)
  a[i]=a[i-2]+a[i-1];
  return(a[n-1]);
}
void main()
{
    int n;
    scanf("%d", &n);
    printf("%d\n", f(n));}

本题引用自PTA,原作者:浙江大学陈越
本题要求实现一个计算非负整数阶乘的简单函数。函数原型为:int Factorial( const int N );

其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。

#include<stdio.h>
int Factorial(int N)
{
    int a,i;
    if(N<=0)
    a=0;
    else
    for(a=1;N>0;N--)
    {
        a=a*N;
    }
    return(a);
}
void main()
{
    int N, NF;
    scanf("%d", &N);
    NF = Factorial(N);
    if (NF)  printf("%d! = %d\n", N, NF);
    else printf("Invalid input\n");
}

无答案 判断奇偶性

            判断是否回文串

       函数求值

    求子串定位函数

     分段函数