下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【】輸入n值,輸出如圖所示矩形?!尽枯斎雗值,輸出如圖所示平行四邊形。【】輸入n值,輸出如圖所示高為n的等腰三角形?!尽枯斎雗值,輸出如圖所示高為n的等腰三角形?!尽枯斎雗值,輸出如圖所示高和上底均為n的等腰梯形。【】輸入n值,輸出如圖所示高和上底均為n的等腰空心梯形?!尽枯斎雗值,輸出如圖所示邊長(zhǎng)為n的空心正六邊型。【】輸入n值,輸出如圖所示圖形?!尽枯斎雗值,輸出如圖所示圖形?!尽枯斎雗值,輸出如圖所示圖形?!尽枯斎雗值,輸出如圖所示圖形?!尽枯斎雗值,輸出如圖所示圖形?!尽枯斎雗值,輸出如圖所示圖形。(例為n=6時(shí))【】編寫程序,輸出如圖所示sin(x) 函數(shù)0到2的圖形。【】編寫程序,
2、在屏幕上輸出一個(gè)由*號(hào)圍成的空心圓?!尽烤帉懗绦?,在屏幕上繪制如圖余弦曲線和直線。若屏幕的橫向?yàn)閤軸,縱向?yàn)閥軸, 在屏幕上顯示0360度的cos(x)曲線與直線x=f(y)=45*(y-1)+31的迭加圖形。其中cos圖形用"*"表示,f(y)用"+"表示,在兩個(gè)圖形的交點(diǎn)處則用f(y)圖形的符號(hào)。 【】編寫程序,輸出如圖所示高度為n的圖形。 【】編寫程序,輸出如圖所示高度為n的圖形。 【】輸入n值,輸出如圖所示圖形。 【】輸入n值,輸出如圖所示的n×n(n<10)階螺旋方陣。1 2 3 4 51
3、6 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9圖 n=5時(shí)的螺旋方陣【】輸入n值,輸出如圖所示回型方陣?!尽枯敵鋈鐖D所示的數(shù)字金字塔【】輸入n值,輸出如圖所示圖形?!尽枯斎腠斝凶址蛨D形的高,輸出如圖所示圖形。 【】輸入首字符和高后,輸出如圖所示回型方陣。A A A A A A B B B A A B C B A A B B B A A A A A A 圖 首字符為'A'、高為5的方陣【】輸入中心字符和高后,輸出如圖所示回型方陣。X X X X X X Y Y Y X X Y Z Y X X Y Y Y YX X X X
4、X圖 中心字符為'Z'、高為5的方陣【】編寫程序,輸出如圖所示上三角形式的乘法九九表?!尽烤帉懗绦颍敵鋈鐖D所示下三角乘法九九表。【】分析:打印此圖形用兩重循環(huán)實(shí)現(xiàn)。圖形要重復(fù)n行,故采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)循環(huán)n次,循環(huán)體內(nèi)部打印一行'*'號(hào),把上述思路表示為:for(i=1;i<=n;i+)打印一行'*'號(hào);每行有n個(gè)'*'號(hào),再采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)n次循環(huán),循環(huán)內(nèi)部用格式輸出語(yǔ)句打印一個(gè)'*'號(hào),即:for(j=1;j<=n;j+)printf("*");按照上述思路,實(shí)現(xiàn)打印矩形。參考答
5、案:main() int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n;j+)printf("*");printf("n");【】分析:此圖形和上題的區(qū)別在于在每一行先要打印空格,然后再打印n個(gè)'*'號(hào),在上題第一層循環(huán)體內(nèi)打印'*'號(hào)的循環(huán)前面增加一個(gè)循環(huán)打印空格。每行空格的個(gè)數(shù)是逐行減少的,由于第一層循環(huán)的控制變量i是逐行增1,所以用一個(gè)固定值的數(shù)減去
6、i就可實(shí)現(xiàn)對(duì)空格個(gè)數(shù)的控制,在此題中固定值可使用變量n。參考答案: main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n-i;j+)printf(" ");for(j=1;j<=n;j+)printf("*");printf("n");【】分析:此題和上題的區(qū)別在于每行'*'的數(shù)量逐行減少,可以使用上題控制空格個(gè)數(shù)的思路來(lái)控制
7、39;*'號(hào)的個(gè)數(shù),請(qǐng)注意每行'*'的個(gè)數(shù)都是奇數(shù)。參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n-i;j+)printf(" ");for(j=1;j<=2*i-1;j+)printf("*");printf("n");【】分析:此題圖形是第3題圖形的垂直反轉(zhuǎn),在編程上我們可以變換一個(gè)思路。對(duì)于圖形中的第
8、i行(1in),共需要輸出2n-i個(gè)字符,其中前面的i-1個(gè)字符為空格,后面的字符為'*'號(hào)。按照這一思路可以編寫出如下程序。參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d", &n);for( i=1;i<=n;i+ ) /* 重復(fù)輸出圖形的n行 */ for( j=1;j<=2*n-i;j+ ) /* 重復(fù)輸出圖形一行中的每個(gè)字符 */if(j<=i-1) printf(" "); /* 輸出前面的空格 */else
9、printf("*"); /* 輸出后面的*號(hào) */printf("n");【】分析:此題和第3題的區(qū)別僅是每行的'*'個(gè)數(shù)增加n-1個(gè)。參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n-i;j+)printf(" ");for(j=1;j<=2*i-1+(n-1);j+)printf("*");
10、printf("n");【】分析:對(duì)于空心圖形,我們可以在上題的基礎(chǔ)上,對(duì)于打印'*'號(hào)的循環(huán)進(jìn)行修改,僅在循環(huán)開(kāi)始值(j=1)和循環(huán)結(jié)束值(j=2*(i-1)+n)時(shí)打印'*'號(hào),其它位置都打印空格。另一種思路是將每行打印的空格和'*'的兩個(gè)循環(huán)合為一體考慮,在判斷出需要打印'*'的兩個(gè)位置及第一行和最后一行相應(yīng)位置外,其余位置都打印空格。參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&
11、n);for(i=1;i<=n;i+) for(j=1;j<=2*n+i-3;j+)if(j=n-i+1 | j>n-i+1 && (i=1|i=n) printf("*");else printf(" ");printf("*n");【】分析:此圖形可以理解為兩個(gè)空心梯形反向連接而成,因此可以利用上題的思路進(jìn)行輸出。參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(
12、i=1;i<=n;i+) /* 輸出圖形的上半部分(含中心行) */ for(j=1;j<=2*n-i-1;j+)if(j=i) printf("*");else printf(" ");printf("*n");for(i=1;i<n;i+) /* 輸出圖形的下半部分(不含中心行) */ for(j=1;j<=n+i;j+)if(j=n-i) printf("*");else printf(" ");printf("*n");【】分析:此題與上題的區(qū)
13、別在于打印'*'號(hào)的位置不同,編程時(shí)要找出應(yīng)打印'*'號(hào)的位置和兩個(gè)循環(huán)變量i、j以及行數(shù)n的關(guān)系。參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf ("%d", &n);for(i=1;i<=n;i+) /* 輸出圖形的上半部分(含中心行) */ for(j=1;j<=2*n-i;j+)if(j=n-i+1 | j>n-i+1 && i=1) printf("*");else printf(&quo
14、t; ");printf("*n");for(i=1;i<n;i+) /* 輸出圖形的下半部分(不含中心行) */ for(j=1;j<=3*(n-1)-i;j+)if(j=i+1 | j>i+1 && i=n-1) printf("*");else printf(" ");printf("*n");【】參考答案:main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&
15、;n);for(i=1;i<=n;i+) for(j=1;j<=n;j+)if(j=n-i+1 | i=1 | i=n) printf("*");else printf(" ");printf("n");【】參考答案:main( ) int i,j,n;printf("nPlease Enter n: ");scanf("%d", &n);for(i=1;i<=n;i+) /* 輸出圖形的上半部分(含中心行) */ for(j=1;j<=n-i;j+)if(j=1
16、 | j=n-i+1) printf("* ");else printf(" ");printf("n");for(i=1;i<n;i+) /* 輸出圖形的下半部分(不含中心行) */ for(j=1;j<=i+1;j+)if(j=1 | j=i+1) printf("* ");else printf(" ");printf("n");【】參考答案:main( ) int i,j,n;printf("nPlease Enter n: ");sc
17、anf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n;j+)if(j=1 | j=i | j=n) printf("*");else printf(" ");printf("n");【】參考答案:main( ) int i,j,n;printf("nPlease Enter n: ");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n+i-1;j+)if(j>
18、n-i) printf("*");else printf(" ");printf("n");for(i=1;i<n;i+) for(j=1;j<=2*n-i-1;j+)if(j>i) printf("*");else printf(" ");printf("n");【】參考答案:main( ) int i,j,n;printf("nPlease Enter n: ");scanf("%d",&n);for(i=
19、1;i<=n;i+) for(j=1;j<=n+i-2;j+)if(j=n-i+1) printf("*");else printf(" ");printf("*n");【】分析:首先對(duì)圖形進(jìn)行設(shè)計(jì),坐標(biāo)的X軸和Y軸分別對(duì)應(yīng)屏幕的列和行,一個(gè)正弦函數(shù)的周期為0360度,我們把一個(gè)步長(zhǎng)定義為10度,打印時(shí)每換一行等于函數(shù)的自變量增加10度;屏幕的列寬為80,函數(shù)值為0對(duì)應(yīng)屏幕的第40列,sin(x)的值在-11,變換成列數(shù)為以0為中心的-3030,對(duì)應(yīng)屏幕上第1070列。設(shè)計(jì)程序時(shí),控制換行的自變量i乘以10得到正弦函數(shù)的X
20、值,調(diào)用庫(kù)函數(shù)sin()求出函數(shù)值再乘以30輸出的列寬,因?yàn)槲覀円云聊坏牡?0列為0點(diǎn),故再加上40得到應(yīng)在屏幕上顯示的點(diǎn)。參考答案:#define PAI #include <>main( ) double x;int y,i,yy;for(i=1;i<80;i+) /* 打印圖形的第一行 */if(i=40) printf("*"); /* i控制打印的列位置 */ else printf("-");printf("n");for(x=;x<=;x+=10.) /* 從10度到360度 */ y = 40+
21、30*sin(x*PAI/; /* 計(jì)算對(duì)應(yīng)的列 */yy = 40>y 40 : y; /* 下一行要打印的字符總數(shù) */for (i=1;i<=yy;i+) /* 控制輸出圖形中的一行 */ if(i=y) printf("*"); /* i控制打印的列位置 */else if(i=40) printf("|"); /* 打印中心的豎線 */else printf(" ");printf("n");【】分析:首先設(shè)計(jì)屏幕圖形,如果預(yù)計(jì)圓形在屏幕上打印20行,所以定義圓的直徑就是20,半徑為10,圓的
22、方程是X2×Y2=R2,因?yàn)閳D形不是從中心開(kāi)始打印而是從邊沿開(kāi)始,所以Y從10變化到-10,根據(jù)方程求出X,對(duì)求得的X值再根據(jù)屏幕行寬進(jìn)行必要的調(diào)整得到應(yīng)打印的屏幕位置。參考答案:#include <>main( ) double y;int x,m;for(y=10;y>=-10;y-) /* 圓的半徑為10 */ m = * sqrt(100-y*y); /* 計(jì)算行y對(duì)應(yīng)的列坐標(biāo)m */for(x=1;x<30-m;x+) printf(" "); /* 輸出圓左側(cè)的空白 */printf("*"); /* 輸出圓
23、的左側(cè) */for(;x<30+m;x+) printf(" "); /* 輸出圓的空心部分 */printf("*n"); /* 輸出圓的右側(cè) */【】參考答案:#include <>#include <>main( ) double y;int x, m, n, yy;for( yy=0;yy<=20;yy+) y = *yy;m = acos(1-y)*10;n = 45 * (y-1)+31;for( x=0;x<=62;x+ )if( x=m && x=n ) printf("
24、+");else if(x=n) printf("+");else if(x=m | x=62-m) printf("*");else printf(" ");printf("n");【】分析:編程的關(guān)鍵為兩點(diǎn),一是使用控制輸出的行和列,這方面的內(nèi)容在前面已經(jīng)敘述,另一點(diǎn)是輸出的數(shù)字和所在行、列關(guān)系。此題第一行輸出的數(shù)字恰好是列數(shù),從第二行起每行的數(shù)字均比上一行增n。參考答案:main( ) int i,j,n;printf("nPlease Enter n: ");scanf(&qu
25、ot;%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n;j+)printf("%4d",(i-1)*n+j);printf("n");【】分析:此題的關(guān)鍵是找到輸出數(shù)字和行、列數(shù)的關(guān)系。審查圖形中每行中數(shù)字的關(guān)系發(fā)現(xiàn),右邊數(shù)字和前面數(shù)字之差逐次增1;同列數(shù)字依然是這樣的關(guān)系,編程的關(guān)鍵轉(zhuǎn)換為找到每一行左方的第一個(gè)數(shù)字,然后利用行和列的循環(huán)變量進(jìn)行運(yùn)算就可得到每個(gè)位置的數(shù)字。用ai,j此表示第i行第j列的數(shù)字,則a11=1;由第i行第一列的數(shù)字推出第i+1行第一列的數(shù)字是ai+1,1 = ai,1+i
26、;同樣由第j列推出第j+1列的數(shù)字是ai,j+1 = ai,j+i+j。另外只有當(dāng)j<i時(shí)才輸出數(shù)字。參考答案:main( ) int i,j,m,n,k=1; /* k是第一列元素的值 */printf("Please enter m=" ");scanf("%d",&m);for(i=1;i<=m;i+) n=k; /* n第i行中第1個(gè)元素的值 */for(j=1;j<=m-i+1;j+) printf("%3d",n);n = n+i+j; /* 計(jì)算同行下一個(gè)元素的值 */printf(&
27、quot;n");k=k+i; /* 計(jì)算下一行中第1個(gè)元素 */ 【】參考答案:main( ) int i,j,n;printf("nPlease Enter n: ");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n;j+)if(j<=i) printf(" 1");else printf("%3d",j-i+1);printf("n");【】分析:可用不同的方案解決此問(wèn)題,為了開(kāi)闊讀者的思路,這里給出了兩個(gè)參考答
28、案,其中第二個(gè)答案是使用了遞歸方法。方案一:首先尋找數(shù)字輸出數(shù)字和行列的關(guān)系。每圈有四個(gè)邊,把每邊的最后一個(gè)數(shù)字算為下邊的開(kāi)始,最外圈每邊數(shù)字個(gè)數(shù)是n-1個(gè),以后每邊比外邊一邊少兩個(gè)數(shù)字。因?yàn)閿?shù)字是一行一行輸出的,再分析每行數(shù)字的規(guī)律。實(shí)際沒(méi)有的數(shù)字有三種規(guī)律:位于對(duì)角線之間的數(shù)字是上半圖增一,下半圖減一。對(duì)角線左側(cè)的各列,右側(cè)比左側(cè)增加了一圈數(shù)字,例如數(shù)字39和它左側(cè)的22比較,數(shù)字39所在的圈每邊4個(gè)數(shù)字,左側(cè)22加上一圈16個(gè)數(shù)字在加1就是39。同理,對(duì)角線右側(cè)的各列,則減少一圈的數(shù)字個(gè)數(shù)。根據(jù)以上分析,用兩個(gè)對(duì)角線將圖形分為四個(gè)區(qū)域,如下圖所示,圖中黑斜體字為對(duì)角線上的數(shù)字。1 2 3
29、 4 5 6 724 25 26 27 28 29 8 23 40 41 42 43 30 9 22 39 48 49 44 31 1021 38 47 46 45 32 1120 37 36 35 34 33 1219 18 17 16 15 14 13為敘述方便我們稱四個(gè)區(qū)域?yàn)樯?、下、左、右區(qū)。設(shè)i、j為行列號(hào),n為圖形的總行數(shù),則滿足各區(qū)的范圍是,上區(qū):j>=i 且 j<=n-i+1 ;下區(qū):j<=i 且 j>=n-i+1 ;左區(qū):j<i 且 j<n-i+1 ;右區(qū):j>i 且 j>n-i+1 。現(xiàn)在問(wèn)題是,如果知道一行在不同區(qū)域開(kāi)始第一個(gè)
30、位置的數(shù)字,然后該區(qū)后續(xù)的數(shù)字就可利用前面分析的規(guī)律得到。對(duì)于右區(qū)開(kāi)始各行第一個(gè)數(shù)字最易求出,為4*(n-1)-i+1。后續(xù)一個(gè)和同行前一個(gè)數(shù)字之差是4*n-1-(j-1)*2+1,其中方括號(hào)內(nèi)是每邊的數(shù)字個(gè)數(shù)。對(duì)角線上的數(shù)字是分區(qū)點(diǎn),對(duì)角線上相臨數(shù)字仍然相差一圈數(shù)字個(gè)數(shù),讀者自行分析得到計(jì)算公式。右區(qū)開(kāi)始的第一個(gè)數(shù)字可以從上區(qū)結(jié)束時(shí)的數(shù)字按規(guī)律求出。下述程序用變量s保存分區(qū)對(duì)角線上的數(shù)字。參考答案一:main() int i,j,k,n,s,m,t;printf("Please enter n:");scanf("%d",&n);for(i=1
31、;i<=n;i+) s=(i<=(n+1)/2) 1:3*(n-(n-i)*2-1)+1;m=(i<=(n+1)/2) i:n-i+1; /* m-1是外層圈數(shù) */for(k=1;k<m;k+) s+=4*(n-2*k+1);for(j=1;j<=n;j+) if(j>=n-i+1 && j<=i) /* 下區(qū) */t=s-(j-(n-i)+1;if(j>=i && j<=n-i+1) /* 上區(qū) */t=s+j-i;if(j>i && j>n-i+1) /* 右區(qū) */t-=4
32、*(n-2*(n-j+1)+1;if(j<i && j<n-i+1) /* 左區(qū) */ if(j=1) t=4*(n-1)-i+2;else t+=4*(n-2*j+1)+1;printf("%4d",t);printf("n"); 方案二:根據(jù)本題圖形的特點(diǎn),我們可以構(gòu)造一個(gè)遞歸算法。我們可以將邊長(zhǎng)為N的圖形分為兩部分:第一部分最外層的框架,第二部分為中間的邊長(zhǎng)為N-2的圖形。對(duì)于邊長(zhǎng)為N的正方型,若其中每個(gè)元素的行號(hào)為i(1iN),列號(hào)為j(1jN),第1行第1列元素表示為a1,1(a11=1),則有:對(duì)于最外層的框架可以
33、用以下數(shù)學(xué)模型描述:上邊: a1,j=a1,1+j-1 (j1)右邊: ai,N=a1,1+N+i-2 (i1)下邊: ai,1=a1,1+4N-i-3 (i1)左邊: aN,j=a1,1+3N-2-j (j1)對(duì)于內(nèi)層的邊長(zhǎng)為N-2的圖形可以用以下數(shù)學(xué)模型描述:左上角元素:ai,i=ai-1,i-1+4(N-2i-1) (i1)若令:ai,j=fun(ai-1,i-1+4(N-2i-1),當(dāng):i(N+1)/2且j(N+1)/2時(shí),min=MIN(i,j),則有:a2,2 = fun(a1,1, min, min, n)ai,j=fun(a2,2, i-min+1, j-min+1, n-2*
34、(min-1) )我們可以根據(jù)上述原理,分別推導(dǎo)出i和j為其它取值范圍時(shí)的min取值。根據(jù)上述遞歸公式,可以得到以下參考程序。參考答案二:#include <>#define MIN(x,y) (x>y) (y) : (x)fun ( int a11, int i, int j, int n) int min, a22;if( i=j && i<=1 ) return(a11);else if( i=j && i<=(n+1)/2) return( fun(a11,i-1,i-1,n)+4*(n-2*i+3);else if( i=
35、1 && j!=1) return( a11+j-1 );else if( i!=1 && j=n) return( a11+n+i-2 );else if( i!=1 && j=1 ) return ( a11+4*n-3-i );else if( i=n && j!=1 ) return ( a11+3*n-2-j );else if(i>=(n+1)/2 && j>=(n+1)/2) min = MIN(n-i+1,n-j+1);else if(i<(n+1)/2 && j&
36、gt;=(n+1)/2) min = MIN(i,n-j+1);else if(i>=(n+1)/2 && j<(n+1)/2) min = MIN(n-i+1,j);else min = MIN(i,j);a22 = fun(a11,min,min,n);return(fun(a22, i-min+1, j-min+1, n-2*(min-1);main() int a11=1, i, j, n;printf("Enter n=");scanf("%d", &n);for(i=1; i<=n; i+) for(
37、j=1; j<=n; j+)printf("%4d", fun(a11,i,j,n) );printf("n"); 【】分析:此題的關(guān)鍵還是要找到輸出數(shù)字aij和行列數(shù)i、j的關(guān)系。為此將圖形分為四個(gè)區(qū)域如下圖:3 3 3 3 3 3 2 2 2 3 3 2 1 2 3 3 2 2 2 3 3 3 3 3 3 (此圖n為5)在左上區(qū)域,即i<=(n+1)/2、j<=(n+1)/2時(shí),輸出數(shù)字為(n+1)/2-i+1和(n+1)/2-j+1中的大者,記為max(n+1)/2-i+1,(n+1)/2-j+1;在右上區(qū),即i<=(n+1
38、)/2、j>(n+1)/2時(shí), 輸出數(shù)字為max(n+1)/2-i+1,j-n/2;在左下區(qū),即i>(n+1)/2、j<=(n+1)/2時(shí),輸出數(shù)字為maxi-n/2,(n+1)/2-j+1;在右下區(qū),即i>(n+1)/2、j>(n+1)/2時(shí),輸出數(shù)字為maxi-n/2,j-n/2。參考答案:#define max(x,y) (x)>(y)(x):(y)main( ) int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(i=1;i<=n;i+)
39、 for(j=1;j<=n;j+)if(i<=(n+1)/2)if(j<=(n+1)/2)printf("%4d",max(n+1)/2-i+1,(n+1)/2-j+1);elseprintf("%4d",max(n+1)/2-i+1,j-n/2);else if(j<=(n+1)/2)printf("%4d",max(i-n/2,(n+1)/2-j+1);elseprintf("%4d",max(i-n/2,j-n/2);printf("n");【】分析:前面我們已經(jīng)見(jiàn)
40、到過(guò)上下對(duì)稱的圖形,這是一個(gè)左右對(duì)稱的圖形,垂直中心線上的數(shù)字恰好是行號(hào),在每行位于圖形垂直中心線左方的數(shù)字是逐漸增加的,而右方是逐漸減小的。j=i是分區(qū)的標(biāo)志,左方輸出數(shù)字就是列數(shù)j,而右方的數(shù)字從i開(kāi)始逐步減小1。參考答案:main() int i,j;for(i=1;i<=9;i+) for(j=1;j<=9-i;j+) printf(" ");for(j=1;j<=i;j+) printf("%2d",j);for(j=i-1;j>=1;j-) printf("%2d",j);printf("
41、n"); 【】分析:這類輸出字符的圖形和輸出數(shù)字的圖形考慮是近似的,因?yàn)樽址腁SCII碼就是一個(gè)整數(shù)。在字符碼值的變化過(guò)程中,應(yīng)該注意應(yīng)該判斷碼值是否超出字符的范圍,進(jìn)行必要的處理,為了保持程序的簡(jiǎn)潔,本題沒(méi)有考慮這個(gè)問(wèn)題,在下題里對(duì)這個(gè)問(wèn)題進(jìn)行了處理。參考答案:main( ) char c='Z';int i,j,n;printf("nPlease Enter n:");scanf("%d",&n);for(i=1;i<=n;i+) for(j=1;j<=n+i-2;j+)if(j=n-i+1) prin
42、tf("%c",c-);else printf(" ");printf("%cn",c-);for(i=1;i<n;i+) for(j=1;j<=2*(n-1)-i;j+)if(j=i+1) printf("%c",c-);else printf(" ");printf("%cn",c-);【】分析:此題與上題相近,區(qū)別在于輸出時(shí)字符的ASCII碼值的變化在圖形的中間一行為最大,同時(shí)一行的兩個(gè)字符是相同的。程序考慮在輸入字符時(shí)設(shè)計(jì)了一個(gè)循環(huán),保證輸入的是英文字母。
43、字符變化后進(jìn)行了處理,程序中使用條件運(yùn)算。在字符碼值增加的過(guò)程中,首先判斷是大寫還是小寫字符,然后判斷字符碼值是否超出英文字母z(或Z),如果超出則重新賦為a(或A);在輸出圖象下半部分時(shí),ASCII碼值減少用同樣的思路進(jìn)行判斷。在判斷字符大小寫(條件語(yǔ)句的第一個(gè)判斷)時(shí),用的是兩個(gè)不同的值,請(qǐng)讀者自行思考為什么,用同一個(gè)值是否可以參考答案:main( ) char c;int i,j,n;do printf("nPlease Enter n,char:");scanf("%d,%c",&n,&c);while(c<'A
44、39;|c>'Z'&&c<'a'|c>'z');for(i=1;i<=n;i+) for(j=1;j<=n+i-2;j+)if(j=n-i+1) printf("%c",c);else printf(" ");printf("%cn",c+);c=c<'a'(c>'Z''A':c):(c>'z''a':c);c-=2;c=c<'Z&
45、#39;(c<'A''Z':c):(c<'a' 'z':c);for(i=1;i<n;i+) for(j=1;j<=2*(n-1)-i;j+)if(j=i+1) printf("%c",c);else printf(" ");printf("%cn",c-);c=c<'Z'(c<'A''Z':c):(c<'a' 'z':c);【】參考答案:#define max(x,y) (x)>(y)(x):(y)main( ) char c;int i,j,n;do printf("nPlease Enter n,char:");scanf("
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)械行業(yè)中東天然氣設(shè)備:內(nèi)需出口雙驅(qū)擴(kuò)產(chǎn)“開(kāi)采-處理-儲(chǔ)運(yùn)-應(yīng)用”共赴出海
- 提升護(hù)理同質(zhì)化與個(gè)體化
- 籃球館老板年終總結(jié)(3篇)
- 雅安四川雅安天全縣教育局選調(diào)局機(jī)關(guān)事業(yè)單位工作人員5人筆試歷年參考題庫(kù)附帶答案詳解
- 職業(yè)倦怠預(yù)防中的認(rèn)同感帶教策略
- 衡陽(yáng)2025年湖南衡陽(yáng)縣事業(yè)單位選調(diào)100人筆試歷年參考題庫(kù)附帶答案詳解
- 潛江2025年湖北潛江市面向退役軍人專項(xiàng)招聘教師筆試歷年參考題庫(kù)附帶答案詳解
- 淮安2025年江蘇淮安盱眙縣招聘教師32人筆試歷年參考題庫(kù)附帶答案詳解
- 河南2025年河南華北水利水電大學(xué)招聘思想政治輔導(dǎo)員筆試歷年參考題庫(kù)附帶答案詳解
- 文山2025年云南文山馬關(guān)縣財(cái)政局招聘編外人員筆試歷年參考題庫(kù)附帶答案詳解
- 2025至2030伴侶動(dòng)物診斷行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 授信財(cái)務(wù)知識(shí)培訓(xùn)課件
- 師范類學(xué)生教學(xué)能力提升計(jì)劃
- 2025年江西省高考物理試卷真題(含答案及解析)
- 2025年中國(guó)燕麥數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 地理八上期末考試試卷及答案
- 景區(qū)工作總結(jié)匯報(bào)
- 向客戶介紹公司質(zhì)量管理
- 人員技能矩陣管理制度
- 2024南海農(nóng)商銀行科技金融專業(yè)人才社會(huì)招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 輸電專業(yè)十八項(xiàng)反措內(nèi)容宣貫
評(píng)論
0/150
提交評(píng)論