此題解法,我將這個菱形放在了壹個二維數組中,因為用二維數組可以界定X的邊界,比較方便壹點。?循環輸出的時候,特別註意循環跳出的條件,妳畫個二維數組,體會壹下裏面的數學關系,多上機改改代碼,呵呵。要特別註意?q?的用途哦。
#include<stdio.h>
void?main() { #define?N?7//定義二維數組的行和列 int?i,j; char?a[N][N]; int?q=N/2;//找到數組的中間列 char?t,p;//?定義輸出字符,t代表X,p代表Y printf("qing?shu?ru?X,Y:\n"); scanf("%c,%c",&t,&p);?//?註意此處輸入的時候,不要忘記“,”了哦 for(i=0;i<N;i++)?//將二維數組的值全部先賦值為“空格” for(j=0;j<N;j++) a[i][j]='?'; for(i=0;i<q;i++)?//將菱形壹分兩半,這個是上半部分的輸出,以中間列 {//為開始,向兩邊擴展,為了輸出X?,註意i循環到q-1
a[i][q-i]=t;
a[i][q+i]=t;
for(j=(q-i+1);j<(q+i);j++?)?//以兩邊的X列為邊界,輸出Y
a[i][j]=p;
}
for(i=q;i<N;i++)?//這個是下半部分的輸出,i從q開始循環到最後
{
a[i][q-(N-1-i)]=t;?//仍然是從中間列開始向兩邊擴散,輸出X
a[i][q+(N-1-i)]=t;
for(j=(q-(N-1-i)+1);j<(q+(N-1-i));j++?)?//從X邊界開始從做到右輸出Y
a[i][j]=p;
}
for(i=0;i<N;i++) {{for(j=0;j<N;j++)
printf("%c",a[i][j]);}
printf("\n");}
}?
我這裏輸出的是標準的菱形,中間的Y的個數和妳給的不壹樣,如果妳想要妳的那種結果,只需要在輸出Y的時候,將循環的邊界再減壹個,就可以了,不過圖形是會變形,不會是菱形了。
上機運行的時候,把這些漢字清理了吧,要不可能編譯出問題,好運~