第六次作业

  • Post author:
  • Post category:其他


设计一个函数,该函数用于求一个任意大小的二维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);

其中

a



n

是由主调函数传入的参数。

#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”);

}

判断奇偶性

#include<stdio.h>

#include<string.h>

int even(int n)

{


if((n%2)==0)

return 1;

else

return 0;

}

int main()

{

int n;

scanf(“%d”, &n);

if (even(n))

{


printf(“%d is even.\n”, n);

}

else

{


printf(“%d is odd.\n”, n);

}

}

判断回文串

#include<stdio.h>

#include<string.h>

int whetheriscopy ( char a[10] )

{


char p[10];

int i,j;

j=strlen(a);

j–;

for(i=0;i<j&&a[i]==a[j];i++,j–);

if(i>=j)

{


return 1;

}

else

{


return 0;

}

}

int main()

{


char s[100];

gets(s);

if(whetheriscopy(s))

printf(“Yes”);

else

printf(“No”);

}

本题目要求计算下列分段函数f(x)的值:

#include<stdio.h>

int main()

{


float a,sum;

scanf(“%f”,&a);

if(a>=5)

{


sum=a*a+4*a-2;

printf(“f(%.1f) = %.1f”,a,sum);

}

else if(a>=0&&a<5)

{


sum=3*a+2;

printf(“%.1f”,sum);

}

else if(a<0)

{


sum=0;

printf(“%.1f”,sum);

}

}

函数求值

求子串定位函数无答案



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