C程序設(shè)計(jì)實(shí)驗(yàn)分析_第1頁(yè)
C程序設(shè)計(jì)實(shí)驗(yàn)分析_第2頁(yè)
C程序設(shè)計(jì)實(shí)驗(yàn)分析_第3頁(yè)
C程序設(shè)計(jì)實(shí)驗(yàn)分析_第4頁(yè)
C程序設(shè)計(jì)實(shí)驗(yàn)分析_第5頁(yè)
已閱讀5頁(yè),還剩100頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、(1)改錯(cuò)題:指出下面程序的錯(cuò)誤并改正, 然后在Visual C+環(huán)境中驗(yàn)證其正確性。(文件名為sy3_1.c)題目要求:任意輸入一個(gè)正整數(shù),以相反的次序輸出。如:輸入1234,則輸出4321 main() int n, r ; printf(“input a integer: ”); scanf(“%d”,&n); while(n!=0) r =n/10; printf(“%d”,r); n=n%10; printf(“n”); 2.下面的程序?qū)⑤敵鋈缦碌膱D形,要求頂端的第1個(gè)“ * ”定位在第21字符位置,請(qǐng)改錯(cuò)。(文件名為sy3_2.c) * * * * #include void ma

2、in() int i,j; for (i=0;i4;i+) for (j=0;j=20;j+) printf(n); for (j=0;j2*i+1;j+) printf(*); 3.程序填空下面程序的功能是:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù)。(文件名為sy3_3.c) #include main() int i,j; for(i=0; i=9; i+) j=i*10+6; if (j%3) continue; printf(%d,j); 4. 下面程序的功能是計(jì)算 1-3+5-7+-99+101的值,請(qǐng)?zhí)羁铡#ㄎ募麨閟y3_3.c) #include void main()

3、int i,t=-1,s=0; for (i=1;i=101;i+=2) t=-i; s=s+t; s=-s; printf(%dn,s); #include void main() int i,t=1,s=0; for (i=1;i=101;i+=2) t=t*i; s=s+t; t=-t/i; printf(%dn,s); 5.下面程序的功能是統(tǒng)計(jì)用數(shù)字09可以組成多少個(gè)沒有重復(fù)的3位偶數(shù),請(qǐng)?zhí)羁?。(文件名為sy3_5.c) #include void main() int n,i,j,k; n=0; for (i=1;i=9;i+) for (k=0;k=8;k+ ) if (k!=i)

4、 for (j=0;j=9;j+) if ( k!=j&i!=j&(i*100+k*10+j)%2=0 )n+;printf(n=%dn,n);6.編程題利用公式求e值。直到1/n!小于0.000001結(jié)束。 !1! 41! 31! 21! 111ne#include void main() double s,t; int n; t=1; n=1; s=2;do n=n+1; t=t*n; /* 計(jì)算通項(xiàng) */ s=s+1/t; /* 累加求和 */ while(1/t)=1e-9); /* 當(dāng)累加項(xiàng)的值大于1e-7繼續(xù)循環(huán) */ printf(e=%fn,s); #include void

5、main() double s,t; int n; t=1; n=1; s=2;do n=n+1; t=t*n; /* 計(jì)算通項(xiàng) */ s=s+1/t; /* 累加求和 */ while(1/t)=1e-9); /* 當(dāng)累加項(xiàng)的值大于1e-7繼續(xù)循環(huán) */ printf(e=%fn,s); 打印水仙花數(shù)。所謂水仙花數(shù)是指這樣的三位正打印水仙花數(shù)。所謂水仙花數(shù)是指這樣的三位正整數(shù),其各位數(shù)字立方和等于該數(shù)本身。整數(shù),其各位數(shù)字立方和等于該數(shù)本身。如:如:153135333#include “stdio.h” /*解法一解法一*/void main() int i,j,k,m,n;for(i=1;

6、i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+) m=i*i*i+j*j*j+k*k*k;n=100*i+10*j+k;if(m=n) printf(“%dn”,m); 有5個(gè)人坐在一起,問(wèn)第5個(gè)人多少歲?他說(shuō)比第4個(gè)人答歲。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第3個(gè)人大2歲。問(wèn)第3個(gè)人,又說(shuō)比第2個(gè)人大2歲。問(wèn)第2個(gè)人,說(shuō)比第1個(gè)人大2歲。最后問(wèn)第1個(gè)人,他說(shuō)是10歲。請(qǐng)問(wèn)第5個(gè)人多大歲數(shù)?(文件名為shiyan3_8.c)#include int f(int n) if(n=1) return 10; else return f(n-1)+2; main() printf(%5

