欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      c語言典型問題處理方法小結(jié)

      時間:2019-05-13 05:41:26下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《c語言典型問題處理方法小結(jié)》,但愿對你工作學(xué)習(xí)有幫助,當然你在寫寫幫文庫還可以找到更多《c語言典型問題處理方法小結(jié)》。

      第一篇:c語言典型問題處理方法小結(jié)

      優(yōu)秀文檔,精彩無限!

      c語言典型問題處理方法小結(jié)

      一、循環(huán)問題(1)、數(shù)論問題

      1、求素數(shù)

      for(i=2;i<=a;i++)

      if(a%i==0)

      第一個if判斷是否能被2,3,4??

      break;

      直到本身整除。

      if(a==i)

      第二個if判斷是否只能被本身整除。

      printf(“yesn”);

      else printf(“non”);素數(shù)概念:

      對于某個整數(shù)a>1,如果它僅有平凡約數(shù)1和a,則我們稱a為素數(shù)(或質(zhì)數(shù))。整數(shù) 1 被稱為基數(shù),它既不是質(zhì)數(shù)也不是合數(shù)。整數(shù) 0 和所有負整數(shù)既不是素數(shù),也不是合數(shù)。

      2、求最大公約數(shù)和最小公倍數(shù) a、if(a>b)

      {

      t=a;

      a=b;

      b=t;

      }

      for(i=a;i>=1;i--)

      if(a%i==0&&b%i==0)

      break;

      printf(“l(fā)argest common divisor:%dn”,i);

      printf(“l(fā)east common multiple:%dn”,(a*b)/is);b、輾轉(zhuǎn)相除法求解

      a1=a;

      b1=b;

      while(a%b!=0)

      {

      t=a%b;

      a=b;

      b=t;

      }

      printf(“l(fā)argest common divisor:%dnleast common

      multiple:%d”,b,a1*b1/b);

      3、求完數(shù)

      一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。

      例如:6的因子為1、2、3,而6=1+2+3,因此6是“完數(shù)”。

      優(yōu)質(zhì)文檔,精彩無限!

      優(yōu)秀文檔,精彩無限!

      for(a=1;a<=1000;a++)

      {

      s=0;

      注意S=0所放的位置

      for(i=1;i<=a;i++)

      if(a%i==0)

      {

      s+=i;

      if(s>=a)

      break;

      }

      if(s==a)

      printf(“%dt”,a);

      }

      4、分解質(zhì)因數(shù)

      將一個整數(shù)寫成幾個質(zhì)因數(shù)的連乘積,如: 輸入36,則程序輸出36=2*2*3*3。解

      一、main()看似簡單,但要自己完整地寫出來還真不{ 容易??!

      int a,z,i;竟然還動用了goto語句,正好可以熟悉一

      clrscr();下goto語句的用法?。?/p>

      scanf(“%d”,&a);

      loop: for(z=2;z<=a;z++)判斷下一個數(shù)開始有要重新 { 從2 for(i=2;i<=z;i++)判斷是否為質(zhì)數(shù) 開始了。所以用loop語句回

      if(z%i==0)到for語句,這是for語句仍

      break;從2初始化。

      if(z==i)從2開始的原則不變,變的判斷是否為a的質(zhì)因數(shù)

      if(a%z==0)是a的值。

      {

      k++;

      用計數(shù)器來解決每行輸入不

      if(k==1)

      同的問題。

      printf(“%d=%d”,a1,z);

      else

      printf(“*%d”,z);

      a/=z;

      goto loop;

      } } } 解二: main(){

      int n, k=2, isfirst=1;

      printf(“Input n=”);

      scanf(“%d”,&n);

      優(yōu)質(zhì)文檔,精彩無限!

      優(yōu)秀文檔,精彩無限!

      while(k<=n)

      if(n%k==0)

      { if(isfirst){ printf(“%d=%d”, n, k);isfirst=0;}

      else printf(“*%d”,k);

      n/=k;

      }

      else k++;

      printf(“n”);}

      5、從鍵盤輸入兩個整數(shù),輸出這兩個整數(shù)的商的小數(shù)點后所有1000位整數(shù)

      for(i=1;i<=1000;i++)

      主要體會除法運算中小數(shù)形成的原因

      {

      解決這類題目從本質(zhì)出發(fā)

      t=a%b;

      printf(“%d”,t*10/b);

      a=t*10;

      }

      printf(“n”);

      6、編程計算并輸出兩個帶分數(shù)的差。帶分數(shù)就是由一個整數(shù)和一個真分數(shù)合成的數(shù),兩個帶分數(shù)(整數(shù)、分子、分母均大于0)從鍵盤輸入,且?guī)Х謹?shù)1大于帶分數(shù)2,輸入格式為:整數(shù)1[分子1/分母1],整數(shù)2[分子2/分母2]。差要求化簡,整個輸出樣式為(如差為整數(shù),則無分數(shù)部分,如差的整數(shù)為0,則無整數(shù)部分):

      整數(shù)1[分子1/分母1]-整數(shù)2[分子2/分母2]=整數(shù)[分子/分母] 例如:輸入:12[6/35],8[3/5] 輸出:12[6/35]-8[3/5]=3[4/7] 又如:輸入:6[2/3],4[12/18]

      輸出:6[2/3]-4[12/18]=2 又如:輸入:9[7/8],9[3/8]

      輸出:9[7/8]-9[3/8]=[1/2]

      main(){

      int z1,fz1,fm1,fz1x,z2,fz2,fm2,fz2x,z,fz,fm,fzx,i;

      scanf(“%d[%d/%d],%d[%d/%d]”,&z1,&fz1,&fm1,&z2,&fz2,&fm2);

      fz1x=z1*fm1+fz1;

      fz2x=z2*fm2+fz2;

      fm=fm1*fm2;

      fz=fz1x*fm2-fz2x*fm1;

      優(yōu)質(zhì)文檔,精彩無限!

      優(yōu)秀文檔,精彩無限!

      for(i=fm;i>=2;i--)

      if(fm%i==0&&fz%i==0)

      {

      fz/=i;

      fm/=i;

      }

      z=fz/fm;

      fzx=fz%fm;

      if(fzx==0)

      printf(“%d[%d/%d]-%d[%d/%d]=%dn”,z1,fz1,fm1,z2,fz2,fm2,z);

      else if(z==0)

      printf(“%d[%d/%d]-%d[%d/%d]=[%d/%d]n”,z1,fz1,fm1,z2,fz2,fm2,fzx,fm);

      else

      printf(“%d[%d/%d]-%d[%d/%d]=%d[%d/%d]n”,z1,fz1,fm1,z2,fz2,fm2,z,fzx,fm);}

      (2)近似問題

      1、書P122習(xí)題4-6 #include “math.h”

      注意千萬不要忘記添加 main()

      #include “math.h” {

      float x,j=1,k,s,so;

      int n;

      scanf(“%f”,&x);

      s=x;

      so=x+1;

      for(n=1;fabs(s-so)>1e-6;n++)

      {

      for(k=1;k<=n;k++)

      j*=k;

      so=s;

      if(n%2!=0)

      s-=x*x*x/((2*n-1)*j);

      else

      s+=x*x*x/((2*n-1)*j);

      }

      printf(“%fn”,s);

      2、解方程問題:

      編程用二分法求解方程x3+4x2-10=0的解。#include “math.h” main()

      優(yōu)質(zhì)文檔,精彩無限!

      優(yōu)秀文檔,精彩無限!

      {

      float x,x1=1,x2=4,f1=-1,f;

      /*f1=x1*x1*x1+4*x1*x1-10;*/ 可以省略此句

      while(fabs(x2-x1)>1e-6)

      {

      x=(x1+x2)/2;

      f=x*x*x+4*x*x-10;

      if(f>0)

      x2=x;

      else

      x1=x;

      }

      printf(“%fn”,x);}(3)枚舉法(4)數(shù)列問題

      二、數(shù)組問題(1)排序問題

      1、從小到大排序 main(){ int a[10],i,j,t;for(i=0;i<10;i++)scanf(“%d”,&a[i]);

      for(i=1;i<10;i++)

      for(j=0;j<10-i;j++)

      if(a[j]>a[j+1])

      { t=a[j+1];a[j+1]=a[j];a[j]=t;

      } for(i=0;i<10;i++)printf(“%d ”,a[i]);printf(“n”);}

      2、從大到小排序 main(){ int a[10],i,j,t;for(i=0;i<10;i++)

      scanf(“%d”,&a[i]);for(i=1;i<10;i++)

      for(j=9;j>=i;j--)

      可以用/*if(f*f1<0)*/替代

      注意排序問題:

      1、須迅速,熟練,無差錯 經(jīng)常插入在程序中間

      2、現(xiàn)使用最大數(shù)下沉冒泡法 還可以使用最小數(shù)上浮冒泡法

      3、j控制前面一個數(shù)和后面一個數(shù)一一比較。由于是最大數(shù)下沉,i+1后j仍要從0開始。

      4、i控制這樣的操作一共要做多少次

      5、注意i j的控制次數(shù)

      現(xiàn)使用最大數(shù)上浮冒泡法 還可使用最小數(shù)下沉冒泡法

      優(yōu)質(zhì)文檔,精彩無限!

      優(yōu)秀文檔,精彩無限!

      if(a[j]>a[j-1])

      {

      t=a[j-1];

      a[j-1]=a[j];

      a[j]=t;

      } for(i=0;i<10;i++)printf(“%d ”,a[i]);}(2)二維數(shù)組

      三、字符或字符串輸入輸出問題(1)字符打印

      1、打印* 此類題的溯源為書P122 4.11(1),其他題都是它的拓展

      a、* ** *** ****

      解題要點:

      此類題關(guān)鍵在于找到每行要打印的個數(shù)和行數(shù)的關(guān)系。此題j==i b、**** *** j==n-i+1 ** *

      for(i=1;i<=n;i++)

      一共要輸出的行數(shù)

      {

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

      每行要打印的*數(shù)

      printf(“*”);

      printf(“n”);

      }

      c、for(i=1;i<=n;i++)

      一共要輸出的行數(shù)

      {

      *

      for(j=1;j<=n-i;j++)

      控制空格數(shù)

      **

      printf(“ ”);***

      for(k=1;k<=i;k++)

      每行要打印的*數(shù) ****

      printf(“*”);解題要點:

      printf(“n”);在出現(xiàn)空格的時候,在找到每行要打印的‘*’個數(shù)和行數(shù)的關(guān)系后,還應(yīng)找到

      } 空格和行數(shù)的關(guān)系,分不同的參數(shù)進行循環(huán)。此題k==i j==n-i d、j==i-1 k==n-i+1

      優(yōu)質(zhì)文檔,精彩無限!

      優(yōu)秀文檔,精彩無限!

      **** ***

      **

      for(i=1;i<=n;i++)

      *

      { e、for(j=1;j<=n-i;j++)

      *

      printf(“ ”);

      *** *****

      for(k=1;k<=2*i-1;k++)*******

      printf(“*”);

      printf(“n”);

      }

      *

      for(i=1;i<=n;i++)

      ***

      { *****

      for(j=1;j<=n-i;j++)*******

      printf(“ ”);*****

      for(k=1;k<=2*i-1;k++)

      ***

      printf(“*”);

      *

      printf(“n”);

      }

      2、打印9*9乘法表

      解題要點:注意尋找行與列的規(guī)律。i*j i代表列 j代表行

      3、九九乘法表 1 2

      3

      … …

      4、楊暉三角形 1 1 1 1 1 1 10 5 1 20 15 6(2)字符串打印問題

      優(yōu)質(zhì)文檔,精彩無限!

      for(i=1;i<=n-1;i++){ for(j=1;j<=i;j++)printf(“ ”);for(k=1;k<=2*(n-1-i)+1;k++)printf(“*”);printf(“n”);} for(i=1;i<=9;i++){

      for(j=1;j<=9;j++)

      printf(“%-3d ”,i*j);

      printf(“n”);

      } 注意輸出格

      式的控制

      1、A B C D E Z Z A B C D E

      E Z A B C D

      D E Z A B C

      C D E Z A B

      B C D E Z A

      gets(a);for(i=1;i<=7;i++)puts(a);

      { 優(yōu)秀文檔,精彩無限!for(i=1;i<=5;i++)

      a[i][1]=1;

      {

      a[i][i]=1;

      t=a[5];

      }

      for(j=5;j>0;j--)

      for(i=3;i<=7;i++)

      a[j]=a[j-1];

      for(j=2;j<=i-1;j++)

      a[0]=t;

      a[i][j]=a[i-1][j-1]+a[i-1][j];

      for(k=0;k<=5;k++)

      注意交換過程和

      printf(“%c”,a[k]);

      把所有的數(shù)后移

      printf(“n”);

      }

      2、輸入一字符串小寫換大寫

      char a[81];

      int i;

      gets(a);

      for(i=0;a[i]!='