PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/04/15 13:22:17
Name PAPER
Subject C언어 관련 도움 부탁드립니다!!
1. scanf함수를 사용하여 점수를 입력 받아 90점 이상인 경우 '수', 80점 이상인 경우 '우', 70점 이상인 경우 '미' 60점 이상인 경우 '양' 60점 미만은 '가'를 출력하는 프로그램을 작성하라.

#include <stdio.h>
void main()
{
float score;
printf("점수를 입력하세요 : ");
scanf("%f",&score);
if(score>=90)
printf("수\n");
else if(score>=80)
printf("우\n");
else if (score>=70)
printf("미\n");
else if(score>=60)
printf("양\n");
else
printf("가\n");
}

2. 구구단을 1단부터 9단까지 세줄로 출력하는 프로그램을 작성하시오. 출력결과는 1단~3단을 먼저 출력하고, 한줄 띄우고 4~6단을 출력하고 한줄 띄우고 7단~9단을 출력하면 된다.

#include <stdio.h>
void main()
{
int i,j;
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
printf( "%d * %d = %d ",i,j,i*j);
}
if(i%3==0)
printf("\n");
}
}

3. scanf함수를 사용하여 정수형(int)변수 a와 b를 입력받은 다음 참조에 의한 자료 전달 방법(포인트 변수를 사용해야 한다.)으로 호출 전 a,b를 먼저 출력하고 다음 줄데 함수 내 a,b를 출력하고 호출 후 a.b를 출력하는 프로그램을 작성하라.

#include <stdio.h>
void change(int *,int *);
void main()
{
int a,b;
printf("첫번째 수 = ");
scanf("%d",&a);
printf("두번째 수 = ");
scanf("%d",&b);
printf("호출 전 출력 : 첫번째 수는 %d, 두번째 수는 %d 입니다.",a,b);
change(&a,&b);
printf("호출 후 출력 : 첫번째 수는 %d, 두번째 수는 %d 입니다.",a,b);
}
void change(int *a,int *b)
{
printf("함수 내 출력 : 첫번째 수는 %d, 두번째 수는 %d 입니다.",*a,*b);
}
얼마전에 어머님 학교 과제 도움을 부탁 드리면서 글을 올렸었습니다.
코드는 도움을 받았는데요, 해당 코드에 대해서 설명을 하라는 문제가 있나봅니다.
어머님께서 만든게 아니다보니 이해가 잘 안되시나봐요. C언어 하시는 능력자분들께 도움 구합니다.
1~3번 문제 코드에 대해서 설명 좀 부탁드릴께요. 제 생각엔 왜 이런 코드를 짰고, 어떤 논리로 된건지.. 뭐 이런 식으로 얘길 해야 할 것 같습니다만..
사실 저도 전혀 이쪽으로 아는게 없네요.. 흑흑. 부탁 드리겠습니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
무한의 질럿
10/04/15 13:46
수정 아이콘
#include <stdio.h>
void main()

float score; // score라는 float형 변수를 선언합니다.
printf("점수를 입력하세요 : "); // 큰따옴표 안의 내용을 출력합니다.
scanf("%f",&score); // scanf명령문은 점수를 받아서 score 변수에 입력합니다.
if(score>=90) // 받은 score가 90점 이상이면
printf("수\n"); // 수를 출력하고 한줄을 띄웁니다.
else if(score>=80) // score가 만약 90이상이 아니라면(즉 윗줄에서 score가 90이상이 아니라고 밝혀졌다면) else문이 발동해서 두번째 if문이 score의 크기를 판단합니다. (만약 윗줄에서 score가 90이상임이 밝혀졌다면 if(score>=90)은 참말이기 때문에 else문이 발동하지 않고 프로그램은 밑에 달려있는 무수한 else문을 전부 무시하고 끝까지 가서 종료됩니다)
printf("우\n"); //우를 출력합니다.
else if (score>=70) // 이하 반복
printf("미\n");
else if(score>=60)
printf("양\n");
else
printf("가\n");
무한의 질럿
10/04/15 14:00
수정 아이콘
#include <stdio.h>
void main()

int i,j; // i,j라는 정수를 선언합니다.
for(i=1;i<10;i++) // i를 1부터 9까지 돌립니다. 1,2,3,4,5,6,7,8,9....이렇게 숫자를 일일이 나열하는게 귀찮아서 만든게 for문인데요. 안쪽에 있는 (i=1;i<10;i++)를 해석하자면 (i=1 [i는 1부터 시작합니다] ;[;는 칸막이] i<10 [i가 10이 되면 끝내요] ;[칸막이] i++ [i는 1개씩 올리도록 해요] ) 라는 뜻입니다.
{
for(j=1;j<10;j++) // j를 1부터 9까지 돌립니다.
{
printf( "%d * %d = %d ",i,j,i*j); // 1~9 곱하기 1~9 = 결과값. 끝에 i, j, i*j는 각각 순서대로 큰따옴표 안의 %d에 대입됩니다. 즉 "%d * %d = %d "는 " i * j = i * j"와 같다는 것입니다. 이렇게 해서 프로그램을 돌리면 첫번째 for문인 i가 1바퀴를 먼저 돌고 그 안에서 두번째 for문이 돌아가면서 j가 1부터 9까지 돌게 됩니다. (시계를 생각하시면 편합니다. 시침이 1칸 움직이는 동안 분침이 한바퀴를 도는것과 같습니다) 그리하여 첫번째 for문이 한바퀴 도는 동안 1 * 1~9의 값이 출력되게 되고 두번째 for 문이 9까지 다 돌고 나면 for문이 다시 한바퀴를 시작해서 i는 2가 되고 역시 두번째 for문도 돌아가면서 j는 1~9의 값을 갖고 2 * 1~9가 되는겁니다. ......이하 i=9까지 무한반복

if(i%3==0) // 문제의 조건인 3단마다 1칸씩 띄우기를 하기 위해서 i가 3으로 나눠서 나머지가 0이 되면(3,6,9처럼 3으로 나누면 0이 되는 숫자들이 단이 되면)
printf("\n"); // \n은 한칸을 띄우는 명령입니다.
}
}
10/04/15 15:04
수정 아이콘
무한의 질럿님 감사합니다.^^ 3번까지 해주실 시간이 안되셨던 것인지...
10/04/15 15:09
수정 아이콘
3번은 코드가 짤렸네요. 아랫부분이 중요할텐데요..
10/04/15 15:59
수정 아이콘
#include <stdio.h>
void change(int *,int *); // 함수의 프로토 타입 - 리턴타입, 함수 이름, 패러미터의 종류만 적어주는 형식
void main()