7、d,f(5); 輸入一個(gè)其中包含數(shù)字字符的字符串,將其中的英文字符按順序組合成的新的數(shù)字串輸出。例如:輸入abc123def456gh,執(zhí)行程序后輸出:abcdefgh。(文件名為shiyan3_9.c)#include #include string.hmain() char s100,s1100;int i,j=0,k; printf(input string to sn); scanf(%s,s); k=strlen(s); for(i=0;i=0&si=9) s1j+=si; s1j=0; printf(%s,s1); 求所有三位數(shù)中素?cái)?shù)的和。(文件名為shiyan3_10.c)#in

8、clude math.hint isprime(int m) int i,k; for(i=2;im-1;i+) if(m%i=0) return 0; return 1; void main() int i;long k=0; for(i=100;i=999;i+) if(isprime(i)=1) k+=i; printf(%ldn,k); 按順序讀入m個(gè)學(xué)生n門課程的成績(jī),計(jì)算出每位學(xué)生的總分和平均分并輸出。 #include #include string.hmain() int a100100,i,j,m,n,s; printf(input string to m,nn); scan

9、f(%d%d,&m,&n); for(i=0;i=m-1;i+) s=0; for(j=0;j=n-1;j+) printf(input %d 課程 %d 學(xué)生n,j+1,i+1); scanf(%d,&aij); s=s+aij; printf(第%d 學(xué)生的總分 %d, 平均分:%dn,i+1,s,s/n); 表達(dá)式表達(dá)式 算術(shù)算術(shù) 關(guān)系關(guān)系 邏輯邏輯 條件條件 逗號(hào)逗號(hào) 賦值賦值優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符含義含義運(yùn)算類運(yùn)算類型型結(jié)合性結(jié)合性運(yùn)算對(duì)運(yùn)算對(duì)象的特象的特點(diǎn)點(diǎn)3*,/,%乘乘,除除,求余求余雙目雙目自左向自左向右右 求余要求余要求運(yùn)算求運(yùn)算對(duì)象為對(duì)象為整型整型4+,-加加,減減雙

10、目雙目自左向自左向右右 任意任意優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符含義含義運(yùn)算運(yùn)算類型類型結(jié)合性結(jié)合性運(yùn)算對(duì)運(yùn)算對(duì)象的特象的特點(diǎn)點(diǎn)6 , = 小于、大小于、大于、小于于、小于等于、大等于、大于等于于等于 雙目雙目自左向自左向右右 運(yùn)算結(jié)運(yùn)算結(jié)果為邏果為邏輯值輯值7= , != 等于、等于、不等于不等于 雙目雙目自左向自左向右右 任意任意優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符含義含義運(yùn)算類運(yùn)算類型型結(jié)合性結(jié)合性運(yùn)算對(duì)象運(yùn)算對(duì)象的特點(diǎn)的特點(diǎn)2!邏輯非運(yùn)邏輯非運(yùn)算符算符 單目單目自右向左自右向左 運(yùn)算結(jié)果運(yùn)算結(jié)果為邏輯值為邏輯值11& 邏輯與運(yùn)邏輯與運(yùn)算符算符 雙目雙目自左向右自左向右 任意任意12| 邏輯或運(yùn)邏輯或運(yùn)

11、算符算符 雙目雙目自左向右自左向右 任意任意優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符含義含義運(yùn)算運(yùn)算類型類型結(jié)合性結(jié)合性運(yùn)算對(duì)運(yùn)算對(duì)象的特象的特點(diǎn)點(diǎn)13? : 條件運(yùn)算符 三目三目自右向自右向左左 任意任意優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符含義含義運(yùn)算運(yùn)算類型類型結(jié)合性結(jié)合性運(yùn)算對(duì)運(yùn)算對(duì)象的特象的特點(diǎn)點(diǎn)14= += -= *=/= %= = &= = |= 賦值運(yùn)算符 雙目雙目自右向自右向左左 賦值符賦值符左面為左面為變量變量?jī)?yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符運(yùn)算符含義含義運(yùn)算運(yùn)算類型類型結(jié)合性結(jié)合性運(yùn)算對(duì)運(yùn)算對(duì)象的特象的特點(diǎn)點(diǎn)15, 逗號(hào)運(yùn)算 多項(xiàng)多項(xiàng)順序順序自左向自左向右右 表達(dá)式表達(dá)式的結(jié)果的結(jié)果為第為第n個(gè)表達(dá)個(gè)表達(dá)式的

12、運(yùn)式的運(yùn)算結(jié)果算結(jié)果 數(shù)學(xué)數(shù)學(xué) fabs(double x)返回浮點(diǎn)數(shù)的絕對(duì)值返回浮點(diǎn)數(shù)的絕對(duì)值 log(double x)對(duì)數(shù)函數(shù)對(duì)數(shù)函數(shù)ln(x) log10(double x)對(duì)數(shù)函數(shù)對(duì)數(shù)函數(shù)log pow(double x, double y)指數(shù)函數(shù)指數(shù)函數(shù)(x的的y次方次方) sqrt(double x)計(jì)算平方根計(jì)算平方根 sin(double x)正弦函數(shù)正弦函數(shù) exp(double x)指數(shù)函數(shù)指數(shù)函數(shù)double 字符串字符串 strcat(char *dest,const char *src)將字符串將字符串src添加到添加到dest末尾末尾 strchr(const

13、char *s,int c)檢索并返回字符檢索并返回字符c在在字符串字符串s中第一次出現(xiàn)的位置中第一次出現(xiàn)的位置 strcmp(const char *s1,const char *s2) 比較字符串比較字符串s1與與s2的大小的大小,并返回并返回s1-s2 stpcpy(char *dest,const char *src)將字符串將字符串src復(fù)制到復(fù)制到dest 輸入輸入/輸出輸出 scanf(char *format,argument) printf(char *format,argument,) getchar() gets(s) puts(s)賦值語(yǔ)句 變量變量=表達(dá)式;表達(dá)式;數(shù)

14、據(jù)輸入:scanf(“格式編輯格式編輯”,輸入元素表列);,輸入元素表列); 數(shù)據(jù)輸出:printf(“格式編輯格式編輯”,輸出元素表列);,輸出元素表列);分支結(jié)構(gòu)控制語(yǔ)句 單分支型(非完全型)的if語(yǔ)句形式如下: if (表達(dá)式)語(yǔ)句;(表達(dá)式)語(yǔ)句; 雙分支型(完全型)的if語(yǔ)句形式如下:if (表達(dá)式)語(yǔ)句(表達(dá)式)語(yǔ)句1;else 語(yǔ)句語(yǔ)句2; else if結(jié)構(gòu)型的if語(yǔ)句形式如下: if (表達(dá)式(表達(dá)式1)語(yǔ)句)語(yǔ)句1;else if (表達(dá)式(表達(dá)式2)語(yǔ)句)語(yǔ)句2;else if (表達(dá)式(表達(dá)式3)語(yǔ)句)語(yǔ)句3; else 語(yǔ)句語(yǔ)句n+1;switch語(yǔ)句是一種多分支的控

15、制結(jié)構(gòu),它的一般形式為: switch (可列型表達(dá)式可列型表達(dá)式) case 常量表達(dá)式常量表達(dá)式1 : 語(yǔ)句語(yǔ)句1; case 常量表達(dá)式常量表達(dá)式2 : 語(yǔ)句語(yǔ)句2; case 常量表達(dá)式常量表達(dá)式n : 語(yǔ)句語(yǔ)句n; default : 語(yǔ)句語(yǔ)句n+1; /* default是可選項(xiàng)是可選項(xiàng) */ 樣例:樣例:switch (n) case 1 : printf(“#”);break; case 2 : printf(“$”);break;case 3 : printf(“&”);break;循環(huán)結(jié)構(gòu)控制語(yǔ)句循環(huán)結(jié)構(gòu)控制語(yǔ)句while 語(yǔ)句語(yǔ)句格式:格式:while (循環(huán)條件)(循環(huán)

16、條件)循環(huán)體循環(huán)體循環(huán)結(jié)構(gòu)控制語(yǔ)句循環(huán)結(jié)構(gòu)控制語(yǔ)句for 語(yǔ)句語(yǔ)句格式:格式:for(控制變量初始化;循環(huán)條件;修改控制變(控制變量初始化;循環(huán)條件;修改控制變量)量)循環(huán)體循環(huán)體循環(huán)結(jié)構(gòu)控制語(yǔ)句循環(huán)結(jié)構(gòu)控制語(yǔ)句dowhile 語(yǔ)句語(yǔ)句格式:格式:do循環(huán)體;循環(huán)體;while (循環(huán)條件循環(huán)條件);數(shù)組說(shuō)明的一般形式為:數(shù)組說(shuō)明的一般形式為: 類型說(shuō)明符類型說(shuō)明符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式;數(shù)組元素的一般引用形式為:數(shù)組元素的一般引用形式為: 數(shù)組名數(shù)組名下標(biāo)下標(biāo)二維數(shù)組類型說(shuō)明的一般形式是:二維數(shù)組類型說(shuō)明的一般形式是: 類型說(shuō)明符類型說(shuō)明符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式1常量

17、表達(dá)式常量表達(dá)式2;二維數(shù)組元素的引用要指明數(shù)組元素的行下標(biāo)和二維數(shù)組元素的引用要指明數(shù)組元素的行下標(biāo)和列下標(biāo),引用形式為:列下標(biāo),引用形式為: 數(shù)組名數(shù)組名下標(biāo)下標(biāo)下標(biāo)下標(biāo)字符串的輸入輸出字符串的輸入輸出1.逐個(gè)字符輸入輸出逐個(gè)字符輸入輸出char c10;for(i=0;i=9;i+) scanf(“%c”,&ci);for (i=0;i=9;i+) printf(“%c”,ci);2.格式化輸入格式化輸入char str10; scanf(“%s”,str);/*輸入輸入*/字符串的輸入輸出字符串的輸入輸出3.格式化輸出格式化輸出printf(“%s”,str);4.gets(str);

18、puts(str);常用的字符串函數(shù)常用的字符串函數(shù)字符串連接函數(shù)字符串連接函數(shù)strcat(str1,str2) 字符串復(fù)制函數(shù)字符串復(fù)制函數(shù) strcpy(str1,str2)字符串比較函數(shù)字符串比較函數(shù) strcmp(str1,str2)1 函數(shù)定義函數(shù)定義類型標(biāo)識(shí)符類型標(biāo)識(shí)符 函數(shù)名函數(shù)名( 數(shù)據(jù)類型數(shù)據(jù)類型 參數(shù)參數(shù),數(shù)據(jù)類型,數(shù)據(jù)類型 參數(shù)參數(shù)2 ) 說(shuō)明部分;說(shuō)明部分; 可執(zhí)行語(yǔ)句部分;可執(zhí)行語(yǔ)句部分; 2 return語(yǔ)句的一般形式有三種:語(yǔ)句的一般形式有三種:return;return 表達(dá)式表達(dá)式;return (表達(dá)式表達(dá)式);3 函數(shù)調(diào)用的一般形式為:函數(shù)調(diào)用的一般形式

19、為: 函數(shù)名(實(shí)參表列);函數(shù)名(實(shí)參表列); 參數(shù),返回值,全局變量#includefloat s1,s2,s3;float vs(float a,float b,float c) float v; v=a*b*c; s1=a*b; s2=b*c; s3=a*c; return v;main() float v,l,w,h; printf(ninput length,width and heightn); scanf(%f %f %f,&l,&w,&h); printf(nl=%f,w=%f,h=%fn,l,w,h); v=vs(l,w,h); printf(nv=%f,s1=%f,s2=%

20、f,s3=%fn,v,s1,s2,s3);#include stdio.hint del(int a,int n,int x) int p=0,i ; while (x=ap&pn) p+; for (i=p-1; in; i+) ai=ai+1; return (n-1);main() int a15=1,2,44,55,67,87,89,90,91,92,i,j=55,s; s=del(a,10,j); for(i=0;i1e-4;n+) pi=pi*t; t=(float)(2*n)*(2*n)/(2*n-1)*(2*n+1); printf(pi=%gn,pi); 九九乘法表九九乘法表

21、 打印如下的九九乘法表打印如下的九九乘法表九九乘法表九九乘法表(C代碼代碼)#include “stdio.hvoid main() int i,j;printf(t 九九乘法表九九乘法表n); printf(t -n); for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d%d=%dt,i,j,i*j); printf(n); 打印出下面圖案打印出下面圖案 * * * * * *1.程序分析:先把圖形分成兩部分來(lái)看待,程序分析:先把圖形分成兩部分來(lái)看待,前四行一個(gè)規(guī)律,后三行一個(gè)規(guī)律,利前四行一個(gè)規(guī)律,后三行一個(gè)規(guī)律,利用雙重用雙重 for循環(huán),第一層控循環(huán),第

22、一層控制行,第二層控制列。制行,第二層控制列。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(n);for(i=0;i=2;i+)for(j=0;j=i;j+)printf( );for(k=0;k=4-2*i;k+)printf(*);printf(n);用迭代法求,求立方根的迭代公式為:用迭代法求,求立方根的迭代公式為:21332iiixaxx21332iiixaxx21332iiixaxx21332iiixaxx假定假定x的初值為的初值為a,迭代到,迭代

23、到|xi+1-xi|1e-5); printf(編程求得編程求得x=%f,x); printf(調(diào)用函數(shù)求得調(diào)用函數(shù)求得x=%f,pow(a,1.0/3); 百雞問(wèn)題的描述百雞問(wèn)題的描述 百元買百雞問(wèn)題。假定小雞每只百元買百雞問(wèn)題。假定小雞每只5角,公雞每只角,公雞每只2元,母雞每只元,母雞每只3元?,F(xiàn)有元。現(xiàn)有100元錢要買元錢要買100只雞,列出所有可能的購(gòu)雞方案。只雞,列出所有可能的購(gòu)雞方案。分析:分析: (1) 設(shè)母雞、公雞、小雞各為設(shè)母雞、公雞、小雞各為x、y、z只,列出方程為:只,列出方程為:x+y+y = 1003x+2y+0.5z = 100三個(gè)未知數(shù),兩個(gè)方程,此題有若干個(gè)整

24、數(shù)解。三個(gè)未知數(shù),兩個(gè)方程,此題有若干個(gè)整數(shù)解。 (2) 采用試湊法采用試湊法(也稱為窮舉法或枚舉法也稱為窮舉法或枚舉法)來(lái)實(shí)現(xiàn),即將可能出現(xiàn)來(lái)實(shí)現(xiàn),即將可能出現(xiàn)的各種情況一一羅列測(cè)試。的各種情況一一羅列測(cè)試。百雞問(wèn)題程序百雞問(wèn)題程序(C代碼代碼) void main() int x,y,z; for(x=0;x=33;x+) for(y=0;y=50;y+) z=100-x-y; if(3*x+2*y+0.5*z)=100) printf(%9d,%9d,%9dn,x,y,z); 中國(guó)剩余定理:中國(guó)剩余定理:“有物不知幾何,三三數(shù)余一,有物不知幾何,三三數(shù)余一,五五數(shù)余二,七七數(shù)余三,問(wèn):物

25、有幾何?五五數(shù)余二,七七數(shù)余三,問(wèn):物有幾何?”。編程求編程求1000以內(nèi)所有解。以內(nèi)所有解。#include “stdio.h”void main()int m,count=0;for(m=1;mn;(2) m除以除以n得余數(shù)得余數(shù)r;(3)若若r=0,則,則n為最大公約數(shù)結(jié)束;為最大公約數(shù)結(jié)束;否則執(zhí)行否則執(zhí)行(4);(4)m n,n r,再重復(fù)執(zhí)行,再重復(fù)執(zhí)行(2) 例如例如: 設(shè)輸入設(shè)輸入m=28,n=20m=28,n=20 循環(huán)循環(huán) m n r賦好初值時(shí):賦好初值時(shí):28 20 8第一次結(jié)束:第一次結(jié)束:20 8 4第二次結(jié)束:第二次結(jié)束: 8 4 0voidvoid main()

26、int n,m,nm,r,t;printf(Enter m,n=?);scanf(%d%d,&m,&n);nm=n*m;if (mn) t=m; m=n; n=t; r=m%n; while (r!= 0) m=n; n=r; r= m%n; printf(%dn, n); printf(%dn, nm/n); 方法二、遞減法方法二、遞減法:(1 1)將)將2 2自然數(shù)自然數(shù)m,nm,n中的較中的較少一個(gè)數(shù)少一個(gè)數(shù) 賦值給賦值給 divdiv,(2 2)如果)如果m mod divm mod div與與n n mod div mod div 都等于都等于0 0 則則divdiv就就是是最大公約

27、數(shù),否則轉(zhuǎn)為最大公約數(shù),否則轉(zhuǎn)為(3 3)步。)步。(3 3)讓)讓div=div-1,div=div-1,重新執(zhí)重新執(zhí)行第(行第(2 2)步。)步。voidvoid main() int n,m,nm,div;printf(Enter m,n=?);scanf(%d%d,&m,&n);nm=n*m; div=n; if (m n) div=m; while (m%div!= 0 | n%div!=0) div=div-1; printf(%d, div); printf(%dn, nm/div); 判斷素?cái)?shù)判斷素?cái)?shù)#include math.hvoidvoid main() int m,i,

28、k; printf(Enter m=n); scanf(%d,&m); k=sqrt(m); for(i=2;i=k) printf(Yesn); else printf(Non); 程序代碼如下程序代碼如下:打印輸出打印輸出100-200之間的素?cái)?shù)之間的素?cái)?shù)#include math.hvoidvoid main() int m,i,k; for(m=101;m=199;m+) k=sqrt(m); for(i=2;i=k) printf(“%dn“,m); 帶自定義函數(shù) 素?cái)?shù) 公約數(shù) 回文問(wèn)題回文問(wèn)題 分類統(tǒng)計(jì)分類統(tǒng)計(jì)判斷素?cái)?shù)判斷素?cái)?shù)#include math.hintint isprim

29、e(int m) int m,i,k; k=sqrt(m); for(i=2;ik;i+) if(m%i=0) return 0; return 1; 輸入兩個(gè)正整數(shù)輸入兩個(gè)正整數(shù)m和和n(mn),求從),求從m到到n之間(包括之間(包括m和和n)所有素?cái)?shù)的和,要求定義并調(diào)用函數(shù)所有素?cái)?shù)的和,要求定義并調(diào)用函數(shù)isprime(x)來(lái)判斷來(lái)判斷x是否為素?cái)?shù)是否為素?cái)?shù)(素?cái)?shù)年是除(素?cái)?shù)年是除1以外只能被自身整除的自然數(shù))。以外只能被自身整除的自然數(shù))。 voidvoid main() int m,n,i,k=0; do scanf(“%d%d”,&m,&n); while (m0 | nn); f

30、or(i=m;i=n;i+) if(isprime(i)=1) k+=i; printf(“%dn“,k); 驗(yàn)證歌德巴赫猜想問(wèn)題的描述驗(yàn)證歌德巴赫猜想問(wèn)題的描述編一判斷質(zhì)數(shù)的函數(shù),驗(yàn)證歌德巴赫猜想:任何大于編一判斷質(zhì)數(shù)的函數(shù),驗(yàn)證歌德巴赫猜想:任何大于2的偶數(shù)均可表示為兩個(gè)素?cái)?shù)的和。例如:的偶數(shù)均可表示為兩個(gè)素?cái)?shù)的和。例如:4=2+2(特例,僅此一個(gè)),(特例,僅此一個(gè)),6=3+3,8=3+5,。程序要。程序要求輸入任一偶數(shù),輸出求輸入任一偶數(shù),輸出6到該數(shù)范圍內(nèi)的各個(gè)滿足到該數(shù)范圍內(nèi)的各個(gè)滿足條件的組合。條件的組合。分析:對(duì)一個(gè)偶數(shù),分解為兩個(gè)質(zhì)數(shù)和,既分析:對(duì)一個(gè)偶數(shù),分解為兩個(gè)質(zhì)數(shù)和

31、,既n=a+b。方法是從找最小的質(zhì)數(shù)方法是從找最小的質(zhì)數(shù)a為為3開始(因開始(因2是偶數(shù),另是偶數(shù),另一個(gè)必定是偶數(shù),不可能是質(zhì)數(shù)),判斷一個(gè)必定是偶數(shù),不可能是質(zhì)數(shù)),判斷b=n-a是是否是質(zhì)數(shù),若否是質(zhì)數(shù),若b也是質(zhì)數(shù),則也是質(zhì)數(shù),則n符合要求;否則,找符合要求;否則,找下一個(gè)質(zhì)數(shù)下一個(gè)質(zhì)數(shù)a,再判斷,再判斷b。 #include stdio.h int isprime(int m) /判別判別m是否為質(zhì)數(shù)是否為質(zhì)數(shù) int i;for(i=2;m%i!=0;i+); return (i=m); void main() int n,x,a,b; scanf(%d,&x); for(n=6;

