[C언어] 초보질문입니다.

logfire의 이미지

for문과 printf문을 사용하여 풀어야 하는데요. 그밖에 if문이나 다른 문을 사용하면 안됩니다

문제.
[빈공간][빈공간][빈공간][빈공간] *
[빈공간][빈공간][빈공간] * *
[빈공간][빈공간] * * *
[빈공간] * * * *
* * * * *

문제는 이거구요 첫번째줄은 빈공간 4칸하고 별하나 다음은 빈공간 3칸하고 별하나 이런식입니다.

좀 풀어주세요 ㅡㅜ 힘드네요

좋은하루되세요.

lsj0713의 이미지

#include <stdio.h>

int main(void)
{
    int i, j;

    for ( /* ... */ )
    {
        for ( /* ... */ )
        {
            /* 공백출력 */
        }
        for ( /* ... /* )
        {
            /* 별표출력 */
        }
        /* 줄바꿈문자 출력 */
    }
    return 0;
}

/* ... */ 부분들만 적당히 고치시면 될 것입니다. 아무래도 숙제인듯한 분위기가 풍기는데, 더 긴말은 않겠습니다.

jedi의 이미지

#include <stdio.h>

int main(){

        int a,b;

for ( a=1 ; a<=5 ; a++ ){
        for ( b=5; b>=1; b-- )
                if ( a >= b)
                        printf("*");
                else 
                        printf (" ");
printf("\n");
}
return 0 ;
}

+++ 여기부터는 서명입니다. +++
국가 기구의 존속을 위한 최소한의 세금만을 내고, 전체 인민들이 균등한 삶을
영위할 수 있는 착취가 없는 혁명의 그날은 언제나 올 것인가!
-- 조정래, <태백산맥> 중에서, 1986년

beta의 이미지

#include <stdio.h>

int main(void)
{
        int i = 1 ;

        for( ; i ; i=!i )
                printf("    *\n"
                       "   **\n"
                       "  ***\n"
                       " ****\n"
                       "*****\n" ) ;
        return 0 ;
}

동아리 숙제라면 아마도 선배한테 맞아죽을듯.. --; 왕갈굼.. --;

발 담갔다. 이제 익숙해 지는길만이..

버려진의 이미지

Quote:
동아리 숙제라면 아마도 선배한테 맞아죽을듯.. --; 왕갈굼.. --;

하하하 보고 한참 웃었습니다 :P
제 기억에는 printf()를 이용하여 어떤 출력 방법이 있었던것 같은데 옆에 c책이 없어서 모르겠군요 :D
저라면 그냥 그런 식으로 짤것 같습니다. Keep it Simple and Stupid :)

bblackstar의 이미지

[삭제] ^^;

logfire의 이미지

고맙습니다...숙제는아니구여..혼자공부하고있는데....
고민고민해도 안나와서요...답글 고맙습니다..^^

세벌의 이미지

int main(void){
  int i, j;

  for(i=1; i<=5; i++){

    for(j=5-i; j>0; j--)
      printf("[빈공간] ");

    for(j=1; j<=i; j++)
      prinftf("*");

    printf("\n");
  }
  return 0;
}

컴파일 해 보지는 않았습니다.

불량청년의 이미지

Quote:
고맙습니다...숙제는아니구여..혼자공부하고있는데....
고민고민해도 안나와서요...답글 고맙습니다..^^

위에 답글 다신분들 더 많이 배워야 겠군요.

상당히 보기 안좋습니다. ㅡ,.ㅡ^

그리고 질문하신분 힘내세요~! 나중에 고수되시고 저렇게만 행동

하지 않으시면 됩니다. *^^*

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

세벌의 이미지

tacstar wrote:
위에 답글 다신분들 더 많이 배워야 겠군요.

상당히 보기 안좋습니다. ㅡ,.ㅡ^

그리고 질문하신분 힘내세요~! 나중에 고수되시고 저렇게만 행동

하지 않으시면 됩니다. *^^*

저도 보기 안 좋았나 보죠. 생각할 기회를 주지 않고 답을 말해 버려서 ? -.-

fliers의 이미지

#include <stdio.h>

int main (void)
{
        int i;
        char tmp[6];

        for (i=0; i<5; i++) {
                tmp[i]='*'; tmp[i+1]='\0';
                printf("%5s\n", tmp);
        }

        return 0;
}

