這道題是要可以多次輸出的,所以就用循環(huán)來控制輸入輸出了。至于菱形部分,可以分為增加字符輸出和減少字符輸出來循環(huán)輸出字符和空格兩部分,上一部分:字符行數(shù)就是你輸入的數(shù)據(jù)n,可用for語句定義一個變量來控制輸出,再看字符和空格的輸出,先輸出空格個數(shù)j(j=0到((n-1)-i)《包括(n-1)-i》),再輸出字符個數(shù)k(k=0到2*i)《即共2*i+1個》;
成都創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計,魚臺網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:魚臺等地區(qū)。魚臺做網(wǎng)站價格咨詢:028-86922220
然后是下一部分:也用一for語句控制輸出,空格個數(shù)從(0到i),字符個數(shù)從(0到n-2*i)。
執(zhí)行多次就行了。
下面是輸出邊長為4的*號的菱形,僅供參考(你只要根據(jù)其修改一下就行了):
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");
}
}
#include stdio.h
int main()
{
int i,j,m,n;
printf("請輸入菱形的行數(shù):");
//判斷n是否符合正奇數(shù)的要求
while (scanf("%d", n) != EOF n % 2 == 1)
{ //對上半個菱形輸出
for (i = 1; i = (n + 1) / 2; i++)
{
//i控制行數(shù),j控制每一行的位置
//輸出空格
for (j = 1; j = (n + 1) / 2 - i; j++)
printf(" ");
//輸出*
for (j = 1; j = 2 * i - 1; j++)
printf("*");
//輸出換行
printf("\n");
}
//輸出下一半
//i控制行數(shù)
for (i = 1; i = n / 2; i++)
{
//j控制每一行的位置
//輸出空格
for (j = 1; j = i; j++)
printf(" ");
//輸出*
for (j = 1; j = n - 2 * i; j++)
printf("*");
//輸出換行
printf("\n");
}
}
return 0;
}
java語言輸出菱形:
public?static?void?main(String?[]?args){
int?row=11;?//設(shè)置打印的行數(shù),11也就是菱形對角線的長。
for?(int?i=0;irow;i++){
for(?int?j=0;?j?row?;?j++){
//左上,右上,左下,右下四個角打印空格
//可以一個判斷語句寫出,四個判斷分別對應(yīng)四個角的位置
if(?irow/2??(j?row/2?-?i?||?j?row/2?+i)?||
irow/2??(j?i?-row/2??||?j?row?-i?+row/2?-1?)?){
//?滿足條件打印空格
System.out.print("?");????
}else{
//?不滿足條件打印?*?
System.out.print("*");
}
}
//?一次循環(huán)結(jié)束,換行
System.out.println();
}
System.out.println("---------------------------------");
//?下面打印花紋。?很多菱形循環(huán)排列
//?設(shè)置橫排重復(fù)次數(shù)15,豎排重復(fù)次數(shù)12。共15*12個菱形,每一個菱形是?11的對角線長
int?wCount=15;
int?hCount=12;
int?wRows=row*wCount;
int?hRows=row*hCount;
for(int?i=0;ihRows;i++){
int?temp1=i;
i?=?i?%?row;
for(int?j=0;jwRows;j++){
int?temp2?=?j?;
j?=?j?%?row?;
if(irow/2(jrow/2-i||jrow/2+i)||
???irow/2(ji-row/2||j=row+row/2-i)){
System.out.print("?");
}else{
System.out.print("*");
}
j?=?temp2?;
}
i?=?temp1;
System.out.println();
}
}
菱形,就是如下所示的圖形,總行數(shù)與總列數(shù)相等:
寫一個程序,根據(jù)用戶輸入的總行數(shù),打印出菱形。
這個題目主要是找出規(guī)律,考察讀者的邏輯思維。
你可以從第一行開始,遍歷所有的列,也可以從第一列開始,遍歷所有的行。
下面的程序從第一行開始,遍歷所有的列。
設(shè)菱形的總行數(shù)為line,總列數(shù)為column,當(dāng)前行為i,當(dāng)前列為j。上半部分與下半部分的規(guī)律不一樣,應(yīng)該分開討論。
我們著眼于星號(*),思考什么條件下輸出星號,總結(jié)出如下的規(guī)律。
1) 對于上半部分(包括中間一行),當(dāng)前行與當(dāng)前列滿足如下關(guān)系輸出星號:
j=(column+1)/2-(i-1) ? ? (column+1)/2-(i-1)為第i行最左邊的星號
j=(column+1)/2+(i-1) ? ?(column+1)/2+(i-1)為第i行最右邊的星號
2) 對于下半部分,當(dāng)前行與當(dāng)前列滿足如下關(guān)系輸出星號:
j=(column+1)/2-(line-i) ? ? (column+1)/2-(line-i)為第i行最左邊的星號
j=(column+1)/2+(line-i) ? ?(column+1)/2+(line-i)為第i行最右邊的星號
不滿足上述條件,則輸出空格。
于是寫出如下的代碼:純文本復(fù)制
#include stdio.h#include stdlib.hint main(){int line; ?// 菱形總行數(shù)int column; ?// 菱形總列數(shù)int i; ?// 當(dāng)前行int j; ?// 當(dāng)前列printf("請輸入菱形的行數(shù)(奇數(shù)):");scanf("%d", line);if(line%2==0){ ?// 判斷是否是奇數(shù)printf("必須輸入奇數(shù)!\n");exit(1);}column = line; ?// 總行數(shù)和總列數(shù)相同for(i=1; i=line; i++){ ?// 遍歷所有行if(i(line+1)/2+1){ ?// 上半部分(包括中間一行)for(j=1; j=column; j++){ ?// 遍歷上半部分的所有列if( (column+1)/2-(i-1)=j j=(column+1)/2+(i-1) ){printf("*");}else{printf(" ");}}}else{ ?// 下半部分for(j=1; j=column; j++){ ?// 遍歷下半部分的所有列if( (column+1)/2-(line-i)=j j=(column+1)/2+(line-i) ){printf("*");}else{printf(" ");}}}printf("\n");}return 0;}
運行結(jié)果:請輸入菱形的行數(shù)(奇數(shù)):11
*
***
*****
*******
*********
***********
*********
*******
*****
***
*