32、n=x;n+=2) for(a=3;a=n/2;a+=2) if(isprime(a) b=n-a; if(isprime(b) printf(%d=%d+%dn,n,a,b); break; /退出退出a循環(huán),判別下一個(gè)循環(huán),判別下一個(gè)n的組的組合合 回文問(wèn)題的描述回文問(wèn)題的描述 編一函數(shù),功能為判斷一字符串是否為回文。回文編一函數(shù),功能為判斷一字符串是否為回文?;匚氖侵疙樧x和倒讀都一樣的字符串,如是指順讀和倒讀都一樣的字符串,如“deed”和和“l(fā)evel”是回文。在主函數(shù)中對(duì)輸入的是回文。在主函數(shù)中對(duì)輸入的5個(gè)字符串統(tǒng)個(gè)字符串統(tǒng)計(jì)其中回文的個(gè)數(shù)。輸出形式見圖計(jì)其中回文的個(gè)數(shù)。輸出形式見圖

33、2.6.2。函數(shù)形式。函數(shù)形式為:為:int huiwen(char s); 提示:構(gòu)造一個(gè)逆序的字符串,提示:構(gòu)造一個(gè)逆序的字符串, 思想:數(shù)組的首尾思想:數(shù)組的首尾元素進(jìn)行交換,其數(shù)組元素下標(biāo)分別為元素進(jìn)行交換,其數(shù)組元素下標(biāo)分別為0和和n-1(n為字符串長(zhǎng)度),接著對(duì)剩下的首尾元素進(jìn)行交換,為字符串長(zhǎng)度),接著對(duì)剩下的首尾元素進(jìn)行交換,其數(shù)組元素下標(biāo)分別為其數(shù)組元素下標(biāo)分別為1和和n-2,以此類推,即下標(biāo),以此類推,即下標(biāo)為為i的數(shù)組元素和下標(biāo)為的數(shù)組元素和下標(biāo)為n-i-1的數(shù)組元素交換,直到的數(shù)組元素交換,直到所有元素均交換或只剩一個(gè)元素為止,交換的次數(shù)所有元素均交換或只剩一個(gè)元素為止

34、,交換的次數(shù)為為n/2。 #include #include int huiwen(char s) int i,n=0; char ch,s180; strcpy(s1,s); /原來(lái)的字符串保留在原來(lái)的字符串保留在s1中中 while(sn)n+; /求字符串長(zhǎng)度求字符串長(zhǎng)度 for(i=0;in/2;i+) /構(gòu)造逆序的字符串構(gòu)造逆序的字符串 ch=si; si=sn-i-1; sn-i-1=ch; if(strcmp(s1,s)=0) return 1; else return 0; void main() char s580,ss580; int i,count=0; printf(輸

35、入輸入5個(gè)字符串:個(gè)字符串:n); for(i=0;i5;i+) gets(si); for(i=0;i=a & c=A & c=0 & c=9) num+; else ch+; cout字母:字母:alphat數(shù)字:數(shù)字:numt單詞:?jiǎn)卧~:wordt其它:其它:ch=10&flag) /判斷是否降序數(shù)判斷是否降序數(shù) if(x/10%10=x%10) x/=10; else flag=0; return flag;main() int x; scanf(%d,&x);if(drop(x) printf(%d 是降序數(shù)是降序數(shù)n,x); else printf(%d 不是降序數(shù)不是降序數(shù)n,x

36、);用遞歸函數(shù)實(shí)現(xiàn)將一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換用遞歸函數(shù)實(shí)現(xiàn)將一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換成二至十六任意進(jìn)制的字符成二至十六任意進(jìn)制的字符 #include stdio.h void convert(int m,int r) char b17=0123456789ABCDEF; if(m!=0) convert(m/r,r);printf(%c,bm%r); void main() int m,r; scanf(%d%d,&m,&r); convert(m,r); 數(shù)組 排序 查找 刪除 插入 最大元素問(wèn)題選擇法排序選擇法排序基本思想基本思想: (1) 從從n個(gè)數(shù)的序列中選出最小的數(shù)個(gè)數(shù)的序列中選出最小的數(shù)(遞

37、增遞增),與第,與第1個(gè)數(shù)交換位置;個(gè)數(shù)交換位置;(2) 除第除第1個(gè)數(shù)外,其余個(gè)數(shù)外,其余n-1個(gè)數(shù)再按個(gè)數(shù)再按(1)的方法選出次小的數(shù),與第的方法選出次小的數(shù),與第2個(gè)數(shù)交換位置個(gè)數(shù)交換位置;(3) 重復(fù)重復(fù)(1)n-1遍,最后構(gòu)成遞增序列。遍,最后構(gòu)成遞增序列?!纠繉?duì)存放在數(shù)組中的對(duì)存放在數(shù)組中的6個(gè)數(shù),用選擇法按遞增排序。個(gè)數(shù),用選擇法按遞增排序。 下標(biāo)下標(biāo) 0 15 1 25 2 35 3 45 4 5for( i= 0;i5;i+) min= i; for(j=i+1;j6;j+) if(ajamin)min= j; if(i!=min) temp=ai; ai= amin;

