2015-03-13 80 views
1

我想在C中创建一个简单的程序,该程序添加了两个数字变量。 我试图验证输入,但是现在该程序不显示一个答案,只需0.000000000添加两个整数变量并显示输出C

#include<stdio.h> 
int input, temp, status, numberOne, numberTwo, ans; 

int main(void){ 

first(); 
second(); 
add(); 
} 


int first(void){ 
    printf("Please enter your number: "); 
    status = scanf("%d", &input); 
    while(status!=1){ 
     while((temp=getchar()) != EOF && temp != '\n'); 
     printf("Invalid input... please enter a number: "); 
     status = scanf("%d", &input); 

    } 
    numberOne = input; 
} 

int second(void){ 
    printf("Please enter your second number: "); 
    status = scanf("%d", &input); 
    while(status!=1){ 
     while((temp=getchar()) != EOF && temp != '\n'); 
     printf("Invalid input... please enter a number: "); 
     status = scanf("%d", &input); 
     } 
    numberTwo = input; 
} 

int add(void){ 
    ans=numberOne+numberTwo; 
    printf("The answer is %f", ans); 
} 

回答

2

结果应具有%d格式说明的代替%f

printf("The answer is %d", ans); 

注: - 该%d格式指示符为整数和%f通常使用用于浮。

你的情况,你使用下面的代码获取两个输入整数:

status = scanf("%d", &input); 

所以%d这里sigifies,这两个数字都是整数。现在添加它们会以整数形式给出结果。因此,您应该只使用%d来获得结果。

+1

谢谢,不敢相信我没有看到! – 2015-03-13 10:19:58

2

作为每章7.21.6.1,C11标准,段落9

如果任何参数是不是相应转换规范的正确类型,行为是未定义的。

在您的代码中,ans类型为int。您必须使用%d格式说明符,而不是%f

printf("The answer is %f", ans); 

应该

printf("The answer is %d", ans); 
1
printf("The answer is %f", ans); 

应该

printf("The answer is %d", ans); 

%d是正确的格式说明打印整数,使用错误的格式说明导致未定义behvaior那是什么你正在看到