189 8069 5689

c语言函数摘苹果,苹果 c语言

小学编程题目c语言摘红苹果?

程序设计思路:

创新互联公司服务项目包括镶黄网站建设、镶黄网站制作、镶黄网页制作以及镶黄网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,镶黄网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到镶黄省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

一、小朋友和苹果都具有多样属性(比如高度、编号、状态等,还可以扩展出姓名,重量等)。所以小朋友和苹果要定义成结构体。

二、人和苹果数量都是手动输入,因此数组大小不确定,要使用动态数组(不使用动态,就得得限制用户输入的大小)。

三、题目要求确保摘到的总数最多,从最矮的小朋友开始摘,因此小朋友的数组要进行排序。

四、递归函数实现摘苹果逻辑,每人在自己够到的范围中随机摘两个(不够就拿1个)。(递归函数每次发现一个可摘取的苹果,有50%概率看中,都没看中,默认摘取最后一个看中的苹果)。

下面是代码(控制台刷新函数中cls仅限window系统运行,其它操作系统,删除或修改):

#includestdio.h

#includestdlib.h

#includetime.h

#includemalloc.h

#define AFR 7//苹果图像的行数

#define AFC 6//苹果图像的行数

#define CFR 5//小朋友图像的行数

#define CFC 6//小朋友图像的行数

typedef struct apple//表示苹果数据的结构体

{

int aid;//苹果编号

int height;//苹果的高度

int status;//0:表示未被摘取。1:表示已被摘取

char aframe[AFR][AFC];//表示苹果的图像

}APPE;

typedef struct childern//表示小孩子的编号

{

int cid;//小孩子的编号

int height;//小孩子的身高

int n;//小孩摘取的苹果数量

char cframe[CFR][CFC];//表示小朋友的图像

APPE **appes;//小孩摘取的苹果结构指针数组

}CHN;

int n,m;//苹果和小朋友的个数,设为全局变量

APPE *setApps();//设置苹果。成功返回结构数组,失败返回NULL

CHN *setChns();//设置小盆友。同上。

int orderChnByHeight(CHN *chns);//对小朋友数组按照身高升序排列

int getApple(APPE *appes,CHN *chns,char (*strInfo)[100]);//递归,模拟小朋友依次选苹果。异常返回-1

int showFrame(APPE *appes,CHN *chns,char (*strInfo)[100]);

int main()

{

int i;

char (*strInfo)[100]=NULL;//用于显示操作流水

APPE *appes=NULL;

CHN *chns=NULL;

appes=setApps();

chns=setChns();

if(orderChnByHeight(chns)==-1)return 1;

srand(time(NULL));

strInfo=(char (*)[100])malloc(sizeof(char *)*m*100);

for(i=0;im;i++)strInfo[i][0]=0;

if(!strInfo) return 1;

showFrame(appes,chns,strInfo);

return 0;

}

int showFrame(APPE *appes,CHN *chns,char (*strInfo)[100])

{

static int k=1;

int i,j;

system("cls");

printf("\n=============每组图像靠上的数值为高度,靠下的数值为编号============\n");

printf("\n=============为确保能拿到最多的苹果,小朋友们按升序排列============\n");

for(i=0;iAFR;printf("\n"),i++)

  for(j=0;jn;j++)

      printf("%s  ",appes[j].aframe[i]);

printf("\n");

for(i=0;iCFR;printf("\n"),i++)

  for(j=0;jm;j++)

      printf("%s  ",chns[j].cframe[i]);

printf("\n====================================================================\n");

printf("操作流水:\n");

for(i=0;im;i++)

  printf("%s\n",strInfo[i]);

fflush(stdin);

printf("按下任意键进行下一步。。。。。。\n");

getchar();

if(getApple(appes,chns,strInfo)==-1)return -1;

if(k)showFrame(appes,chns,strInfo),k--;

return 1;

}

int getApple(APPE *appes,CHN *chns,char (*strInfo)[100])

{

static int i=0,aflag,cflag;

int j,indexSave;

if(appes==NULL||chns==NULL) return -1;

if(chns[i].n==2)i++;//当前小朋友拿够2个,换下一个小朋友

if(i==m)return 1;//所有人均拿过,结束递归

aflag=0;

for(j=0;jn;j++)

  if(appes[j].status==0) {aflag=1;break;}

if(aflag==0) return 1;//所有苹果均拿完,结束递归

indexSave=-1;

cflag=0;

for(j=0;jn;j++)

{

  if(appes[j].status==0 appes[j].height=chns[i].height)

  {

      cflag=1;

      indexSave=j;

      if(rand()%2)//每次发现,有50%概率拿取,如所有可拿苹果都没选中,选最后发现的目标

          break;

  }

}

if(cflag)//小朋友拿起一个苹果的过程

{

  appes[indexSave].status=1;

  //改变苹果初始图像

  sprintf(appes[indexSave].aframe[6],"     ");

  chns[i].appes[chns[i].n]=appes[indexSave];

  chns[i].n++;

  if(chns[i].n==1)

  {

      //改变小朋友初始图像

      sprintf(chns[i].cframe[0]," %c%c/ ",3,1);

      sprintf(strInfo[i],"编号%d的小朋友拿取了1个苹果(编号%d)\n",chns[i].cid,chns[i].appes[0]-aid);

  }

  if(chns[i].n==2)

  {

      //改变小朋友初始图像

      sprintf(chns[i].cframe[0]," %c%c%c ",3,1,3);

      sprintf(strInfo[i],"编号%d的小朋友拿取了2个苹果(编号%d和编号%d)\n",chns[i].cid,chns[i].appes[0]-aid,chns[i].appes[1]-aid);

  }

}

if(cflag==0 chns[i].n==0) sprintf(strInfo[i],"编号%d的小朋友没有能拿到的苹果,非常沮丧!\n",chns[i].cid),i++;

if(cflag==0 chns[i].n==1) i++;

return getApple(appes,chns,strInfo);

}

