第七十六套:
76.1:输出结构体的信息
typedef struct
{
int num;
char name[9];
char sex;
struct {
int year,month,day ;} birthday;
float score[3];
}STU;
/**********found**********/
void show(STU tt)
{
int i;
printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
/**********found**********/
printf("%5.1f", tt.score[i]);
printf("\n");
}
76.2:排序数组中的元素
void fun(int *a,int n)
{
int i, m, t, k;
for(i=0; i<n;i++)
{
/*************found**************/
m=i;
for(k=i+1; k<n; k++)
if(a[k]>a[m])
m=k;
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
76.3:—去数首位—
unsigned fun(unsigned w)
{
int n=1,j,s=1;
unsigned t;
t=w;
while(t>=10)
{
t/=10;
n++;
}
for(j=1;j<n;j++)
s*=10;
return w%s;
}
第七十七套:
77.1:由短到长排序字符串
void fun(char (*ss)[N])
{
int i, j, k, n[M]; char t[N];
for(i=0; i<M; i++) n[i]=strlen(ss[i]);
for(i=0; i<M-1; i++)
{
k=i;
/**********found**********/
for(j=i+1; j<M; j++)
/**********found**********/
if(n[k]>n[j]) k=j ;
if(k!=i)
{
strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
/**********found**********/
strcpy(ss[k],t);
n[k]=n[i];
}
}
}
77.2: —判断不同串中的字符是否相同—
void fun(char *str, char ch )
{
while ( *str && *str != ch ) str++;
/**********found**********/
if ( *str != ch )
{
str [ 0 ] = ch;
/**********found**********/
str[1] = 0;
}
}
77.3:—倒序字符串—
void fun(char*s)
{
char ch;
int i=0,m,n;
m=n=strlen(s)-1;
while(i<(n+1)/2)
{
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
}
}
第七十八套:
78.1:—等长串组(左补)—
void fun(char (*ss)[N])
{
int i, j, k=0, n, m, len;
for(i=0; i<M; i++)
{
len=strlen(ss[i]);
if(i==0) n=len;
if(len>n) {
/**********found**********/
n=len; k=i;
}
}
for(i=0; i<M; i++)
if (i!=k)
{
m=n;
len=strlen(ss[i]);
/**********found**********/
for(j=len; j>=0; j--)
ss[i][m--]=ss[i][j];
for(j=0; j<n-len; j++)
/**********found**********/
ss[i][j]='*';
}
}
78.2:计算整数n的阶乘
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/*************found**************/
result*=n--;//不能是--n
/*************found**************/
return result;
}
78.3:删除串中指定字符
void fun( char s[],int c)
{
int i,j=0;
for(i=0;s[i]!='\0';i++)
if(s[i]!=c)
s[j++]=s[i];
s[j]='\0';
}
第七十九套:
79.1:等长串组(右补)
void fun(char (*ss)[N])
{
int i, j, n, len=0;
for(i=0; i<M; i++)
{
n=strlen(ss[i]);
if(i==0) len=n;
if(len<n)len=n;
}
for(i=0; i<M; i++) {
/**********found**********/
n=strlen(ss[i]);
for(j=0; j<len-n; j++)
/**********found**********/
ss[i][n+j]='*';
/**********found**********/
ss[i][n+j+0]='\0';
}
}
79.2:特殊位置改大写
void fun(char *p)
{
int k=0;
for ( ;*p;p++)
if (k)
{
/*************found**************/
if (*p==' ')
{
k=0;
/*************found**************/
*(p-1)=toupper( *(p-1));
}
}
else
k=1;
}
79.3:去首尾后按值降序排
void fun(char *s,int num)
{
int i,j;
char ch;
for(i=1;i<6;i++)
for(j=i+1;j<6;j++)
if(s[i]<s[j])
{
ch=s[i];
s[i]=s[j];
s[j]=ch;
}
}
第八十套:
80.1:—找出最长字符串所在下标—
int fun(char (*ss)[N], int *n)
{
int i, k=0, len=0;
for(i=0; i<M; i++)
{
len=strlen(ss[i]);
/**********found**********/
if(i==0) *n=len;
if(len>*n) {
/**********found**********/
*n=len;
k=i;
}
}
return(k);
}
80.2:计算数学公式
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/*************found**************/
t+=1.0/i;
/*************found**************/
return t;
}
80.3:统计串中字符出现的次数
int fun(char *str, char *substr)
{
int i,j=0;
for(i=0;str[i]!='\0';i++)
if(str[i]==substr[0]&&str[i+1]==substr[1])
j++;
return j;
}
第八十一套:
81.1:字母转换
char fun(char ch)
{
/**********found**********/
if ((ch>='a')&&(ch<='z'))
return ch -'a' + 'A';
if ( isupper(ch) )
/**********found**********/
return ch +'a'-'A' ;
/**********found**********/
return ch;
}
81.2:—排列合理化数组—
void fun(int *a)
{
int I,j,k,m;
printf("Enter 4 number: ");
for(I=0;I<M;I++) scanf("%d",&a[I]);
printf("\n\nThe result :\n\n ");
for(I=M;I>0;I--)
{
k=a[M-1];
for(j=M-1;j>0;j--)
/*************found**************/
a[j]=a[j-1];
a[0]=k;
for(m=0;m<M;m++) printf("%d ",a[m]);
printf("\n ");
}
}
81.3:计算所有因子之和
int fun(int n)
{
int i,s=0;
for(i=2;i<n;i++)
if(n%i==0)
s+=i;
return s;
}
第八十二套:
82.1:—计算数学公式—
double fun(double x, int n)
{
double f, t; int i;
/**********found**********/
f = 1.0;
t = -1;
for (i=1; i<n; i++)
{
/**********found**********/
t *= (-1)*x/i;
/**********found**********/
f += t;
}
return f;
}
82.2:摸球组合:
int fun()
{
int i,j,k,sum=0;
printf("\nThe result :\n\n ");
/*************found**************/
for(i=1;i<=3;i++)
{
for (j=1;j<=5;j++)
{
k=8-i-j;
/*************found**************/
if(k>=0&&k<=6)
{
sum=sum+1;
printf("red:%4d white:%4dblack:%4d\n ",i,j,k);
}
}
}
return sum;
}
82.3:计算数学公式
double fun(int n)
{
double i;
double s=0.0,s1=1.0;
for(i=1;i<=n;i++)
{
s1*=(1.0)/i;
s+=s1;
}
return s;
}
第八十三套:
83.1:计算数学公式
double fun(double x)
{
double f, t; int n;
f = 1.0 + x;
t= x ;
n = 1;
do {
n++;
t*=(-1.0)*x/n;
f += t;
}
while(fabs(t) >=1e-6);
return f;
}
83.2:整数次方数的低次方
long fun(int x, int y, long *p)
{
int i;
long t=1;
/*************found**************/
for(i=1;i<=y;i++)
t=t*x;
*p=t;
/*************found**************/
t=t%1000;
return t;
}
83.3:—计算数学公式—
double fun(double x)
{
int n=1;
double sum=0.0,s1=1.0,t=1.0,p=1.0,s0;
do{
s0=s1;
sum+=s0;
t*=n;
p*=(0.5-n+1)*x;
s1=p/t;
n++;
}while(fabs(s1-s0)>=1e-6);
return sum;
}
第八十四套:
84.1:计算数学公式
double fun(double x, int n)
{
double f, t; int i;
f = 1.0;
/**********found**********/
t=1.0;
/**********found**********/
for(i=1;i<n;i++)
{
/**********found**********/
t*=x/i;
f += t;
}
return f;
}
84.2:找出各位数相等的整数
int fun(int *s, int n)
{
int i,j,k,a,b,c;
j=0;
for(i=100; i<n; i++)
{
/*************found**************/
k=i;
a=k%10;
k/=10;
/*************found**************/
b=k%10;
c=k/10;
if(a==b && a==c)
s[j++]=i;
}
return j;
}
84.3:计算数学公式(方差)
double fun(double x[10])
{
int i;
double x1=0.0,s=0.0;
for(i=0;i<10;i++)
x1+=x[i]/10;
for(i=0;i<10;i++)
s+=(x1-x[i])*(x1-x[i])/10;
return sqrt(s);
}
第八十五套:
85.1:计算数学公式
double fun(double x)
{
double f, t; int n;
/**********found**********/
f = 1.0+x;
t = x;
n = 1;
do {
n++;
/**********found**********/
t *= x/n;
/**********found**********/
f += t;
} while (fabs(t) >= 1e-6);
return f;
}
85.2:次方值+后三位数之和
int fun(int n,int *value)
{
int d,s,i;
/*************found**************/
d=1;
/*************found**************/
s=0;
for(i=1;i<=5;i++)
d=d*n;
*value=d;
for(i=1;i<=3;i++)
{
s=s+d%10;
/*************found**************/
d=d/10;
}
return s;
}
85.3:—相邻两个数的平均值的平方根之和—
double fun(double x[9])
{
int i,j=1;
double s=0.0;
for(i=0;i<9;i++)
if(j<=8)//这里的j有大妙处
{
s+=sqrt((x[i]+x[i+1])/2.0);//与for循环矛盾
j++;
}
return s;
}
第八十六套:
86.1:统计范围的素数个数
int fun(int n)
{
int i,j, count=0;
printf("\nThe prime number between 3 to %d\n", n);
for (i=3; i<=n; i++) {
/**********found**********/
for (j=2; j<i; j++)
/**********found**********/
if (i%j == 0)
break;
/**********found**********/
if (j>=i)
{
count++; printf( count%15? "%5d":"\n%5d",i); }
}
return count;
}
86.2:累计和,并将特殊值放入新组
int fun(int n,int *a)
{
/**************found**************/
int i,j=0,k,sum;
sum=0;
for(k=3,i=0;i<n;i++,k+=5)
{
sum=sum+k;
/**************found**************/
if(sum%4==2)
a[j++]=sum;
}
return j;
}
86.3:计算数学公式
double fun(int n)
{
int i;
double s=0.0;
for(i=1;i<=n;i++)
s+=(1.0/(2*i-1)-1.0/(2*i));
return s;
}
第八十七套:
87.1:统计长整数各位上出现特定数的个数
void fun(long n)
{
c1=c2=c3=0;
while(n)
{
switch(n%10)
{
case 1:
c1++;break;
case 2:
c2++;break;
case 3:
c3++;
}
n/=10;
}
}
87.2:统计数上各位出现特定数的个数2.0
int fun(unsigned n,int *zero)
{
int count=0,max=0,t;
do
{
t=n%10;
/*************found**************/
if(t==0)
count++;
if(max<t)
max=t;
n=n/10;
}while(n);
/*************found**************/
*zero=count;
return max;
}
87.3:计算数学公式
double fun(int n)
{
int i;
double s=0.0,s1=1.0;
for(i=1;i<=n;i++)
{
s1*=i;
s+=1.0/s1;
}
return s;
}
第八十八套:
88.1:—串中移奇不移偶—
void fun(char *s)
{
int i, n, k; char c;
n=0;
for(i=0; s[i]!='\0'; i++) n++;
/**********found**********/
if(n%2==0) k=n-1 ;
else k=n-2;
/**********found**********/
c= s[k];
for(i=k-2; i>=1; i=i-2) s[i+2]=s[i];
/**********found**********/
s[1]=c ;
}
88.2:计算数学公式
long fun (int a, int n)
{
int j ;
/**************found**************/
long s = 0, t = 0 ;
for ( j = 0 ; j < n ; j++)
t = t * 10 + a ;
s = t ;
for ( j = 1 ; j < n ; j++) {
/**************found**************/
t = t / 10 ;
s = s - t ;
}
return(s) ;
}
88.3:统计字符串中各字母出现的次数
void fun(char *tt, int pp[])
{
int i;
for(i=0;i<26;i++)
pp[i]=0;
for(;*tt!='\0';tt++)
pp[*tt-'a']++;
}
第八十九套:
89.1:串组中寻找指定串
int fun(char (*ss)[M],char *t)
{
int i;
/**********found**********/
for(i=0; i< N ; i++)
/**********found**********/
if(strcmp(ss[i],t)==0 ) return i ;
return -1;
}
89.2:范围内查找特定数
int fun( int *b )
{
int k,a1,a2,i=0;
for(k=10; k<=55; k++) {
/************found************/
a2=k/10;
a1=k-a2*10;
if((k%3==0 && a2==5)||(k%3==0 && a1==5))
{
b[i]=k; i++; }
}
/************found************/
return i;
}
89.3:—删除串中后导*—串的经典问题4.0—
void fun( char *a )
{
while(*a)
a++;
a--;
while(*a=='*')
a--;
*(a+1)='\0';
}
第九十套:
90.1:输出表尾数据
void fun( char *a )
{
while(*a)
a++;
a--;
while(*a=='*')
a--;
*(a+1)='\0';
}
90.2:逆序输出串(递归)
void fun (char *a)
{
if ( *a )
{
fun(a+1) ;
/************found************/
printf("%c" ,*a) ;
}
}
90.3:比较字符串的长度
char *fun ( char *s, char *t)
{
int i,j;
for(i=0;s[i]!='\0';i++);
for(j=0;t[j]!='\0';j++);
if(i<j)
return t;
else
return s;
}