程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 全國計算機編程大賽復賽試題2

全國計算機編程大賽復賽試題2

編輯:C語言基礎知識
   某幼兒園按如下方法依次給A,B,C,D,E五個小孩發糖果。將全部糖果的一半再加二分之一塊糖果發給第一個小孩;將剩下糖果的三分之一再加三分之一塊糖果發給第二個小孩;將剩下糖果的四分之一再加四分之一塊糖果發給第三個小孩;將剩下糖果的五分之一再加五分之一塊糖果發給第四個小孩;將最後剩下的11塊糖果發給第五個小孩。每個小孩得到的糖果數均為整數。試確定原來共有多少塊糖果?每個小孩各得到多少塊糖果?
      要求結果的輸出格式為
      sum=糖果總數
      xa=A得到的糖果數
      xb=B得到的糖果數
      xc=C得到的糖果數
      xd=D得到的糖果數
      xe=E得到的糖果數
   以下是我為實現以上要求而寫的,完全能正確實現,請欣賞,假如看了後你有所改進或有別的實現妙方,就請貼出來共同學習與分享吧。讓我們為本網站更具實用,可讀性強而努力!   #include "stdio.h"
  main()
  { FILE *fp;
    int sum,xa,xb,xc,xd,xe;   if((fp=fopen("58114_2.dat","w"))==NULL)  /* 創建結果文件 */
      { printf("cannot open this file. ");
        exit(0);
       }  sum=0;
   while(1)
    { if(60*sum-((sum+1)*30+(sum+1)*10+(sum+1)*5+(sum+1)*3)==660) break;  /* 這用了窮舉法,利用了總數減前四人等於第五人的等價關系,等式兩邊同乘了60 */
      sum=sum++;
     }
  xa=(sum+1)/2;                    /* 以下是求各自所得糖數 */
  xb=((sum-xa)+1)/3;
  xc=((sum-xa-xb)+1)/4;
  xd=((sum-xa-xb-xc)+1)/5;
  xe=sum-xa-xb-xc-xd; fprintf(fp,"sum=%d xa=%d xb=%d xc=%d xd=%d xe=%d",sum,xa,xb,xc,xd,xe);  /* 結果寫進文件 */
  fclose(fp);
  }
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved