久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

c語言典型問題處理方法小結

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

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

優秀文檔,精彩無限!

c語言典型問題處理方法小結

一、循環問題(1)、數論問題

1、求素數

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

if(a%i==0)

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

break;

直到本身整除。

if(a==i)

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

printf(“yesn”);

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

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

2、求最大公約數和最小公倍數 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(“largest common divisor:%dn”,i);

printf(“least common multiple:%dn”,(a*b)/is);b、輾轉相除法求解

a1=a;

b1=b;

while(a%b!=0)

{

t=a%b;

a=b;

b=t;

}

printf(“largest common divisor:%dnleast common

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

3、求完數

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

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

優質文檔,精彩無限!

優秀文檔,精彩無限!

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、分解質因數

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

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

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

clrscr();下goto語句的用法!!

scanf(“%d”,&a);

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

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

break;從2初始化。

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

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

{

k++;

用計數器來解決每行輸入不

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);

優質文檔,精彩無限!

優秀文檔,精彩無限!

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、從鍵盤輸入兩個整數,輸出這兩個整數的商的小數點后所有1000位整數

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

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

{

解決這類題目從本質出發

t=a%b;

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

a=t*10;

}

printf(“n”);

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

整數1[分子1/分母1]-整數2[分子2/分母2]=整數[分子/分母] 例如:輸入: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;

優質文檔,精彩無限!

優秀文檔,精彩無限!

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習題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()

優質文檔,精彩無限!

優秀文檔,精彩無限!

{

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)數列問題

二、數組問題(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、須迅速,熟練,無差錯 經常插入在程序中間

2、現使用最大數下沉冒泡法 還可以使用最小數上浮冒泡法

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

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

5、注意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]);}(2)二維數組

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

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

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

解題要點:

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

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

一共要輸出的行數

{

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

每行要打印的*數

printf(“*”);

printf(“n”);

}

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

一共要輸出的行數

{

*

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

控制空格數

**

printf(“ ”);***

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

每行要打印的*數 ****

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

printf(“n”);在出現空格的時候,在找到每行要打印的‘*’個數和行數的關系后,還應找到

} 空格和行數的關系,分不同的參數進行循環。此題k==i j==n-i d、j==i-1 k==n-i+1

優質文檔,精彩無限!

優秀文檔,精彩無限!

**** ***

**

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乘法表

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

3、九九乘法表 1 2

3

… …

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

優質文檔,精彩無限!

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);

{ 優秀文檔,精彩無限!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]);

把所有的數后移

printf(“n”);

}

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

char a[81];

int i;

gets(a);

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

主站蜘蛛池模板: 特大巨黑吊av在线播放| 国产成人无码国产亚洲| 国产又爽又黄无码无遮挡在线观看| 亚洲欧美国产毛片在线| 又粗又猛又黄又爽无遮挡| 狠狠亚洲婷婷综合色香五月排名| 免费久久人人香蕉av| 久久99日韩国产精品久久99| 天堂а√中文在线官网| 全免费a级毛片免费看无码| 久久精品免费观看国产| 免费看撕开奶罩揉吮奶头视频| 日韩精品无码免费专区网站| 无码高清 日韩 丝袜 av| 国产精品亚洲а∨怡红院| 99爱国产精品免费高清在线| 欧美做受三级级视频播放| 亚洲人成伊人成综合网76| 欧洲亚洲国产成人综合色婷婷| 国产偷窥熟女精品视频| 国产精品午夜福利在线观看地址| 精品国产乱码久久久久夜深人妻| 337p粉嫩日本欧洲亚洲大胆| 亚洲日本高清成人aⅴ片| 亚洲精品无码成人a片| 日本亚洲欧美国产日韩ay| 欧美 日韩 亚洲 精品二区| 亚洲精品综合一区二区| 欧美最爽乱婬视频免费看| 浴室人妻的情欲hd三级| 男女猛烈激情xx00免费视频| 国产公开免费人成视频| 久久人人爽人人爽人人爽| 同性男男黄g片免费网站| 2021久久天天躁狠狠躁夜夜| 久久成人亚洲香蕉草草| 久久99久久99精品免视看动漫| 亚洲成a人片在线观看中文无码| 天天爽天天爽夜夜爽毛片| 欧美 日韩 国产 另类 图片区| 精东天美麻豆果冻传媒mv|