int orderChnByHeight(CHN *chns)

{

CHN chnTemp;

int i,j;

chnTemp.appes=(APPE **)malloc(sizeof(APPE*)*2);

if(!chnTemp.appes) return -1;

else

{

  chnTemp.appes[0]=chnTemp.appes[1]=NULL;

  if(chns)

      for(i=0;im-1;i++)

          for(j=i+1;jm;j++)

              if(chns[i].heightchns[j].height)

                  chnTemp=chns[i],chns[i]=chns[j],chns[j]=chnTemp;

}

free(chnTemp.appes);

return 1;

}

CHN *setChns()

{

int i;

CHN *chns=NULL;

printf("请输入小朋友的个数:");

scanf("%d",m);

chns=(CHN *)malloc(sizeof(CHN)*m);

if(!chns) return NULL;

printf("请输入%d个小朋友身高(不超过3位整数):\n",m);

for(i=0;im;i++)

{

  chns[i].cid=i+1;

  scanf("%d",chns[i].height);

  chns[i].height=chns[i].height%1000;//超出3位截取

  chns[i].n=0;

  chns[i].appes=(APPE **)malloc(sizeof(APPE*)*2);

  if(!chns[i].appes) return NULL;

  chns[i].appes[0]=chns[i].appes[1]=NULL;

  //设置小朋友初始图像

  sprintf(chns[i].cframe[0]," \\%c/ ",1);

  sprintf(chns[i].cframe[1]," / \\ ");

  sprintf(chns[i].cframe[2],"-----");

  sprintf(chns[i].cframe[3],"高%3d",chns[i].height);

  sprintf(chns[i].cframe[4],"ID%3d",chns[i].cid);

}

return chns;

}

APPE *setApps()

{

int i;

APPE *appes=NULL;

printf("请输入苹果的个数:");

scanf("%d",n);

appes=(APPE *)malloc(sizeof(APPE)*n);

if(!appes) return NULL;

printf("请输入%d个苹果的高度(不超过3位整数):\n",n);

for(i=0;in;i++)

{

  appes[i].aid=i+1;

  scanf("%d",appes[i].height);

  appes[i].height=appes[i].height%1000;//超出3位截取

  appes[i].status=0;

  //设置苹果初始图像

  sprintf(appes[i].aframe[0],"高%3d",appes[i].height);

  sprintf(appes[i].aframe[1],"ID%3d",appes[i].aid);

  sprintf(appes[i].aframe[2],"-----");

  sprintf(appes[i].aframe[3],"  %c  ",'|');

  sprintf(appes[i].aframe[4],"  %c  ",'|');

  sprintf(appes[i].aframe[5],"  %c  ",'|');

  sprintf(appes[i].aframe[6],"  %c  ",3);

}

return  appes;

}

C语言:一棵苹果树,一人摘苹果有一凳子高30cm,输入10个苹果高度(100~200),输出能摘到几个苹果

#includestdio.h #include stdlib.h void main() { int i,b,count,a[10]; printf("苹果高度:"); for(i=0; i10; i++) { scanf("%d",a[i]); } printf("手长:"); scanf("%d",b); count = 0; for(i=0; i10; i++) { if(a[i]b+30) { count++; } } printf("%d\n",count); }

小明家有棵苹果树,每到秋天树上就回结出10个苹果。苹果成熟的时候,小明就会去摘苹果。小明有个30厘

这个题目考的是让数组作为函数的形式参数,自定义一个函数就行,具体代码如下:

#include stdio.h

#includestdlib.h

int GetApple(int a[], int height, int n);

main()

{

int i;

int a[10]={0};  //苹果的高度

int h;  //小明的手能够到达的最大高度

scanf("%d",h);

printf("%d",GetApple(a,h,10));

system("pause");

}

int GetApple(int a[], int height, int n)

{

int i;  

int count=0;  //能够摘到的苹果个数

//用户输入苹果高度的同时判断淘淘是否能够摘到苹果

for(i=0;in;i++)

{

scanf(" %d",a[i]);

if(a[i]=30+height)

count++;

}

return count;

}


文章名称:c语言函数摘苹果,苹果 c语言
文章分享:http://cdxtjz.com/article/heeojp.html

其他资讯