2017-12-24 28 views
-6

다음 코드를 사용하여 모든 행의 첫 번째 문자를 변경하고 필요한 모든 문자를 인쇄 할 수있었습니다. 어떤 도움을 주시면 감사하겠습니다. 당신의 도움에 미리 감사드립니다.C Primer Plus 6th ed chapter 6 프로그래밍 연습 4

//This is a program to print a pattern of the letters 
//A to U. Printing a number of letters 
//with the row number. First row/one letter, second row/ 
//two letters, etc. 
//A 
//BC 
//DEF 
//GHIJ 
//KLMNO 
//PQRSTU 

#include <stdio.h> 

#define ROWS 6 
#define CHARS 21 

int main(void) 
{ 
    int row; 
    char ch; 

    for(row = 0; row < ROWS; row++) 
    { 
     for(ch = ('A' + row); ch < ('A' + CHARS); ch++) 
      printf("%c", ch); 
     printf("\n"); 
    } 

    return 0; 
} 

답변

0

초보자는 서로 도와야합니다. 여기있다.

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    const char *s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    const size_t N = strlen(s); 

    while (1) 
    { 
     printf("Enter a non-negative number (0 - exit): "); 

     size_t n; 
     if (scanf("%zu", &n) != 1 || n == 0) break; 

     size_t k = 0; 

     for (size_t i = 0; i < n; i++) 
     { 
      for (size_t j = 0; j <= i; j++) 
      { 
       printf("%c", s[ k++ % N ]); 
      } 
      putchar('\n'); 
     } 
    } 

    return 0; 
} 

프로그램 출력은

Enter a non-negative number (0 - exit): 12 
A 
BC 
DEF 
GHIJ 
KLMNO 
PQRSTU 
VWXYZAB 
CDEFGHIJ 
KLMNOPQRS 
TUVWXYZABC 
DEFGHIJKLMN 
OPQRSTUVWXYZ 
Enter a non-negative number (0 - exit): 0 
+2

당신은 초보자 자신을 부르는 것처럼 보일 수 있습니다? 내가 아래로 스크롤하면서 응답자가 50 명의 사용자라고 생각했습니다. –

+0

@ machine_1 논리적 실수가 있습니다. 숙련 된 프로그래머는 질문에 답하지 않기 때문에 약 50 점의 평판을 얻을 수 있습니다. 초보자는 다른 초보자에게 도움이되는 질문에 대답하기 때문에 상대적으로 높은 평판을 얻을 수 있습니다. :) –