C語(yǔ)言圖形輸出習(xí)題_第1頁(yè)
C語(yǔ)言圖形輸出習(xí)題_第2頁(yè)
C語(yǔ)言圖形輸出習(xí)題_第3頁(yè)
C語(yǔ)言圖形輸出習(xí)題_第4頁(yè)
C語(yǔ)言圖形輸出習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

【】輸入n值,輸出以以下圖矩形?!尽枯斎雗值,輸出以以下圖平行四邊形?!尽枯斎雗值,輸出以以下圖高為n的等腰三角形?!尽枯斎雗值,輸出以以下圖高為n的等腰三角形?!尽枯斎雗值,輸出以以下圖高和上底均為n的等腰梯形。【】輸入n值,輸出以以下圖高和上底均為n的等腰空心梯形?!尽枯斎雗值,輸出以以下圖邊長(zhǎng)為n的空心正六邊型。【】輸入n值,輸出以以下圖圖形?!尽枯斎雗值,輸出以以下圖圖形?!尽枯斎雗值,輸出以以下圖圖形?!尽枯斎雗值,輸出以以下圖圖形。【】輸入n值,輸出以以下圖圖形?!尽枯斎雗值,輸出以以下圖圖形。(例為n=6時(shí))【】編寫程序,輸出以以下圖sin(x)函數(shù)0到2π的圖形?!尽烤帉懗绦?,在屏幕上輸出一個(gè)由*號(hào)圍成的空心圓。【】編寫程序,在屏幕上繪制如圖余弦曲線和直線。若屏幕的橫向?yàn)閤軸,縱向?yàn)閥軸,在屏幕上顯示0~360度的cos(x)曲線與直線x=f(y)=45*(y-1)+31的迭加圖形。此中cos圖形用"*"表示,f(y)用"+"表示,在兩個(gè)圖形的交點(diǎn)處則用f(y)圖形的符號(hào)?!尽烤帉懗绦颍敵鲆砸韵聢D高度為n的圖形。【】編寫程序,輸出以以下圖高度為n的圖形?!尽枯斎雗值,輸出以以下圖圖形?!尽枯斎雗值,輸出以以下圖的n×n(n<10)階螺旋方陣。12345161718196152425207142322218131211109圖n=5時(shí)的螺旋方陣【】輸入n值,輸出以以下圖回型方陣。【】輸出以以下圖的數(shù)字金字塔【】輸入n值,輸出以以下圖圖形?!尽枯斎腠斝凶址蛨D形的高,輸出以以下圖圖形。【】輸入首字符和高后,輸出以以下圖回型方陣。AAAAAABBBAABCBAABBBAAAAAA圖首字符為'A'、高為5的方陣【】輸入中心字符和高后,輸出以以下圖回型方陣。XXXXXXYYYXXYZYXXYYYYXXXXX圖中心字符為'Z'、高為5的方陣【】編寫程序,輸出以以下圖上三角形式的乘法九九表。【】編寫程序,輸出以以下圖下三角乘法九九表。【】分析:打印此圖形用雙重循環(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)號(hào),即:for(j=1;j<=n;j++)

n次循環(huán),循環(huán)內(nèi)部用格式輸出語(yǔ)句打印一個(gè)

'*'printf("*")