공백은 알아서 출력해 주는걸요 :D

saintrole의 이미지

그냥 내용삭제 ㅡㅡ;;;;;

좋은하루 되세요.^^

불량청년의 이미지

Quote:
tacstar 씀:
위에 답글 다신분들 더 많이 배워야 겠군요.

상당히 보기 안좋습니다. ㅡ,.ㅡ^

그리고 질문하신분 힘내세요~! 나중에 고수되시고 저렇게만 행동

하지 않으시면 됩니다. *^^*

저도 보기 안 좋았나 보죠. 생각할 기회를 주지 않고 답을 말해 버려서 ? -.-

아뇨! 세벌님의 답은 정성(?)이 있어 보였습니다.

다만 제가 말한 것은 다른 몇몇 분들께서 너무 조롱(?)하는 듯하게 답글을

달아 주는것에 대한 내용이였습니다. 고정하십시요~ *^^*

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

버려진의 이미지

stupid라는 말이 눈에 거슬리셨나 본데, 저건 유명한 격언(?) 같은 겁니다. KISS를 검색해보세요..
그리고 혹시 오해가 있을듯 싶어서 "저라면 그냥 그런 식으로 짤것 같습니다." 라는 말을 넣은 겁니다 8)

bblackstar의 이미지

보기에 안좋은 글?을 올린 사람이 되어 버린거 같습니다.
그냥 화기애애한 분위기를 만들어 보고자 글을 올렸는데,
여러사람들의 심기를 건드린거 같군요. 미안합니다.

제가 프로그래밍을 처음 접할때의 생각을 하니 부끄럽군요 ^^

고수가 되기 위해 노력하시는 분들의 건투를 빌며,
진정한 프로가 되고자 함께 노력했으면 합니다.

P.S 위의 내용은 삭제합니다.

lunarainbow의 이미지

위의 문제와 같은것은 처음 C언어에 입문하고자 할때 주로 이용되곤 하는 유형일 것입니다.

음.. 질문자분께서 for문과 printf문을 사용하여 풀어야 하는데요. 그밖에 if문이나 다른 문을 사용하면 안됩니다 라고 하신것으로 보아, 이미 for, if, printf문등 기본적인 문법등은 알고 계신것으로 생각되는군요.

그런데 (다른 분들은 어떠했는지 모르겠지만) 저의 경험으로 비추어 보았을때, 기본적인 문법 공부를 끝낸 후 부터는, 문제가 풀리든 풀리지 않든 죽어라 그거 하나 붙잡고 늘어졌습니다.

책의 다음페이지 정도에 답이 나올테지만(나오지 않는다 할지라도 이렇게 게시판에 질문하면 곧바로 정답을 알 수 있을 테지만), 그러한 것을 보고 한다면 그 문제를 풀어 내기까지의 과정에서 무언가 느끼고, 깨달고 하는, 그러한것이 느껴지시나요?

숙제라고 언급하신 분들의 생각은 이러한 이유이기 때문이라 생각됩니다.

음. 예전에 어디서 보길, RTFM을 외치는 이유중 하나로, (정확히 기억나진 않지만, 이런 내용이었던것 같습니다.)그것을 너에게 시킨것은, 그럴만한 이유가 있기 때문이다. 라는것 같았습니다.

지금 이 질문자께서 숙제가 아니라고 하셨지만, 어쨌든 숙제로 자주 이용되는 문제인 것이고, 그 말은 위의 말처럼 스스로 했을때 그 효과가 나타날 것이란 것입니다.

tacstar wrote:
위에 답글 다신분들 더 많이 배워야 겠군요.

상당히 보기 안좋습니다. ㅡ,.ㅡ^

그리고 질문하신분 힘내세요~! 나중에 고수되시고 저렇게만 행동

하지 않으시면 됩니다. *^^*

"더 많이 배워야 겠군요" 라고 하신것은, 과민반응이 아닐까 싶군요.[/b]

불량청년의 이미지

Quote:
stupid라는 말이 눈에 거슬리셨나 본데, 저건 유명한 격언(?) 같은 겁니다. KISS를 검색해보세요..
그리고 혹시 오해가 있을듯 싶어서 "저라면 그냥 그런 식으로 짤것 같습니다." 라는 말을 넣은 겁니다

예~ KISS에 대한 글은 저도 봤습니다.

예전에도 이런 글에 대한 답변 때문에 몇몇 분들께서 좋지 않은 글이 오고

