全国二级C语言51~60套试题汇编——————编程练习题

第五十一套:

51.1:抽出偶数,组成新数

unsigned long fun(unsigned long  n)
{
       
   unsigned long  x=0, s, i;   int  t;
   s=n;
/**********found**********/
   i=1;
/**********found**********/
   while(s>0)
   {
       t=s%10;
      if(t%2==0){
     
/**********found**********/
         x=x+t*i;  i=i*10;
      }
       s=s/10;
   }
   return  x;
}

51.2:输出方阵,并求出俩对角线之和

int  fun(int  n, int  xx[][M])
{
      
  int  i, j, sum=0;
  printf( "\nThe %d x %d matrix:\n", M, M );
  for( i = 0; i < M; i++ )
  {
       for( j = 0; j < M; j++ )
/************found************/
      printf( "%d ", xx[i][j] );
    printf("\n");
  }
  for( i = 0 ; i < n ; i++ )
    sum += xx[i][i]+xx[i][ n-i-1 ];
  return( sum );
}

51.3:整合新数

void fun(int a, int b, long *c)
{
     
	*c=(a/10)*1000+(b%10)*100+(a%10)*10+b/10;
}

第五十二套:

52.1:删除数组排列中的奇数

int fun(int  a[], int  n)
{
      
  int  i,j;
   j = 0;
   for (i=0; i<n; i++)
/**********found**********/
      if (a[i]%2== 0) {
     
/**********found**********/
        a[j] = a[i] ; j++;
      }
/**********found**********/
   return j ;
}

52.2:求分段函数值(用递归)

int fun ( int n )
{
      
 int  c;
/************found************/
   if(n==1)
     c = 10 ;
   else     
     c= fun(n-1)+2;  
   return(c);
}

52.3:—对于串中后导*的规定—串的经典问题3.0—

void  fun( char *a,int  n )
{
     
	int k=0,i=0;
	char *t,*p;
	p=t=a;
	while(*t)
		t++;
	t--;
	while(*t=='*')
	{
     
		t--;
		k++;
	}
	if(k>n)
	{
     
		while(*p&&p<t+n+1)
		{
     
			a[i]=*p;
			i++;
			p++;
		}
		a[i]='\0';
	}
}

第五十三套:

53.1:—统计单向链表中带结点的个数—

void fun( SLIST  *h, int  *n)
{
      
   SLIST  *p;
/**********found**********/
    *n =0;
   p=h->next;
   while(p)
   {
       (*n)++;
/**********found**********/
      p=p->next;
   }
}

53.2:标识指定字符串的最后位置

char * fun (char  *s,  char *t )
{
     
  char   *p , *r, *a;
/************found************/
  a = NULL;
  while ( *s )
  {
        p = s;   r = t;
      while ( *r )
/************found************/
        if ( *r == *p )
        {
      r++;  p++; }
        else  break;
      if ( *r == '\0' ) a = s;
      s++;
  }
  return  a ;
}

53.3:整合新数

void fun(int a, int b, long *c)
{
     
	*c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;
}

第五十四套:

54.1:在二进制文件中读入数据

int fun(STYPE *std)
{
     
/**********found**********/
   FILE  *fp;     int  i;
   if((fp=fopen("myfile5.dat","wb"))==NULL)
      return(0);
   printf("\nOutput data to file !\n");
   for(i=0; i<N; i++)
/**********found**********/
      fwrite(&std[i], sizeof(STYPE), 1,fp);
   fclose(fp);
   return (1);
}

54.2:对称镜面(先顺序)

void fun (char  *s, char  *t)
{
       
    int i, sl;
    sl = strlen(s);
/************found************/
    for( i=0; i<sl; i++)
         t[i] = s[i];
    for (i=0; i<sl; i++)
	t[sl+i] = s[sl-i-1];
/************found************/
    t[2*sl] = '\0';
}

54.3:整合新数

void fun(int a, int b, long *c)
{
     
*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;
}

第五十五套:

55.1:—按典排序学生数据—

struct student {
     
  long  sno;
  char  name[10];
  float  score[3];
};
void fun(struct student  a[], int  n)
{
     
/**********found**********/
 struct student  t;
  int  i, j;
/**********found**********/
  for (i=0; i<n-1; i++)//注意数组范围
    for (j=i+1; j<n; j++)
/**********found**********/
      if (strcmp(a[i].name,a[j].name) > 0)
      {
       t = a[i];   a[i] = a[j];  a[j] = t;  }
}

55.2:—找出最大字符放入首位—

void fun( char *p )
{
      
   char   max,*q;   int   i=0;
    max=p[i];
    while( p[i]!=0 )
    {
        if( max<p[i] )
	{
       max=p[i];
/**********found**********/
	   q=p+i;
	}
        i++;
    }
/**********found**********/
    while(q>p )
    {
       *q=*(q-1);
       q--;
    }
    p[0]=max;
}

55.3:将范围内的数据放入新数组中