;依據(jù)上述思路,實(shí)現(xiàn)打印矩形。參照答案:main( ){inti,j,n

;printf("\nPleaseEntern:")

;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("*");printf("\n")

;}}【】分析:此圖形和上題的差別在于在每一行先要打印空格,而后再打印n個(gè)'*'號(hào),在上題第一層循環(huán)體內(nèi)打印'*'號(hào)的循環(huán)前面增添一個(gè)循環(huán)打印空格。每行空格的個(gè)數(shù)是逐行減少的,因?yàn)榈谝粚友h(huán)的控制變量i是逐行增1,所以用一個(gè)固定值的數(shù)減去i即可實(shí)現(xiàn)對(duì)空格個(gè)數(shù)的控制,在本題中固定值可使用變量n。參照答案:main( ){inti,j,n

;printf("\nPleaseEntern:")

;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");}}【】分析:本題和上題的差別在于每行'*'的數(shù)目逐行減少,能夠使用上題控制空格個(gè)數(shù)的思路來控制'*'號(hào)的個(gè)數(shù),請(qǐng)注意每行'*'的個(gè)數(shù)都是奇數(shù)。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");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è)思路。關(guān)于圖形中的第i行(1≤i≤n),共需要輸出2n-i個(gè)字符,此中前面的i-1個(gè)字符為空格,后邊的字符為'*'號(hào)。依據(jù)這一思路能夠編寫出以下程序。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");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("");/*輸出前面的空格*/elseprintf("*");/*輸出后邊的*號(hào)*/printf("\n");}}【】分析:本題和第3題的差別僅是每行的'*'個(gè)數(shù)增添n-1個(gè)。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");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("*");printf("\n");}}【】分析:關(guān)于空心圖形,我們能夠在上題的基礎(chǔ)上,關(guān)于打印'*'號(hào)的循環(huán)進(jìn)行改正,僅在循環(huán)開始值(j=1)和循環(huán)結(jié)束值(j=2*(i-1)+n)時(shí)打印'*'號(hào),其他地點(diǎn)都打印空格。另一種思路是將每行打印的空格和'*'的兩個(gè)循環(huán)合為一體考慮,在判斷出需要打印'*'的兩個(gè)位置及第一行和最后一行相應(yīng)地點(diǎn)外,其他地點(diǎn)都打印空格。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&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("*");elseprintf("");printf("*\n");}}【】分析:此圖形能夠理解為兩個(gè)空心梯形反向連結(jié)而成,所以能夠利用上題的思路進(jìn)行輸出。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++)/*輸出圖形的上半部分(含中心行)*/{for(j=1;j<=2*n-i-1;j++)if(j==i)printf("*");elseprintf("");printf("*\n");}for(i=1;i<n;i++)/*輸出圖形的下半部分(不含中心行)*/{for(j=1;j<=n+i;j++)if(j==n-i)printf("*");elseprintf("");printf("*\n");}}【】分析:本題與上題的差別在于打印'*'號(hào)的地點(diǎn)不一樣,編程時(shí)要找出應(yīng)打印'*'號(hào)的地點(diǎn)和兩個(gè)循環(huán)變量i、j以及行數(shù)n的關(guān)系。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");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("*");elseprintf("");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("*");elseprintf("");printf("*\n");}}【】參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)if(j==n-i+1||i==1||i==n)printf("*");elseprintf("");printf("\n");}}【】參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++)/*輸出圖形的上半部分(含中心行)*/{for(j=1;j<=n-i;j++)if(j==1||j==n-i+1)printf("*");elseprintf("");printf("\n");}for(i=1;i<n;i++)/*輸出圖形的下半部分(不含中心行)*/{for(j=1;j<=i+1;j++)if(j==1||j==i+1)printf("*");elseprintf("");printf("\n");}}【】參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)if(j==1||j==i||j==n)printf("*");elseprintf("");printf("\n");}}【】參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+i-1;j++)if(j>n-i)printf("*");elseprintf("");printf("\n");}for(i=1;i<n;i++){for(j=1;j<=2*n-i-1;j++)if(j>i)printf("*");elseprintf("");printf("\n");}}【】參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+i-2;j++)if(j==n-i+1)printf("*");elseprintf("");printf("*\n");}}【】分析:第一對(duì)圖形進(jìn)行設(shè)計(jì),坐標(biāo)的X軸和Y軸分別對(duì)應(yīng)屏幕的列和行,一個(gè)正弦函數(shù)的周期為0~360度,我們把一個(gè)步長(zhǎng)定義為10度,打印時(shí)每換一行等于函數(shù)的自變量增添10度;屏幕的列寬為80,函數(shù)值為0對(duì)應(yīng)屏幕的第40列,sin(x)的值在-1~1,變換成列數(shù)為以0為中心的-30~30,對(duì)應(yīng)屏幕上第10~70列。設(shè)計(jì)程序時(shí),控制換行的自變量i乘以10獲得正弦函數(shù)的X值,調(diào)用庫(kù)函數(shù)sin( )求出函數(shù)值再乘以30輸出的列寬,因?yàn)槲覀円云聊坏牡?0列為0點(diǎn),故再加上40獲得應(yīng)在屏幕上顯示的點(diǎn)。參照答案:#definePAI#include<>main( ){doublex;inty,i,yy;for(i=1;i<80;i++)/*打印圖形的第一行*/if(i==40)printf("*");/*i控制打印的列地點(diǎn)*/elseprintf("-");printf("\n");for(x=;x<=;x+=10.)/*從10度到360度*/{y=40+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控制打印的列地點(diǎn)*/elseif(i==40)printf("|");/*打印中心的豎線*/elseprintf("");}printf("\n");}}【】分析:第一設(shè)計(jì)屏幕圖形,假如估計(jì)圓形在屏幕上打印20行,所以定義圓的直徑就是20,半徑為10,圓的方程是X2×Y2=R2,因?yàn)閳D形不是從中心開始打印而是從邊緣開始,所以Y從10變化到-10,依據(jù)方程求出X,對(duì)求得的X值再依據(jù)屏幕行寬進(jìn)行必需的調(diào)整獲得應(yīng)打印的屏幕地點(diǎn)。參照答案:#include<>main( ){doubley

