올라온 질문이 없습니다!
수업 내용에 궁금한 점이있다면
질문을 작성해주세요!
scanf()함수 질문
안녕하세요 교수님.
int main()
{
int base, exponent;
while (scanf("%d %d", &base, &exponent) == 2)
{
int result = 1;
for (int i = 0; i < exponent; i++)
result *= base;
printf("OUTPUT:%d\n", result);
}
}
<출력>
3 5 7
OUTPUT:243
5 6 7
OUTPUT:16807
OUTPUT:279936
6.18 루프 안에서 함수의 반환값 사용하기
6분 대 질문입니다.
scanf()함수가 반환값이 입력 받은 변수의 개수라는 걸로 배웠습니다.
그러나 위 코드에서 scanf()로 3개(예를 들어 콘솔에서 3 5 7 이렇게 3개를 침)를 입력받으면 마지막 한개가 밀려나가는 형식으로 스스로 생각했습니다.
궁금한 것은 애당초 3개를 입력받으면 while문 조건이 맞지 않아 실행되지 않아야 정상이라고 생각하는데 이와 같이 실행되는 이유를 알고 싶습니다. 또한 while문을 빠져나갈려면 입력이 정수가 아닌 값을 넣는 방법 밖에 없는지 궁금합니다.
soldaxx
1
1
scanf()함수 반환값
scanf()함수의 반환값은 입력받은 개수를 출력한다(단 정상적인 형식에 맞춘 값을 받을때만)
라는 것을 이해하고
int main ()
{
for(int a=0; a=scanf("%d",&a)!=0;){
printf("계속출력");
printf("\n');
}
이렇게 하면 scanf()함수가 반복적으로 시행되면서, 문자를 입력하기 전까지 계속 printf함수가 반복출력되는 것을 확인할 수있다는 것 까지 이해했습니다.
근데, 거꾸로 생각해보면, scanf함수에서 문자를 입력하면 반환값이 0이되니까,
문자를 입력 받으면 오류 문구를 띄우고 다시 치세요 라는 프로그램을 작성해 보려고 만들었는데, scanf()의 반환값은 0이 나와서 맞는데 왜 scanf가 다시 뜨지않고 무한루프로 뜨는지 이해가 되질 않습니다.
int scan_function(void);
int main()
{
int my_num;
my_num = scan_function();
printf("my number is %d", my_num);
return 0;
}
int scan_function(void)
{
int return_num = 0;
printf("input the integer :");
/*while(temp=(scanf("%d",&return_num)!=*/
for (int temp=0;(temp = scanf("%d", &return_num))!=1; )
{
printf("try again, you must input only integer ");
if (temp == 1)
{
break;
}
(temp = scanf("%d", &return_num)) != 1;
}
return return_num;
정현준
0
3
함수의 매개변수 질문
int compute_pow(base, exp)
{
int result = 1;
for (int i = 0; i < exp; i++)
result *= base;
return result;
}
이 부분에서 매개변수 base, exp에 자료형 int를
모르고 안붙였는데도 결과가 똑같았습니다
이유가 무엇인가요?
장준모
0
1
returen result 질문입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int compute_pow(int base, int exp); // 아 ! 이런 함수가 있다. 라고 설명해주는 것이다.
int main() {
//3 4
//3*3*3*3 = 81
int base, exp, result;
while (scanf("%d %d", &base, &exp) == 2)
{
/*result = 1;
for (i = 0; i < exp; ++i)
result *= base;*/
result = compute_pow(base, exp);
printf("Result = %d\n", result);
}
return 0;
}
int compute_pow(int base, int exp)
{
int i, result;
result = 1;
for (i = 0; i < exp; ++i)
result *= base;
return result;
}
copute_pow 함수 안에 return result; 를 왜 하는지 모르겠습니다.
길쭈기
0
1