아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
단정한강아지120
단정한강아지12021.03.22

제곱문제로 대한 질문이있습니다 .

하나의 정수를 받아서 그 수의 제곱의 결과를 출력하는 프로그램을 만들라 그런 문제인데

제곱을 어떻게 표현해야하는지 난관에 부딫쳤습니다..

처음엔 a곱하기a a의2승이니

int num1;

int result;

printf("하나의 정수를 입력하세요");

scanf("%d ",&num1);

result=num1*num1;

printf("%d*%d=%d",num1,result);

이런식으로 코딩을 짰는데 당연하게도 원하는 답이 안나오더라구요

제곱을 어떻게 표현해야하는지

제가 어떤 개념이 부족해보이는지 말씀좀해주세요

55글자 더 채워주세요.
답변의 개수17개의 답변이 있어요!
  • 잘 짜셨는데,

    printf문 부분의 인자만 조금 보완하시면 되겠네요.

    printf(%d * %d = %d) , num1, num1, result);

    와 같이 하시면 원하시는 제곱값이 정상적으로 출력되실거예요.

    이외에도 pow함수를 이용하는방법도 있으니 한번 참고하시고 적용해보셔도좋겠네요.


  • 안녕하세요.

    c언어에서 제곱문제로 질문하신건가요?

    c에서 전처리기로 #include<math.h> 를 사용하면 수학관련된 함수를 사용하실 수 있습니다.

    전처리기입력후 소스에서 제곱함수인 pow(d,d) 를 사용하시면 됩니다.

    pow(2,3) => 2의 3제곱을 리턴해줍니다.


  • 안녕하세요

    사용하신 코드가 로직은 맞는것 같은데 마지막 코드가 좀 이상하네요

    int num1; int result; printf("하나의 정수를 입력하세요 : "); scanf("%d ",&num1); result=num1*num1; printf("%d*%d=%d",num1,num1,result); // 위 코드에서 출력식에 정수형 출력이 3개인데, printf("%d*%d=%d",num1,result); 이런식으로 두개만 변수를 사용했네요 // 제가 적은 코드로 변경 하면 정상적으로 출력 되실것 같습니다. // 따로 저렇게 변수를 넣어 주지 않으면 쓰레기 값이 출력 됩니다. return 0;

    답변이 도움이 되었으면 하네요.


  • int num1; int result; printf("하나의 정수를 입력하세요"); scanf("%d ",&num1); result=num1 ^ 2; printf("%d*%d=%d",num1,result);

    제곱은 ^ 부호를 사용하시면 됩니다


  • 탈퇴한 사용자
    탈퇴한 사용자21.03.22

    해당 코드를 컴파일을 해보면 gcc 컴파일러에서는 아래와 같은 경고가 나옵니다.

    a.c:14:17: warning: more '%' conversions than data arguments [-Wformat] printf("%d*%d=%d",num1,result);

    바로 printf에서 인자는 세 개를 필요로 하는데 두 개만 넘기고 있어서 그렇습니다.
    아래와 같이 수정이 필요합니다.

    printf("%d*%d=%d",num1, num1, result);

    또한 scanf에서 %d 뒤에 공백 문자가 있습니다.

    scanf("%d ", &num1);

    이렇게 되면 입력이 종료되었다는 EOF 문자를 입력해주어야 scanf 가 입력 값을 읽어오게 됩니다.
    (Unix나 Linux에서는 ctrl+D, Windows에서는 ctrl+Z)

    따라서 아래와 같이 수정이 필요합니다.

    scanf("%d", &num1);


  • 안녕하세요 4년차 fw개발자입니다.

    지금 짜신 코드 보니까 잘짜셨는데

    마지막에 출력문에 실수가 있네요

    printf("%d*%d=%d",num1,num1,result);

    으로 %d가 3개니까 아규먼트 3개 넣어주셔야 에러가 안나겠네요

    제곱이니 그냥 두번 곱해주시면 됩니다.

    감사합니다


  • 안녕하세요. 현직 개발자로 활동중인 검붉은거위203입니다.

    C에서 %d의 경우 정수형 출력타입이며, 마지막 print() 에 %d는 세 개 존재하지만 넘기는 int 값은 2개이기 때문에 원하시는 결과를 얻지 못하는 것으로 보입니다.

    다음과 같이 해결할 수 있을 것 같습니다.

    printf("%d*%d=%d",num1,num1,result);

    제 답변이 도움 되셨으면 좋겠습니다.

    감사합니다.


  • 안녕하세요

    int result; 로 변수선언을 하셨네요.

    int main() {

    int num1;

    int result = 0; // result 를 0 으로 초기화

    (변수를 정의할때 int result 로 정의하지 않고 int result = 0; 으로 초기화 까지 해주는 이유는

    초기화를 해주지 않으면 변수에는 쓰레기 값이 저장이 됩니다. 그래서 result를 0 값으로 초기화 하는 것 입니다. )

    printf("하나의 정수를 입력하세요");

    scanf("%d ",&num1);

    result=num1*num1;

    printf("%d*%d=%d",num1,result);

    return 0;

    }


  • 안녕하세요

    result 값 까지는 잘 구하셨는데, 마지막에 num1,num1,result 라고 사용하셔야 합니다

    그리고 기본제공 함수인 math.pow 를 사용하시면 더 쉽게 구하실 수 있어요

    수학 관련된 사칙연산이나 삼각함수, 제곱 등은 이미 함수가 구현되어 있으니 사용하시면 될 것 같습니다.

    화이팅하세요!


  • 프로그래밍을 하려고 한다면 당연히 프로그래밍 언어를 배워야하기는 합니다.

    컴퓨터 공학과로 진학하기 위해서는 프로그래밍을 할줄 알아야하는 것은 아닙니다.

    많은 컴퓨터 공학과 학생들이 프로그래밍 언어를 1학년때 처음 배우는 경우가 많이 있습니다.

    처음 배운다면 파이썬으로 시작하는 것을 추천합니다.

    다른 언어보다 상대적으로 쉽기 때문에 좋습니다.

    "파이썬 정복", "점프 투 파이썬(c언어도 있음)" 등의 책으로 공부해보는 것도 좋을 것 같습니다.


  • 안녕하세요

    방법을 말씀드리면 2가지 방법이 있겠습니다.

    1) 거듭제곱을 직접 수행

    2) 거듭제곱을 라이브러리 함수를 사용하여 수행

    먼저, 1번의 방법입니다.

    작성하신 코드의 수식에서는 오류가 없습니다만, 문법 사용에서 오류가 있었습니다.

    그 오류를 말씀드리면

    마지막 printf문에서 총 출력하려는 숫자는 3개인데, 실제로 서식문자(%d)에 들어가는 변수는 2개입니다.

    따라서, 출력 문자인 num1을 코드에 하나 더 추가하면 됩니다.

    수정된 코드는 다음과 같습니다.

    printf("%d*%d=%d",num1,result); --> printf("%d*%d=%d",num1,num1,result); (bold체로 표시한 부분입니다)

    그 다음으로, 2번의 방법입니다.

    제곱함수인 pow()를 사용하며, math.h를 include하여 사용 가능합니다.

    완성된 코드는 다음과 같습니다.

    #include <stdio.h>

    #include <math.h>

    int main(){

    int num1;

    int result;

    printf("하나의 정수를 입력하세요");

    scanf("%d ",&num1);

    result=pow(5,2); // pow(거듭제곱수, 거듭제곱횟수)

    printf("%d*%d=%d",num1,num1, result);

    }

    도움이 되셨기를 바랍니다.

    감사합니다.


  • 제곱이면 단순히 두번 곱하는게 맞죠

    입력 1 : 1^2 = 1

    입력 2 : 2^2 = 2

    입력 3 : 3^2 = 9

    입력 10 : 10^2 = 100

    이런 결과가 나오길 원하신다면 만드신 소스에서 맨 마지막 출력 부분만 수정하시면 될 것 같습니다.

    printf("%d * %d = %d", num1, result); => %d가 세개 인데 보여줄 값은 num1, result 두개 뿐이네요 '

    printf("%d * %d = %d", num1, num1, result); 이렇게 하시면 됩니다.

    근데 입력한 정수의 정수 만큼의 제곱이 필요 하신거라면 좀 달라지겠죠

    입력 1 : 1의 1제곱 => 1^1 = 1

    입력 2 : 2의 2제곱 => 2^2 = 4

    입력 3 : 3의 3제곱 => 3^3 = 27

    입력 10 : 10의 10제곱 => 10000000000

    이런 결과를 원하신다면 math.h 를 include 하시고 pow 함수를 사용하시면 됩니다.

    result = pow( num1, num1 );

    다만 int 는 -21억 ~ +21억까지 밖에 표현이 안되니 큰 수의 입력은 데이터 타입의 일부 변경이 필요 합니다.

    또 만약 출제의 의도가 pow 함수 자체를 구현하라는 의미 였다면 아래처럼 loop 를 돌리면 됩니다.

    result = 1; // 모든수의 0제곱은 1이므로 뭘해도 1은 나옵니다.

    for ( int i = 0; i < num1; i++ ) {

    result *= num1;
    }


  • 두 수의 제곱을 잘 구하신거 같은데요?

    2를 입력 받았으면 2*2 가 제곱인 거잖아요?

    아래에서 결과를 출력할때 %d는 3개인데...인자를 2개만 줘서 출력이 제대로 안된거 아닌가요?

    C언어 한지는 오래됐지만..그렇게 보이네요.

    printf("%d*%d=%d",num1, num1, result);


  • 제곱은 ^ 로 표현해줍니다.

    2의 제곱은 2^2, 3의 제곱은 3^2

    이렇게 표현해주면 결과값을 얻을 수 있습니다.

    물론 해당 수를 곱해주면 같은 결과값을 얻을 수 있습니다.

    2^2 = 2*2, 3^2 = 3*3

    질문자께서 result=num1*num1; 이렇게 표현해준 부분은 잘못되지 않았지만,

    printf("%d*%d=%d",num1,result); 이 부분에서 %d 가 세개인데, 인자를 두개만 설정하셨네요.

    printf("%d*%d=%d",num1,num1,result); 이렇게 되어야겠죠?


  • 코딩하신 개념에는 문제가 없어보입니다.

    입력을 받은 값을 두번 곱해서 result를 얻으면 됩니다.

    다만 정답 출력부에 문제가 있는것 같습니다.

    printf("%d*%d=%d",num1,result);

    %d가 3개이기 때문에 뒤에 넣어주어야 할 변수도 세개가 되야 원하시는 값을 출력 하실 수 있을 것이라 생각됩니다.

    printf("%d*%d=%d",num1,num1,result);

    이런식으로 하신다면 num1에 3을 입력했다 가정시

    3*3=9 이렇게 출력될것입니다.


  • 안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.

    지수 표현식 x^y 는 x를 y번 곱하라는 뜻 입니다. 반복문을 통해 y번 곱해줄 수 있지만 아래 코드를 사용하여 빠르게 구할 수 있습니다.

    math.h 가 필요합니다.

    #include <stdio.h> #include <math.h> int main() { int num1; int num2; int result; printf("하나의 정수를 입력하세요 : "); scanf("%d" ,&num1); printf("지수를 입력 하세요 : "); scanf("%d" ,&num2); result=pow(num1, num2); printf("%d ^ %d = %d",num1, num1, result); return 0; }

    답변이 도움이 됐으면 좋겠습니다. 좋은 하루 되세요!


  • 마지막 printf의 인수가 빠졌네요

    int num1;

    int result;

    printf("하나의 정수를 입력하세요");

    scanf("%d ",&num1);

    result=num1*num1;

    printf("%d*%d=%d",num1,num1,result);

    printf의 형식과 인수의 갯수는 같아야 합니다.

    좀 더 문법을 복습 하셔야 겠어요.