;intx,m;for(y=10;y>=-10;y--)/*{m=*sqrt(100-y*y);

/*

圓的半徑為10*/計(jì)算行y對(duì)應(yīng)的列坐標(biāo)

m*/for(x=1

;x<30-m;x++)printf("");/*輸出圓左邊的空白*/printf("*");/*輸出圓的左邊*/for(;x<30+m;x++)printf("");/*輸出圓的空心部分*/printf("*\n");/*輸出圓的右邊*/}}【】參照答案:#include<>#include<>main( ){doubley;intx,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("+");elseif(x==n)printf("+");elseif(x==m||x==62-m)printf("*");elseprintf("");printf("\n");}}【】分析:編程的要點(diǎn)為兩點(diǎn),一是使用控制輸出的行和列,這方面的內(nèi)容在前面已經(jīng)表達(dá),另一點(diǎn)是輸出的數(shù)字和所內(nèi)行、列關(guān)系。本題第一行輸出的數(shù)字恰巧是列數(shù),從第二行起每行的數(shù)字均比上一行增n。參照答案:main( ){inti,j,n;printf("\nPleaseEntern:")scanf("%d",&n);for(i=1;i<=n;i++)

;{for(j=1;j<=n;j++)printf("%4d",(i-1)*n+j);printf("\n");}}【】分析:本題的要點(diǎn)是找到輸出數(shù)字和行、列數(shù)的關(guān)系。審察圖形中每行中數(shù)字的關(guān)系發(fā)現(xiàn),右邊數(shù)字和前面數(shù)字之差逐次增1;同列數(shù)字依舊是這樣的關(guān)系,編程的要點(diǎn)變換為找到每一行左方的第一個(gè)數(shù)字,而后利用行和列的循環(huán)變量進(jìn)行運(yùn)算即可獲得每個(gè)地點(diǎn)的數(shù)字。用ai,j此表示第i行第j列的數(shù)字,則a11=1;由第i行第一列的數(shù)字推出第i+1第一列的數(shù)字是ai+1,1=ai,1+i;相同由第j列推出第j+1列的數(shù)字是ai,j+1=ai,j+i+j其他只有當(dāng)j<i時(shí)才輸出數(shù)字。參照答案:

行。main( ){inti,j,m,n,k=1;/*kprintf("Pleaseenterm="")

是第一列元素的值;

*/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("\n");k=k+i;/*計(jì)算下一行中第1個(gè)元素*/}}【】參照答案:main( ){inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)if(j<=i)printf("1");elseprintf("%3d",j-i+1);printf("\n");}}【】分析:可用不一樣的方案解決此問題,為了寬闊讀者的思路,這里給出了兩個(gè)參照答案,此中第二個(gè)答案是使用了遞歸方法。方案一:第一找尋數(shù)字輸出數(shù)字和隊(duì)列的關(guān)系。每圈有四個(gè)邊,把每邊的最后一個(gè)數(shù)字算為下面的開始,最外圈每邊數(shù)字個(gè)數(shù)是n-1個(gè),以后每邊比外邊一邊少兩個(gè)數(shù)字。因?yàn)閿?shù)字是一行一行輸出的,再分析每行數(shù)字的規(guī)律。實(shí)質(zhì)沒有的數(shù)字有三種規(guī)律:位于對(duì)角線之間的數(shù)字是上半圖增一,下半圖減一。對(duì)角線左邊的各列,右邊比左邊增添了一圈數(shù)字,比方數(shù)字39和它左邊的22比較,數(shù)字39所在的圈每邊4個(gè)數(shù)字,左邊22加上一圈16個(gè)數(shù)字在加1就是39。同理,對(duì)角線右邊的各列,則減少一圈的數(shù)字個(gè)數(shù)。依據(jù)以上分析,用兩個(gè)對(duì)角線將圖形分為四個(gè)地區(qū),以以下圖所示,圖中黑斜體字為對(duì)角線上的數(shù)字。1234567242526272829823404142433092239484944311020373635343312為表達(dá)方便我們稱四個(gè)地區(qū)為上、下、左、右區(qū)。設(shè)i、j為隊(duì)列號(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。此刻問題是,假如知道一行在不一樣地區(qū)開始第一個(gè)地點(diǎn)的數(shù)字,而后該區(qū)后續(xù)的數(shù)字即可利用前面分析的規(guī)律獲得。關(guān)于右區(qū)開始各行第一個(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ū)開始的第一個(gè)數(shù)字能夠從上區(qū)結(jié)束時(shí)的數(shù)字按規(guī)律求出。下述程序用變量s保留分區(qū)對(duì)角線上的數(shù)字。參照答案一:main( ){inti,j,k,n,s,m,t;printf("Pleaseentern:");scanf("%d",&n);for(i=1;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*(n-2*(n-j+1))+1;if(j<i&&j<n-i+1)/*左區(qū)*/{if(j==1)t=4*(n-1)-i+2;elset+=4*(n-2*j+1)+1;}printf("%4d",t);}printf("\n");}}方案二:依據(jù)本題圖形的特色,我們能夠結(jié)構(gòu)一個(gè)遞歸算法。我們能夠?qū)⑦呴L(zhǎng)為N的圖形分為兩部分:第一部分最外層的框架,第二部分為中間的邊長(zhǎng)為N-2的圖形。關(guān)于邊長(zhǎng)為N的正方型,若此中每個(gè)元素的行號(hào)為i(1≤i≤N),列號(hào)為j(1≤j≤N),第1行第1列元素表示為a1,1(a11=1),則有:關(guān)于最外層的框架能夠用以下數(shù)學(xué)模型描繪:上面:a1,j=a1,1+j-1(j≠1)右邊:ai,N=a1,1+N+i-2(i≠1)下面:ai,1=a1,1+4N-i-3(i≠1)左邊:aN,j=a1,1+3N-2-j(j≠1)關(guān)于內(nèi)層的邊長(zhǎng)為N-2的圖形能夠用以下數(shù)學(xué)模型描繪:左上角元素:ai,i=ai-1,i-1+4(N-2i-1)(i>1)若令: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*(min-1))我們能夠依據(jù)上述原理,分別推導(dǎo)出i和

j

為其他取值范圍時(shí)的

min

