2010-11-30 2 views
0

Я новичок в программировании на С, имея немного сложностей с упражнением по программированию, я уверен, что это просто для тех, кто знает 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--) { 

Обратите внимание, что после второго внутреннего цикла, asc является rows + 1. Затем вы инициализируете desc до rows - 1. Вы должны уметь видеть, почему >= rows ошибочно, и не приведет к итерациям.

Правильное состояние - это просто >= 'A'.

+0

Ничего себе, это больно. Спасибо приятель. Просматривал эту чертову линию около часа. – Corey 2010-11-30 06:03:56

+0

@Corey: Если это ответили на ваш вопрос, нажмите на галочку, чтобы превратить ее в зеленый цвет и дать Мэтью прекрасное признание. – 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; 
} 

Любые комментарии или исправления будут высоко оценены .. Я тоже новый // обучаемость;)