/*编写一个函数fun,她的功能是:求1 到m之间能被7或11
整除的所有的整数放在数组a中,通过n返回这些数的个数*/
#include <stdio.h>
#define M 100
void fun( int m, int *a, int *n)
{
int i,j=0;
for(i=1;i<=m;i++)
if ((i%7==0)||(i%11==0))
a[j++]=i;
*n=j;
}
main()
{
int aa[M],n,k;
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)
printf("\n");
else
printf("%4d",aa[k]);
printf("\n");
}
/*求出一个2*M整型的二维数组中最大元素的值,并将此值返回调用函数*/
#include <stdio.h>
#define M 4
fun(int a[][M])
{
int i,j;
int max;
max=a[0][0];
for(i=0;i<2;i++)
{
for (j=0;j<M;j++)
if (max<a[i][j])
max=a[i][j];}
return max;
}
main()
{
int arr[2][M]={5,8,3,45,76,-4,12,82};
printf("max=%d\n",fun(arr));
}
/*将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回*/
#include <stdio.h>
void fun(int m,int *k,int xx[])
{
int i,j;
*k=0;
for(i=3;i<m;i++)
for (j=2;j<i;j++)
if (i%j==0)
{
xx[*k]=i;
(*k)++;
break;
}
}
main()
{
int m,n,zz[100];
printf("Please input a integer number between 10 and 100 : \n");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\n There are %d non-prime numbers less than %d:",m,n);
for (n=0; n<m; n++)
printf("\n %4d", zz[n]);
}
/44**************/
#include <stdio.h>
#define N 8
typedef struct
{
char num[10];
double s;
}STREC;
double fun(STREC *a,STREC *b,int *n)
{
int i,j=0;
double sum,ave;
sum=0.0;
*n=0;
for (i=0;i<N;i++)
{
sum =sum +a[i].s ;
}
ave =sum/N;
for (i=0;i<N;i++)
{
if (a[i].s < ave)
b[j++]=a[i];
(*n)++;
}
return ave;
}
main()
{
STREC s[N] ={{"GA01",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};
STREC h[N],t;
/* FILE *out; */
int i,j,n;
double ave;
ave =fun(s,h,&n);
printf("The %d student data which is lower than %7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf(" %s %4.1f\n ", h[i].num,h[i].s);
printf("\n");
/* out = fopen ("out.dat","w");
fprintf(out, "%d\n%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (h[i].s >h[j].s)
{
t=h[i];
h[i]=h[j];
h[j]=t;
}
for (i=0;i<n;i++)
fprintf(out,"%4.1f\n",h[j].s);
fclose(out); */
getch();
}
/*函数的功能是:移动字符串的内容,移动的规则如下:把1到m个字符平移到字符串的最后,把m+1到最后的字符移动到前面,;例如ABCDEFGHIJK,M的值为3,则移动后的结果是DEFGHIJKABC*/
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *w,int m)
{
int i,j,k=0;
char temp;
while (w[k]!='\0')
k++;
/*k=strlen(w);*/
for (i=0;i<m;i++)
{temp=w[0];
{
for(j=1;j<k;j++)
w[j-1]=w[j];
}
w[k-1]=temp;
}
}
main()
{
char a[N]="ABCDEFGHIJK";
int m;
printf("The orginal string :\n");
puts(a);
printf("\n\nEnter m : ");
scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving :\n");
puts(a);
printf("\n\n");
}
/*函数的功能是,计算并输出3到n之间(含3和n)所有素数的平方根之和,*/
#include <stdio.h>
#include <math.h>
double fun(int n)
{
int i,k,j;
double sum=0.0;
for (i=3;i<=n;i++)
{ k=1;
for (j=2;j<i;j++)
if(i%j==0)
k=0;
if(k==1)
sum=sum+sqrt(i);
}
return sum;
}
main()
{
int n;
double sum;
printf("\n\nInput n: ");
scanf("%d",&n);
sum=fun(n);
printf("\n\n sum=%f\n\n",sum);
}