문제로 배우는 C언어

문제로 배우는 C언어

(6개의 수강평)

439명의 수강생
11,000원
지식공유자 · 김태원
66회 수업· 총 8시간 48분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 초급
tmdal0303 프로필

최솟값구하기 tmdal0303 16시간 전

안녕하세요! 강의 전에 제가 먼저 짜봤던 코드는 

#include<stdio.h>

int main(){

int a,b,c;

scanf("%d %d %d",&a,&b,&c);

if(a<b&&b<c){

printf("%d",a);

}

else if(b<a&&a<c){

printf("%d",b);

}

else {

printf("%d",c);

}

return 0;

} 이였는데요,

선생님께서 주신 예시문 중 입력예제 1,3은 정상으로 최솟값이 출력이 되었으나 예시문 2는 13이 아닌 17이 출력되었습니다.

저의 코드에서 어떤 문제점이 있는지 모르겠습니다 ..ㅠㅠ 

0
임규범 프로필

일곱 난쟁이 임규범 1일 전

#include<stdio.h>
int arr[10];
int main(){
	
int i, j, k, tmp=0, sum=0;

for(i=0; i<9; i++){
	scanf("%d", &arr[i]);
	tmp=tmp+arr[i];
}


for(i=0; i<9; i++){
	for(j=0; j<9; j++){
		if(i==j) continue;
		sum=tmp-arr[i]-arr[j];
		if(sum==100)
		break;
    }
}
		
for(k=0; k<9; k++){
	
	if(k==i || k==j) continue;
	printf("%d ", arr[k]);
}

return 0;

}

어느 부분이 잘못되었는지 모르겠어서 질문드립니다

1
tmdal0303 프로필

범위 질문드립니다! tmdal0303 6일 전

#include<stdio.h>

