2013-04-07 5 views
0
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
func (int x, int apple); 
int main() 

{int x,apple; 

scanf("%d",x); 
func (x,apple); 

if (apple==0) 
    printf("Yes"); 
    else if (apple==1) 
     printf("no!"); 
} 

func (int x,int apple) 

{ 

if ((x%7)==0||(x%11)==0||(x%13)==0) 
    apple=0; 
else 
    apple=1; 

} 

전체적인 개념은 입력 된 값 x가 7,11 또는 13의 배수인지 테스트하여 결과를 제공한다는 것입니다.모듈 함수가 대답을 반환하지 않음

이 함수는 정상적으로 작동하지만 (컴파일러가 오류를 감지하지 않고 정상적으로 시작한다는 점에서) 컴파일러의 창에서 얻은 결과는 프로세스가 1을 반환하고 아무것도. 그리고 그 전에, 그것은 나에게 창문 오류를주고, 내가 일하고있는 프로젝트가 추락했다.

나는 꽤 많이 포인터를 사용해야한다. 그래서 내가 뭘 잘못하고 있니?

감사합니다.

+1

내가 어떤 표시되지 않습니다 'scanf'를 제공하지 않은 것을 제외하고는 여기에 포인터가 있습니다. – chris

답변

1
  • 는 그것이 int* 있어야 때 int 지정되어 scanf()에 제공되는 포맷 지시자 "%d" 인수 타입간에 불일치가있다 :이 정의되지 않은 문제이다. scanf()x주소에 합격 x을 보장 성공 과제의 수를 반환 scanf()의 반환 값을 확인하여 값을 할당됩니다 void

    if (scanf("%d",&x) == 1) 
    { 
    } 
    
  • 주 반환 형식을 func() 위해.

  • 주소 func()apple 전달 (그리고 int* apple에 인수를 변경) 그래서 func()apple에 대한 모든 변화는 호출자 볼 수 있습니다 :

    void func (int x, int* apple) 
    { 
        /* Dereference 'apple' for assignment. */ 
        *apple = 0; 
    } 
    
관련 문제