程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言程序開發經典實例之三

C語言程序開發經典實例之三

編輯:C語言基礎知識

  【程序21】
  
  題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不瘾,又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後天天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
   
  
  
  1.程序分析:采取逆向思維的方法,從後往前推斷。
  
  2.程序源代碼:
  
   main()
  {
  int day,x1,x2;
  day=9;
  x2=1;
  while(day>0)
   {x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
   x2=x1;
   day--;
   }
  printf("the total is %d ",x1);
  }
  ==============================================================
  【程序22】
  
  題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
  
   1.程序分析:判定素數的方法:用一個數分別去除2到sqrt(這個數),假如能被整除,則表明此數不是素數,反之是素數。   
  
  2.程序源代碼:
  
   main()
  {
  char i,j,k;/*i是a的對手,j是b的對手,k是c的對手*/
  for(i='x';i<='z';i++)
   for(j='x';j<='z';j++)
   {
   if(i!=j)
  for(k='x';k<='z';k++)
  { if(i!=k&&j!=k)
   { if(i!='x'&&k!='x'&&k!='z')
   printf("order is a--%c b--%c c--%c ",i,j,k);
   }
  }
   }
  }
  ==============================================================
  【程序23】
  
  題目:打印出如下圖案(菱形)
  *
  ***
  ******
  ********
  ******
  ***
  *
  
  1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。
  
  2.程序源代碼:
  
   main()
  {
  int i,j,k;
  for(i=0;i<=3;i++)
   {
   for(j=0;j<=2-i;j++)
  printf(" ");
   for(k=0;k<=2*i;k++)
  printf("*");
   printf(" ");
   }
  for(i=0;i<=2;i++)
   {
   for(j=0;j<=i;j++)
  printf(" ");
   for(k=0;k<=4-2*i;k++)
  printf("*");
   printf(" ");
   }
  }
  ==============================================================
  【程序24】
  
  題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
  
  1.程序分析:請抓住分子與分母的變化規律。
  
  2.程序源代碼:
  
   main()
  {
  int n,t,number=20;
  float a=2,b=1,s=0;
  for(n=1;n<=number;n++)
   {
   s=s+a/b;
   t=a;a=a+b;b=t;/*這部分是程序的要害,請讀者猜猜t的作用*/
   }
  printf("sum is %9.6f ",s);
  }
  ==============================================================
  【程序25】
  
  題目:求1+2!+3!+...+20!的和
  
  1.程序分析:此程序只是把累加變成了累乘。
  
  2.程序源代碼:
  
   main()
  {
  float n,s=0,t=1;
  for(n=1;n<=20;n++)
   {
   t*=n;
   s+=t;
   }
  printf("1+2!+3!...+20!=%e ",s);
  }
  ==============================================================
  【程序26】
  
  題目:利用遞歸方法求5!。
  
  1.程序分析:遞歸公式:fn=fn_1*4!
  
  2.程序源代碼:
  
   #include "stdio.h"
  main()
  {
  int i;
  int fact();
  for(i=0;i<5;i++)
   printf("40:%d!=%d ",i,fact(i));
  }
  int fact(j)
  int j;
  {
  int sum;
  if(j==0)
   sum=1;
  else
   sum=j*fact(j-1);
  return sum;
  }
  ==============================================================
  
  【程序27】
  
  題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
  
  1.程序分析:
  
  2.程序源代碼:
  
   #include "stdio.h"
  main()
  {
  int i=5;
  void palin(int n);
  printf("40:");
  palin(i);
  printf(" ");
  }
  void palin(n)
  int n;
  {
  char next;
  if(n<=1)
   {
   next=getchar();
   printf("
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved