㈠ c语言趣味编程:话说有一只狗熊到玉米地里掰玉米,一边掰,一边吃,第一天吃了一半,又拿走一个回去喂小狗

#include<stdio.h>
void main()
{
int day, x1, x2;
printf("狗熊到玉米地吃了包谷");
printf("第一天吃了一半又拿走一个回去专喂小狗熊。\n");
printf("第二天又去吃了剩下的一属半,走是任然带一个回去。/n");
printf("以后每天都吃前一天剩下的一半,拿走一个。/n");
printf("到了第十天时,地里只剩下一个包谷。求地里一共有多少包谷。/n");
day=10;
x2=1;
while (day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("包谷总数=%d\n",x1);
}

㈡ 趣味C语言小编程

题眼就是求出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=0;i<n;i++)
{
if(m<a[i]) m=a[i];
b[i]=a[i];
}
j=2; o=0;
while (j<=m)
{
k=0;
for (i=0;i<n;i++){
if (od(b[i],j)) k++;
if (k>1) break;
}
if(k>1)
{
c[o++]=j;
for (i=0;i<n;i++)
if (od(b[i],j)) b[i]=b[i]/j;
m=0;
for (i=0;i<n;i++)
if(m<b[i]) m=b[i];
}
else
j++;
}
k=1;
for(i=0;i<o;i++)
{
k*=c[i];
}
for (i=0;i<n;i++)
{
k*=b[i];
}
return k;
}

main()
{
int a[10];
for(int i=1;i<=10;i++)
a[i-1]=i;
printf("count=%d\n",gbs(a,10)-1);
getchar();
return 0;
}