趣味C语言小编程

Python09

趣味C语言小编程,第1张

题眼就是求出2~10的最小公倍数,然后减一。

模拟排队的算法是可行的,但不是最优的。

#include <stdio.h>

int od(int x,int n) //x是否能被n整除,是返回1,否返回0

{

if (x%n) return 0

return 1

}

int gbs(int a[],int n) //求a[n]内所有元素的最小公倍数

{

int i,j,k,o,m=0

int b[20],c[100]

for (i=0i<ni++)

{

if(m<a[i]) m=a[i]

b[i]=a[i]

}

j=2o=0

while (j<=m)

{

k=0

for (i=0i<ni++){

if (od(b[i],j)) k++

if (k>1) break

}

if(k>1)

{

c[o++]=j

for (i=0i<ni++)

if (od(b[i],j)) b[i]=b[i]/j

m=0

for (i=0i<ni++)

if(m<b[i]) m=b[i]

}

else

j++

}

k=1

for(i=0i<oi++)

{

k*=c[i]

}

for (i=0i<ni++)

{

k*=b[i]

}

return k

}

main()

{

int a[10]

for(int i=1i<=10i++)

a[i-1]=i

printf("count=%d\n",gbs(a,10)-1)

getchar()

return 0

}

你写一下一下程序的输出结果吧:

#include stdio.h

int main()

{

        int i = 1

        printf("%d,%d,%d\n",i++,i++,i++) 

        printf("%d,%d,%d\n",i++,i++,i) 

        printf("%d,%d,%d\n",i++,i,i++)  

        printf("%d,%d,%d\n",i,i++,i++)   

        printf("%d,%d,%d,%d\n",i++,i,i+=2,i++)    

        printf("%d,%d,%d,%d\n",i++,i,i=2,i++)     

        i=8

        printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--)

        i=8

        printf("%d\n%d\n%d\n%d\n%d\n%d\n",i--,--i,i++,i--,-i++,-i--) 

        return 0

}

     这段程序用于计算100的阶乘末尾的零的个数,思路如下:末尾零的个数就代表含有因子10的个数,而10=2*5,所以每一对2和5因子就对应结果末尾的一个零,所以结果末尾的零的个数即为因子2和5的组合的数量,亦即为因子2和5中数量少的一个,很明显因子2的个数比因子5的个数多,所以只需求100以内因子5的个数。

     首先计算100以内能被5整除的个数,对应代码:

   for(a=5 a<=100 a+=5)  

   {

      count++

     又因为能被25整除的数含有两个因子5,所以还须加1,对应代码:

   if(!(a%25)) count++