2013-08-01 3 views
3

나는 임의의 숫자를 선택할 수있는 프로그램을 만들었고 그 숫자의 힘으로 그 숫자를 묶었 다. 코드는 특정 부분에 도달 할 때까지 잘 작동합니다. 그런 다음 코드의 다음 부분으로 이동하도록 문자를 입력해야합니다. 여기의 의미는 다음과 같습니다 최종 = 전원을 int로이 C 프로그램에서 내 코드가 갑자기 여기서 멈추는 이유는 무엇입니까?

#include <stdio.h> 

int power (int x, int y); 

int 
power (int x, int y) 
{ 
    int i, b; 

    i = 1; 
    scanf ("%d", &x); 
    scanf ("%d", &y); 
    b = x; 

    for (i = 1; i < y; i++) { 
     x *= b; 
    } 
    return x; 
} 

int 
main() 
{ 
    int base, i; 

    printf ("Type the base number: "); 
    scanf ("%d", &base); 

    printf ("Type the power: "); 
    scanf ("%d", &i); 

    int final = power (base, i); 

    printf (" The power is %d ", final); 

    return 0; 
} 

지금까지 (기본, 난), 모든 것이 원활하게 실행, 실제로 인쇄되지 않습니다 답을 출력 코드의 그러나 다음 부분. 인쇄하는 유일한 방법은 키보드의 문자를 누른 다음 Enter 키를 눌러 인쇄 할 때 Enter 키를 눌러야하는 경우입니다. 이 결함을 수정하기위한 제안, 나는 꽤 c에 익숙하다.

+2

그것은 들여 쓰기 코드를 좋은 -하지만 그 정도! 그것은 대략 16 또는 20 공간처럼 보이고, 당신이 그것을 많이 빼면 조금 엉뚱한 것입니다. 조심하고 배려하십시오. –

답변

8

power에서 scanf("%d",&x);scanf("%d",&y);를 제거; 당신은 이미 main에 인수로 xy to power을 넘겼습니다.

+0

그 바보 같은 오류를 알아 주셔서 고마워요. –

3

power 기능에 scanf이 있습니다. 그것은 사용자 입력을 기다리고 있습니다.

scanf("%d",&x); 
scanf("%d",&y); 

는 본질적으로 사용자가 입력 한 번호로 xy을 채울 것을 의미한다.

scanf documentation

-1

function power의 코드에서 "scanf"를 두 번 호출하고이 호출과 함수에 전달 된 인수를 덮어 씁니다. "scanf"호출을 제거하십시오. 당신이 그런 식으로 코드를 수정하면

, 모든 것이 명확합니다 :

int power(int x, int y) 
{ 
     int i,b; 
     i=1; 

     printf("before scanf no 1\n"); 
     scanf("%d",&x); 
     printf("before scanf no 2\n"); 
     scanf("%d",&y); 
     b=x; 

     for(i=1;i<y;i++) 
     { 
       x*=b; 

     } 
     return x; 
} 
관련 문제