int a,b;
printf("첫번째 수 = ");
scanf("%d",&a);
printf("두번째 수 = ");
scanf("%d",&b);
printf("호출 전 출력 : 첫번째 수는 %d, 두번째 수는 %d 입니다.",a,b);
change(&a,&b); // 일반적으로 함수 호출시 패러미터는 변수명만 적어주지만 주소값인 포인터를 넘겨주기 위해 패러미터 부분에 &기호를 추가
printf("호출 후 출력 : 첫번째 수는 %d, 두번째 수는 %d 입니다.",a,b);

void change(int *a,int *b) // 함수 본체 - 함수 본문내에서 사용할 변수를 패러미터로 직접 받기 위해 변수 타입과 이름까지 받는다.

// *a는 포인터 변수 이므로 a라고 적으면 포인터 변수가 가지는 값 즉 해당 변수의 주소를 출력해준다. 해당 주소에 저장된 값을 얻어 오기 위해 변수명은 *a로 적어준다.
printf("함수 내 출력 : 첫번째 수는 %d, 두번째 수는 %d 입니다.",*a,*b);
10/04/15 16:00
수정 아이콘
*에 대한 설명이 들어가면 좀 어려워 질텐데...걱정이네요-_-;;;

기초적인 설명은 모두 제외했습니다. 똑같은 내용이 위에 적혀 있어서요.
10/04/15 17:59
수정 아이콘
제가 써드렸던 코드네요.. 엠티 출발이 얼마 안남아서 너무 빨리 쓰느라 주석을 못달아 드린점 죄송합니다 ..
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
79251 미래의 유망직업에 대하여 [2] happyend2467 10/04/15 2467
79250 수능 인강에 대한 질문입니다. [12] 풍년가마2155 10/04/15 2155
79249 네이트온 실행시 강제적으로 네이트 웹페이지가 열리는 일에 대해. [6] 둥이3037 10/04/15 3037
79248 C언어 관련 도움 부탁드립니다!! [9] PAPER2169 10/04/15 2169
79247 통상정책에 변화가 있는 경우는 어떤 경우가 있을까요?? [2] 연휘가람2107 10/04/15 2107
79246 벨트 줄 교체도 가능한가요?? [1] 라캉~2834 10/04/15 2834
79245 취업설명회 부스 방문했을때 받는 선물....혹은 기념품.... [12] pioren2400 10/04/15 2400
79243 프로토 승무패 결과좀 예상해주세요~(EPL만 할려고 합니다.) [10] 래토닝2206 10/04/15 2206
79242 슬레이어즈 소설책에 관해 질문하겠습니다. [5] 무관의황제2378 10/04/15 2378
79241 각종 통계프로그램 용량이 궁금합니다.. 그리고 교재 추천? [4] 그윽염소4408 10/04/15 4408
79240 갑자기 인터넷이 안됩니다... [1] 레몬막걸리1823 10/04/15 1823
79239 깔려있는 윈도우xp 씨디로 구울수 있나요? [8] HappyV2361 10/04/15 2361
79238 조립 컴퓨터 믿을 수 있는 지요? [2] Ex-sports2305 10/04/15 2305
79237 한글이 안써집니다. ㅜㅠ [2] 후니저그2256 10/04/15 2256
79236 와우용 컴퓨터 질문입니다.(견적 이미지 추가) [11] 초롬2248 10/04/15 2248
79234 트리플 약세 현상이 일어날때 뭐가 올라가고 주식이 떨어지는거죠? 풍년가마2121 10/04/15 2121
79233 아이돌 그룹들의 계약법에 관한 질문입니다.(법관련) Roro2069 10/04/15 2069
79231 해외에서도 온게임넷 라이브를 볼 수 있나요? [6] 열씨미3917 10/04/15 3917
79230 예비군에 대해 질문있습니다. [12] ROBOT2483 10/04/15 2483
79229 C#에서 화면 전체를 브러쉬하는 방법을 알려주세요 [2] EZrock2383 10/04/15 2383
79228 주니치 우즈선수 질문입니다 [2] 붉은미래2127 10/04/15 2127
79227 통신시장이나 방송시장에대해 공부를 해야하는데요. 펠레2186 10/04/15 2186
79224 [경영학] 마케팅 [10] 인방토스1871 10/04/15 1871
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로