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語言對於小學生來說難不難?學python入門好還是VB好?

1.Python好學,易上手。如果你是第一次學習計算機編程語言,推薦你學這個。更重要的是,學會這門語言,也能方便你對電腦中的文檔進行處理。而無論是C、還是VB,面對大多數任務,編碼速度都不及Python的。

2.C比較接近機器語言,涉及到對數據的直接操作。高效,但同時也意味着你要花更多的心思在編寫代碼上面。當然也不太好學。

3.VB能快速的生成一個用戶界面。但編寫之後的代碼無論是執行效率還是可讀性,相對而言都是比較差的。

小學生編程課主要學什麼?

小學生編程課主要是c語言的學習內容。編程是我們大人們所接觸的Java、php、HTML、hTMEL5等相關的編程、計算機軟件的知識,現在都是電腦代替打字的時代。c語言是其中的一個板塊,主要有C加和Ctwo加兩個大內容,包含for循環以if語句等。

編程的簡單知識介紹

C語言編程是全國信奧賽等和國際編程比賽指定語言,被稱為必須學會的編程技能,是目前計算機及軟件程序開發的基礎語言,同時也被廣泛運用於單片機、機器人開發等高端科創競賽中,從小接觸並學習C語言編程,無疑會成為孩子日後升學過程中的重要王牌。

當小學生學習for循環或者if語句的時候,不僅能將編程的基礎知識能夠學會。還能讓小學生接觸更多的語法這樣對小學生之後英語的學習也有一定的幫助,通過編程的學習能夠讓他們更好的學習英語,從小打下的基礎對以後英語的學習會有很大的幫助。

編程與數學也是密不可分的。編程中包含數學。家長們應該知道數學是一個比較難以學習的學科。編程里大部分都包含數學,特別是函數的應用那真是到處的出現呀。所以編程的學習內容很廣泛,能從不同面方便開發小學生的智力,這些編程的基礎知識對未來的成長也是有很大的幫助的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/155322.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-17 02:41
下一篇 2024-11-17 02:41

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論