取值。依據(jù)上述遞歸公式,能夠獲得以下參照程序。參照答案二:#include<>#defineMIN(x,y)(x>y)?(y):(x)fun(inta11,inti,intj,intn){intmin,a22;if(i==j&&i<=1)return(a11);elseif(i==j&&i<=(n+1)/2)return(fun(a11,i-1,i-1,n)+4*(n-2*i+3));elseif(i==1&&j!=1)return(a11+j-1);elseif(i!=1&&j==n)return(a11+n+i-2);elseif(i!=1&&j==1)return(a11+4*n-3-i);elseif(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);elseif(i<(n+1)/2&&j>=(n+1)/2)min=MIN(i,n-j+1);elseif(i>=(n+1)/2&&j<(n+1)/2)min=MIN(n-i+1,j);elsemin=MIN(i,j);a22=fun(a11,min,min,n);return(fun(a22,i-min+1,j-min+1,n-2*(min-1)));}}main( ){inta11=1,i,j,n;printf("Entern=");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%4d",fun(a11,i,j,n));printf("\n");}}【】分析:本題的要點(diǎn)還是要找到輸出數(shù)字

aij

和隊(duì)列數(shù)

i、j

的關(guān)系。為此將圖形分為四個(gè)地區(qū)以以下圖:3333332223321233222333333(此圖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)/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ù)字為max{i-n/2,(n+1)/2-j+1};在右下區(qū),即i>(n+1)/2、j>(n+1)/2時(shí),輸出數(shù)字為max{i-n/2,j-n/2}

。參照答案:#definemax(x,y)((x)>(y)?(x):(y))main( ){inti,j,n

;printf("\nPleaseEntern:")

;scanf("%d",&n);for(i=1;i<=n;i++){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));elseif(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)見到過上下對(duì)稱的圖形,這是一個(gè)左右對(duì)稱的圖形,垂直中心線上的數(shù)字恰巧是行號(hào),在每行位于圖形垂直中心線左方的數(shù)字是逐漸增添的,而右方是逐漸減小的。j==i是分區(qū)的標(biāo)記,左方輸出數(shù)字就是列數(shù)j,而右方的數(shù)字從i開始逐漸減小1。參照答案:main( ){inti,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("\n");}}【】分析:這種輸出字符的圖形和輸出數(shù)字的圖形考慮是近似的,因?yàn)樽址腁SCII碼就是一個(gè)整數(shù)。在字符碼值的變化過程中,應(yīng)當(dāng)注意應(yīng)當(dāng)判斷碼值能否高出字符的范圍,進(jìn)行必要的辦理,為了保持程序的簡(jiǎn)短,本題沒有考慮這個(gè)問題,在下題里對(duì)這個(gè)問題進(jìn)行了辦理。參照答案:main( ){charc='Z';inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+i-2;j++)if(j==n-i+1)printf("%c",c--);elseprintf("");printf("%c\n",c--);}for(i=1;i<n;i++){for(j=1;j<=2*(n-1)-i;j++)if(j==i+1)printf("%c",c--);elseprintf("");printf("%c\n",c--);}}【】分析:本題與上題周邊,差別在于輸出時(shí)字符的ASCII碼值的變化在圖形的中間一行為最大,同時(shí)一行的兩個(gè)字符是相同的。程序考慮在輸入字符時(shí)設(shè)計(jì)了一個(gè)循環(huán),保證輸入的是英文字母。字符變化后進(jìn)行了辦理,程序中使用條件運(yùn)算。在字符碼值增添的過程中,首先判斷是大寫還是小寫字符,而后判斷字符碼值能否高出英文字母z(或Z),假如高出則重新賦為a(或A);在輸出圖象下半部分時(shí),ASCII碼值減少用相同的思路進(jìn)行判斷。在判斷字符大小寫(條件語(yǔ)句的第一個(gè)判斷)時(shí),用的是兩個(gè)不一樣的值,請(qǐng)讀者自行思慮為何,用同一個(gè)值能否能夠?參照答案:main( ){charcinti,j,n

;;do{printf("\nPleaseEntern,char:")

;scanf("%d,%c",&n,&c);}while(c<'A'||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)

;elseprintf("")

;printf("%c\n",c++)

;c=c<'a'?(c>'Z'?'A':c):(c>'z'?'a':c)

;}c-=2;c=c<'Z'?(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);elseprintf("");printf("%c\n",c--);c=c<'Z'?(c<'A'?'Z':c):(c<'a'?'z':c)}

;}【】參照答案:#definemax(x,y)((x)>(y)?(x):(y))main( ){charc;inti,j,n;do{printf("\nPleaseEnte

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論