习题集

/*编写一个函数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);
}

posted @ 2009-03-27 14:54  ThirdEye  阅读(227)  评论(0编辑  收藏  举报