typedef  struct
{
       char  num[10];
   int   s;
} STREC;
int  fun( STREC  *a,STREC *b,int l, int h )
{
     
	int i,j=0;
	for(i=0;i<N;i++)
		if(a[i].s>=l&&a[i].s<=h)
			b[j++]=a[i];
	return j;
}

第五十六套:

56.1:—找出结构体数组中的指定数据—

typedef  struct
{
       char  num[10];
   int  year,month,day ;
}STU;
/**********found**********/
STU fun(STU  *std, char  *num)
{
      
   int  i;       STU  a={
     "",9999,99,99};
   for (i=0; i<N; i++)
/**********found**********/
      if( strcmp(std[i].num,num)==0 )
/**********found**********/
           return (std[i]);
   return  a;
}

56.2:在串中找出特定字符串的个数

int fun (char  *s,  char  *t)
{
     
 int  n;  char *p, *r;
 n=0;
 while(*s)
   {
     p=s;
    r=t;
    while (*r)
/*************found**************/
         if(*r==*p)  {
     r++; p++;}
         else  break;
/*************found**************/
    if(*r=='\0')
    n++;
    s++;
   }
 return n;
}

56.3:删除串中值为偶数的字符

void fun(char  *s, char t[])
{
     
int j=0 ;
for(;*s!='\0';s++)
	if(*s%2)
	t[j++]=*s;
t[j]='\0';
}

第五十七套:

57.1:—找出指定人员数据—

typedef  struct
{
       int  num;
   int  year,month,day ;
}STU;
int fun(STU  *std, STU  *k, int  year)
{
      
   int  i,n=0;
   for (i=0; i<N; i++)
/**********found**********/
      if( std[i].year ==year)
/**********found**********/
         k[n++]= std[i] ;
/**********found**********/
   return (n);
}

57.2:输出数的质因子(素数)

int IsPrime(int n)
{
      
  int i,m;
  m=1;
  for(i=2;i<n;i++)
 /*************found**************/
     	if(!(n%i))
	{
     
		m=0;
		break;
	}

  return(m);
}

57.3:—找出成绩最高的学生记录—

typedef struct ss    /*定义结构体*/
{
      char num[10]; 
  int s;
} STU;
void fun(STU a[], STU *s)
{
     
	int i;
	*s=a[0];
	for(i=0;i<N;i++)
		if(s->s < a[i].s)
			*s=a[i];
}

第五十八套:

58.1:—成倍改动结构体中的数据—

  modify(&std,a);
  void modify(STU  *ss,float  a)
{
      
   int  i;
   for(i=0; i<3; i++)
/**********found**********/
       ss->score[i] *=a;
}

58.2:—求阶乘?–

long fun(int k)
{
      
/*************found**************/
  if(k>1)
     return(k*fun(k-1));
  return 1;
}

58.3:n倍于矩阵左下三角

void fun(int a[ ][N], int n)
{
     
	int i,j;
	for(i=0;i<N;i++)
		for(j=0;j<=i;j++)
			a[i][j]*=n;
}

第五十九套:

59.1:将结构体成员升序排序

fun(std);
void fun(PERSON  std[])
{
     
/**********found**********/
   PERSON temp;
   if(std[0].num>std[1].num)
  {
       temp=std[0];  std[0]=std[1];  std[1]=temp;  }
   if(std[0].num>std[2].num)
  {
       temp=std[0];  std[0]=std[2];  std[2]=temp; }
   if(std[1].num>std[2].num)
  {
       temp=std[1];  std[1]=std[2];  std[2]=temp;  }
}

59.2:连接串

void  fun ( char  str[][10], int  m, char  *pt )
{
     
/************found************/
    int  k, q, i ;
    for ( k = 0; k < m; k++ )
    {
       q = strlen ( str [k] );
       for (i=0; i<q; i++)
/************found************/
       pt[i] = str[k][i] ;
       pt += q ;
       pt[0] = 0 ;
    }
}

59.3:归零于矩阵左下三角

void fun (int a[][N])
{
     
	int i,j=0;
	for(i=0;i<N;i++)
		for(j=0;j<=i;j++)
			a[i][j]*=0;
}

第六十套:

60.1:找出结构体中的最大数据

typedef  struct
{
       char  name[10];
   int  age;
}STD;
STD fun(STD  std[], int  n)
{
       STD  max;        int  i;
/**********found**********/
   max= std[0];
   for(i=1; i<n; i++)
/**********found**********/
   if(max.age<std[i].age )  max=std[i];
   return max;
}

60.2:整数交换

void fun(int *a,int *b)
{
      int t;
/*************found**************/
  t=*b;*b=*a;*a=t;
}

60.3:—将列-MAX降维到一维数组中—

void fun(int  tt[M][N],int  pp[N])
{
     
 int i,j,max;
 for(j=0;j<N;j++)
 {
     
	 max=tt[0][j];
	 for(i=0;i<M;i++)
		 if(max<tt[i][j])
			 max=tt[i][j];
	 pp[j]=max;//j的含义!
 }
}

你可能感兴趣的:(全国二级C语言,全国二级C语言,计算机基础与理论,技术小白)