int main(){

int height;

scanf("%d",&height);

if(120<=height<=150){

printf("YES");

}

else{

printf("NO");

}

return 0;

제가 미리 짜본 코드였는데 120<=height<=150이 if문 조건식에 들어오지 못하는 이유는 무엇인가요? 제가 무언가를 착각하고 있는걸까요 ㅠㅠ 

코드 결과는 어떤 수를 집어넣어도 YES가 출력되었었습니다..

1
pele0607 프로필

{}의 사용유무 pele0607 7일 전

#include<stdio.h>

int main(){

int n,i=1;

scanf("%d", &n);

while(i<=n){

printf("%d ",i);

i++;

}

return 0;

}

제가 코드를 처음에 작성할때 while문 뒤에 {}를 작성을 안하고  컴파일 해서 돌려봤는데 1이 무한번 반복도더라고요...다시 { }을 넣으니까 제대로 되고요. 이유가 뭔지 알수있을까요??ㅜㅜ

2
pele0607 프로필

부등호 방향 질문 pele0607 7일 전

#include<stdio.h>

int main(){

    int a, b, c, max, tot;

    scanf("%d %d %d", &a, &b,&c);

    tot=a+b+c;

if(a>b) max=a;

    else max=b;

    if(max<c);

    max=c;

if(max<(tot-max))

printf("YES\n");

else 

printf("NO\n");

return 0;

}

제가 코드를 이렇게 썼는데 13 33 17을 입력하면 NO가 나와야 되는데 YES가 출력이 됩니다ㅜㅜ.  선생님이 하신거랑 다른게  문자의 순서만 달리하고 부등호는 그에 맞게 설정을 잘한것같은데 왜 그럴까요??

2
최병호 프로필

제가 푼 방법이랑은 좀 다르게 설명을 해주셨는데.. 이렇게 풀어도 될까요? 최병호 7일 전

#include <stdio.h>
int main()
{
  int a,b;
  double N;
  scanf("%d", &a);
  N = a/12.0;  //      필요한 다스 수=사람수/12   178/12=15...
  N = N + 0.999999;
  N =(int)N;
  printf("%f\n", N);
  b = N;
  printf("%d", b);
  return 0;
}

1
Hyungjune Choi 프로필

c언어 자료구조/알고리즘 강의는 올려주실 생각이 없으신가요 ㅠㅠ? Hyungjune Choi 8일 전

C++ 이랑 파이썬 은 있는데...

똑같은 문제나 양식이여도 괜찮으니 C언어로도 강의만들어 주셨음 좋겠습니다 ㅠㅠ

1
임규범 프로필

24. 최솟값 구하기 임규범 10일 전

#include <stdio.h>
int main(){
	int a, b, c, d, e, f, g, i=0;
	scanf("%d %d %d %d %d %d %d", a, b, c, d, e, f, g);
	while(1){
		i++;
		if(i==a) i=a;
		if(i==b) i=b;
		if(i==c) i=c;
		if(i==d) i=d;
		if(i==e) i=e;
		if(i==f) i=f;
		if(i==g) i=g;
		break;
	}
	printf("%d", i);
	
	return 0;
}
	

이 코드는 왜 안되나요?

2
pipopin z 프로필

38.자리 찾기문제에서 배열의 크기에 질문이 있습니다. pipopin z 23일 전

int arr[] 배열 선언할때 main 함수 바깥 맨위에서 선언을 하면

int arr[2]; 처럼 아무리 작은 크기로 배열을 선언해도

7

11 15 19 23 27 32 36

21

콘솔에서 이런식으로 배열크기를 초과하는 입력을하면 

11 15 19 21 23 27 32 36 출력되서 정상작동되는데 그 이유가 궁금합니다. main 함수안에서 int arr[] 배열을 선언하면 그렇게 나오지가 않습니다.

그리고 arr 배열을 main함수 안에서 int arr[4];라고 선언하고  입력예제 

5

1 3 7 9 15

8

를 입력하면 출력이 정상적으로 되는데 애초에 선언된 크기인 arr[4]를 넘어가는 입력이 들어왔는데 어떻게 '1 3 7 8 9 15 '   6개의 숫자가 정상출력되는데 이유가 궁금합니다. 그리고

int arr[7];라고 선언하고 입력예제

7

11 15 19 23 27 32 36

21

하면 이건 또 출력이 정상적으로 되지않습니다. 이 경우에는 할당된 배열크기가 작아서 출력이 선언된 배열크기를 넘어가 제대로  출력 안된다고 생각이 되는데 왜 저 int arr[4]인 경우에는 할당크기를 넘어가는데도 출력이 정상적으로 되는지 이해하기가 어렵습니다.

1
0503hhj 프로필

a의 범위 설정 0503hhj 25일 전

if (a>=120 && a=<150)  대신 

if (150>=a>=120) 이렇게  한꺼번에하면 왜 안되나요??

1
tmdal0303 프로필

알고리즘 과정 tmdal0303 25일 전

안녕하세요! 

제가 이 문제를 강의를 듣기 전 먼저 코딩을 시도했었는데요, 잘 풀리지 않았습니다.

선생님께서는 

a=a*10;

a=a+0.5;

a=(int)a;

a=a/10;

printf("%f\n",a); 의 과정을 진행해주셨는데,

저는 처음부터 a*10 을 할 생각을 전혀 하지 못했습니다. 어떤 이유에서 a*10을 먼저 해야 하는건지, 후에는 왜 a/10을 해야하는지 다시 한번 설명해주시면 감사하겠습니다! 

1
0503hhj 프로필

나중에 쉽게 보기위해 aa라는 프로젝트 안에 0503hhj 27일 전

 두수의 합과 두수의 곱이라는 파일을 만들엇는데요  f11을 누르니 자꾸 두수의 합 파일이 실행되네요 왜그런거죠?

1
tmdal0303 프로필

거스름돈 tmdal0303 1달 전

int a,b,c,d;

printf("지폐를 투입하세요:");

scanf("%d",&a);

printf("음료수의 가격을 입력하세요:");

scanf("%d",&b);

c=a-b;

printf("거스름돈은 %d원 입니다\n",c);

c=c/500;

printf("%d\n",c);

d=c-(c/500)%100; 

printf("%d",d);

return 0;

2가지의 질문이 있습니다 ! 

1) c를 거스름돈으로 설정했는데 

c=c/500;시 500원 개수 센 변수를 왜 똑같은 c로 지정해주는건가요? 

500원 개수를 d 라고 정의했더니 거스름돈이 정확하게 나오지는 않았지만, 거스름돈에서 500으로 나눠야 500의 개수가 나오는건 맞지만 500원 개수에 대해서 왜 다른 변수를 지정해주지 않는지 궁금합니다 ! 

2) 100원의 개수를 구하는 과정이 잘 되지 않습니다. 100원 개수를 구하는 알고리즘에 대해 다시 한번 설명해주시면 감사하겠습니다. 

1
tmdal0303 프로필

scanf와 printf tmdal0303 1달 전

안녕하세요! 강의를 듣기 전 제가 코드를 짰을 짠 결과 선생님께서 첫번째 방법으로 하신 코드 그대로로 짰습니다! 

#include<stdio.h>

int main(){

double a,b,c;

printf("두 실수를 입력하세요:");

scanf("%lf %lf",&a,&b);

c=a*b;

printf("%0.2lf",c);

return 0;

}

근데 제가 갑자기 궁금한건,

c=a*b한 결과를 printf에서 c 값을 출력하는데 

어떻게 이때는 scanf로 값을 불러오지 않고 바로 printf에서 c를 출력할 수 있는건가요? 

1
tmdal0303 프로필

scanf질문드립니다! tmdal0303 1달 전

안녕하세요! 

제가 your number을 입력할때 휴대폰 번호를 입력했더니 

예)01012345678을 입력했더니 

your number :1012345678만 입력되었습니다.

앞에 0이 나오지 않는 이유는 무엇인가요? 

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스