模块函数不返回答案

问题描述:

#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; 

} 

整个事情的想法是,该函数测试输入的值是否是7,11或13的倍数,并给出结果。模块函数不返回答案

该函数工作得很好(就编译器没有检测到错误而言启动就好)但是我在编译器窗口得到的结果(输入任何值后)是进程返回1,没有其他的。而在此之前,它给了我一个Windows错误,而且我工作的项目坠毁。

我几乎*使用指针,所以我做错了什么?

感谢帮助!

+1

我没有看到任何在这里指针,除了你被忽视的'scanf'。 – chris 2013-04-07 20:43:53

  • 有被提供给scanf()格式说明"%d"和参数类型之间的不匹配,一个int被指定时,它必须是一个int*:这是未定义的行为。合格x地址scanf(),并确保x通过检查的scanf()其成功返回的任务数量返回值赋值:的void

    if (scanf("%d",&x) == 1) 
    { 
    } 
    
  • 国家返回类型func()

  • 传递地址applefunc()(和更改参数int* apple)左右的时间内func()apple所做的任何更改是给调用者可见:

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