2010-11-30 39 views
0

我是C編程的新手,在編程練習時遇到了一些困難,我敢肯定這對任何知道C的人都很簡單,不幸的是你必須按照練習。幫助一個簡單的C編程練習

這裏的練習:

有一個程序,要求用戶輸入 一個大寫字母。使用嵌套循環 產生金字塔狀 這樣的:

A 

    ABA 

    ABCBA 

ABCDCBA 

ABCDEDCBA 

的模式應該擴展到 輸入的字符。例如, 前面的模式將由E的 輸入值產生。提示:使用外部 循環來處理行。在一行中使用三個 內部循環,一個用於處理 空格,一個用於按升序打印字母 ,另一個用於打印降序順序的字母 。

所以我能走到今天:

#include <stdio.h> 

int main(void) { 

int rows; 
int spaces; 

char asc; 
char desc; 
char input; 

printf("Please enter an uppercase letter: "); 
scanf("%c", &input); 

for (rows = 'A'; rows <= input; rows++) { 
    for (spaces = input; spaces > rows; spaces--) { 
    printf(" "); 
    } 
    for (asc = 'A'; asc <= rows; asc++) { 
    printf("%c", asc); 
    } 
    for (desc = asc - 2; desc >= rows; desc--) { 
    printf("%c", desc); 
    } 
    printf("\n"); 
} 
return 0; 
} 
+5

什麼是你的問題? – 2010-11-30 05:58:21

回答

5

你是非常接近:

for (desc = asc - 2; desc >= 'A'; desc--) { 

注意,第二內環後,ascrows + 1。然後,您將desc初始化爲rows - 1。你應該能夠明白爲什麼>= rows是錯誤的,並且不會導致迭代。

正確的條件是簡單的>= 'A'

+0

哇,這很痛苦。多謝,夥計。一直在看那條該死的線約一個小時。 – Corey 2010-11-30 06:03:56

+0

@Corey:如果這回答了你的問題,請點擊勾號輪廓把它變成綠色,並給Matthew這個榮譽。 – 2010-11-30 07:13:35

-1
#include <stdio.h> 
#include <string.h> 
#define ROW 6 

int main() { 

    char let = '\0', ch; 
    int row; 

    scanf("%c", &let); 
    for (row = 0; row <= ROW; row++) { 
    for (ch = let; let > (ch + row); --ch) { 
     for (ch = let; let < (ch + row); ++ch) { 
     printf("%c", ch); 
     } 
     // ch = let; 
     printf("\n"); 
    } 
    } 
    return 0; 
} 

任何意見或修正將高度讚賞..我也是一個新的 //學習者;)