第五十一套:
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的含义!
}
}