38、amin=temp; 冒泡法排序冒泡法排序 基本思想:基本思想: (1 1)從第一個(gè)元素開始,對(duì)數(shù)組中兩兩相鄰的元素比較,將值)從第一個(gè)元素開始,對(duì)數(shù)組中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在后面,一輪比較比較完畢,較小的元素放在前面,值較大的元素放在后面,一輪比較比較完畢,最大的數(shù)存放在最大的數(shù)存放在aN-1aN-1中;中; (2 2)然后對(duì))然后對(duì)a0a0到到aN-2aN-2的的N-1N-1個(gè)數(shù)進(jìn)行同(個(gè)數(shù)進(jìn)行同(1 1)的操作,次最)的操作,次最大數(shù)放入大數(shù)放入aN-2aN-2元素內(nèi),完成第二趟排序;依次類推,進(jìn)行元素內(nèi),完成第二趟排序;依次類推,進(jìn)行N-1N-1趟

39、趟排序后,所有數(shù)均有序。排序后,所有數(shù)均有序?!纠纠? 4】用冒泡排序法實(shí)現(xiàn)例】用冒泡排序法實(shí)現(xiàn)例4.24.28 3497K=5348 79K=4 34789K=33 47 8 9K=2for(i=0;i5;i+) for(j=1;jaj ) temp=aj-1; aj-1=aj; aj=temp; 思考:思考:當(dāng)數(shù)據(jù)未交換,當(dāng)數(shù)據(jù)未交換,說(shuō)明數(shù)組說(shuō)明數(shù)組已有序已有序 ,如何,如何結(jié)束排序?結(jié)束排序? 二分法查找二分法查找分析:分析:二分法查找只適合于在已排好序的數(shù)組中進(jìn)行。二分法查找只適合于在已排好序的數(shù)組中進(jìn)行。 設(shè)設(shè)alow和和ahigh是有序數(shù)組中最小和最大元素,待查找的數(shù)為是有序數(shù)

40、組中最小和最大元素,待查找的數(shù)為x。算法描述如下:算法描述如下: 開始假設(shè)待查區(qū)間的下界開始假設(shè)待查區(qū)間的下界lowlow為為0 0,上界,上界highhigh為為N-1N-1。 求待查區(qū)間中間元素的下標(biāo)求待查區(qū)間中間元素的下標(biāo)mid = (low+high)/2mid = (low+high)/2,x x和和amidamid比較。比較。 若若x=amidx=amid,則查找完畢,結(jié)束程序;若,則查找完畢,結(jié)束程序;若xamidxamid,則繼續(xù)查找的,則繼續(xù)查找的范圍應(yīng)為范圍應(yīng)為amidamid后面的元素,修改查找區(qū)間的下界后面的元素,修改查找區(qū)間的下界low = mid+1low = mi

41、d+1;若;若xamidxhighlowhigh無(wú)查找區(qū)域,找不到。無(wú)查找區(qū)域,找不到。#include stdio.hmain() int a800,min=100,max=0,sum=0,i=0,n,j,temp,x,find,mid,top,bot; for(;) printf(請(qǐng)輸入成績(jī)n); scanf(%d,&ai); if(ai=-999) break; if (ai100|aimax) max=ai; if(aimin) min=ai; i+; sum/=i; printf(%d,%d,%d,%dn, max,min,i,sum);n=i; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論