갔던것도 기억합니다.

저도 처음 질문을 봤을 땐, 숙제에 대한 질문인 줄 알았습니다. 하지만 한편으론

KLDP가 너무 하이레벨적(?)인 질문만 오가야 하는냐에 대한 질문이 떠오르더

군요. 사실 뭐 하이레벨, 로우레벨이란 질문같은게 있는건 아니겠지만요. ㅜㅜ;

몰라서 묻는 것은 '질문' 그 이상도 이하도 아니겠지요.

아뭍은 저또한 괜한 글로 몇몇 분들의 심기를 건드린거 같아 죄송하네요.

새해 복 많이 받으세요~ *^^*

PS :

Quote:
과민반응

그런거 같네요. :lol: 죄송합니다. 하지만, 더 배워야 한다는 것은 스킬에

대해서 얘기한건 아닙니다.

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

logfire의 이미지

제가 잘못생각한것같네요...
첨으로글을올려보는건데...담부터는이러지말아야겠다고생각되네요...
고수님들고맙습니다..좀느껴지는게 있네요....
충고잘새겨듣고 더 열심히하겠습니다.
^^;

최병현의 이미지

이렇게 해보는 것도 한 방법일 것으로 생각합니다.

#include <stdlib.h>

#define NO_OF_STAR      5

int main( void ) 
{   char *szString;
     int      nIndex;

     /* string을 저장할 영역 확보한다. */
     szString = (char*) malloc( NO_OF_STAR + 1 );

     /* 메모리가 확보되었는 지 확인한다. */
     if ( !szString ) {
          /* 확보되지 않았기 때문에 빠져나간다. */
          exit( 1 );
     }
 
     /* string을 공백으로 채운다. */
     memset( szString, 0x20, NO_OF_STAR  );
     
     /**************************
         string의 끝을 만들어 주기 위해 
         제일 후미를 0x00으로 설정한다.
      *************************/
     *(szString + NO_OF_STAR) = 0x00;

     /**************************
        이제부터 출력한다. 
        제일 후미부터 '*'을 하나씩 채워 넣는다.
      *************************/
     for( nIndex = NO_OF_STAR - 1; nIndex >= 0; nIndex -- ) {
         /* 해당 위치에 '*' 대입 */
         *( szString + nIndex ) = '*';
         /* 출력 */
         printf( "%s\n", szString );
     }

    return 0;
}

저도 처음에 시작할 때 비슷한 프로그램부터 시작했습니다.
벌써 20년도 더 되었군요.

열심히 하시기 바랍니다.

To be a rich

lunarainbow의 이미지

logfire wrote:
제가 잘못생각한것같네요...
첨으로글을올려보는건데...담부터는이러지말아야겠다고생각되네요...
고수님들고맙습니다..좀느껴지는게 있네요....
충고잘새겨듣고 더 열심히하겠습니다.
^^;

뭐.. 지금도 별로 잘하는 것은 아니지만, 예전 처음 프로그램 공부할때,

문자열 입력을 위해서!! 단지 문자열 입력을 위해서!! 자그마치 1개월동안 책보며, 프로그램짜서 실행해보며... 다른것 다 팽게치고 오로지 문자열 입력을 위해서만... 삽질한 적이 있습니다. :shock:

제가 다른 사람들에 비해 많이 느린편이긴 합니다만, 저 문제를 해결하고 난 후 적어도 포인터와 표준 입출력, for문에 대해선 확실히 알겠더군요.

만약 그때 누군가에게 쉽게 정답을 들었더라면, 과연 지금처럼 프로그래밍에 흥미를 느끼고, 또 많이는 아니지만 이정도나마 알 수 있게 됐을지 모르겠네요.

하나의 과정일 뿐입니다. :wink:

newmania의 이미지

#define   SIZE      5
#define   ROW_MIN   0
#define   ROW_MAX   (SIZE-1)
#define   COL_MIN   0
#define   COL_MAX   (SIZE-1)

	int row,col; 

	for (row=ROW_MIN; row<=ROW_MAX; row++)
	{
		for (col=COL_MIN; col<=COL_MAX;col++) 
		{
			printf("%c", ((row+col)<ROW_MAX) ? ' ' : '*');
		}
		printf("\n"); 
	}

	return 0;
lsj0713의 이미지

답을 알려주는거야 쉬운 일이고, 본인이 열심히 하는 사람이라면 굳이 반드시 스스로 하게 할 필요는 없다고 생각합니다. 아무리 해도 모르겠다고 한다면 굳이 시간 낭비하게 할 필요는 없지요. 게다가 처음일때는 의례 그런 법입니다. 얼어붙어서 뻔히 보이는 것도 다 놓치곤 하죠.

그러나... 아무래도 이런 종류의 질문에 답변을 할때는 생각 안해보고 질문부터 올리고 보는 사람들 때문에 조심스러운 태도를 취하게 됩니다. 사실 방학중이니까 저정도라도 답변을 올린 거지 학기중이라면 그냥 무시했을 겁니다. 그러나... 그것이 조금 비아냥거리는 듯한 글이 되버린 것 같습니다. 심기 상하신 분이 계시면 죄송합니다.

어쨌거나 간단한 질문임에도 불구하고 가지가지 해답들이 나온다는 것은 참으로 재미있습니다. 그런 의미에서 저도 하나 다시 올려보지요.

#include <stdio.h>

int main(void)
{
    int i;
    char str[] = "     ";
    for (i = 0; i < 5; i++)
    {
        str[4-i] = '*';
        printf("%s\n", str);
    }
    return 0;
}
beta의 이미지

그냥 위트였는데, 지금 생각해보니 넘 생각이 짧았는거 같네요.
죄송~

앞으로는 주의해야 겠습니다. 혹시 logfire님~ 기분 나쁘셨다면 사과드릴께요.

발 담갔다. 이제 익숙해 지는길만이..

lunarainbow의 이미지

많은 방법이 나왔습니다만, 아직 이런것은 나오지 않았기에 하나 슬쩍~ 넣어봅니다. :wink:

이거 의외로 잼있네요. 8)

#include <stdio.h>

main()
{
        int i, j;

        for ( i = 0; i < 5 ; i++ )
        {
                for ( j = 0; j < 5; j++ )
                        printf("*");
                printf("\r");

                for ( j = 4; j > i; j-- )
                        printf(" ");
                printf("\n");
        }
}
yeppiguy의 이미지

ㅎㅎ..

#include <stdio.h>

int main(int argc, char* argv[])
{
    int     i, j;

    for(i = 1; i <= 5; i++)
    {
        for(j = 0; j < (5-i); j++)
            printf(" ");
        for(j = 0; j < i; j++)
            printf("*");
        printf("\n");
    }

    return 0;
}
kslee80의 이미지

먼저 쓰신 분들 말처럼...
워낙에 숙제로 자주 애용되는 녀석이다 보니 불필요한 오해가 생겼네요..
(저도 동아리 후배들한테 냈었던 적이 있죠 -_-;;)

int main()
{
    int i, j;
    int n = 5;

    for(i = 1; i <= n; i++) {
        printf("%*s", n - i, "");

        for(j = 1; j <= i; j++)
            printf("*");
        printf("\n");
    }

    return 0;
}
stoneshim의 이미지

Quote:
먼저 쓰신 분들 말처럼...
워낙에 숙제로 자주 애용되는 녀석이다 보니 불필요한 오해가 생겼네요..
(저도 동아리 후배들한테 냈었던 적이 있죠 -_-;;)

예... 그렇죠.
어디선가 본 글이었는데, 이 문제를 내서 숙제를 받은 다음에 출력결과를 y축으로 뒤집은 결과를 출력하게 하는 코드를 작성하라고 한다더군요. 그리고는 그 다음에는 출력 결과를 x축으로 뒤집은 결과를 출력하는 코드를 작성하게 하구요.

그래서 각각의 코드( 3개의 코드겠죠? ) 를 diff 한 결과, 바뀐 라인 수가 가장 적은 코드를 작성한 사람에게 점수를 후하게 준다는...

이 문제를 접하니 갑자기 위의 얘기가 떠올라서... 그냥 써봅니다.

우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자

IOKLO의 이미지

#include <stdio.h>
int main()
{
	int i;
	char t[7];

	for (i=1; i<=5; ++i)
	{
		sprintf(t, "%%5.%ds\n", i);
		printf (t, "*****");
	}
	return 0;
}
logfire의 이미지

숙제에많이쓰는건가요.ㅡㅡ몰랐어여!~ 오해없길^^
인터넷에서 찾았는데^^
암튼답변감사합니다^^;;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.