不会添加C变量

时间:2015-04-13 09:46:17

标签: c variables

我已经开始学习C了,我想制作一个附加程序。 我写了以下代码:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {
    int a,b,c;
    scanf("Give a,b",&a,&b);
    c=a + b;
    printf("A+b=",c);
    printf("\n\n\n");
    return 0;
}

应该从用户那里获取2个数字并显示其总和。 但是,在用户写入2个数字后,我得到的唯一输出是A+b= 有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您未能为整数变量c添加格式说明符。如果没有这个printf,就不知道格式字符串后面会有什么参数,它们的类型是什么,或者它们是如何打印的。变化:

printf("A+b=",c);

为:

printf("A+b=%d",c);

请注意,启用了警告的好编译器(例如gcc -Wall ...)会在编译时为您指出这个简单的错误。

<小时/> 您的scanf用法也是错误的 - 更改:

scanf("Give a,b",&a,&b);

为:

printf("Give a,b");
scanf("%d %d",&a,&b);

答案 1 :(得分:1)

您错过了%d电话中的printf()转换说明符:

printf("a+b=%d\n", c);

如果不这样做,printf()不知道它会得到第二个参数,并且不会对它做任何事情。

当然,c可能只是a + b,没有必要将总和存储在单独的变量中,只是为了打印它。

此外,您需要scanf()中的说明符,它应该是:

scanf("%d %d", &a, &b);

scanf()的第一个参数是不是打印的提示,它描述了预期的输入。

最后,在依赖scanf()2具有有效值之前,您应该检查a的返回值,以确保它是b。 I / O可能会失败,如果发生这种情况,您需要确保您的程序做正确的事情。

答案 2 :(得分:1)

scanf是用于从用户接收输入的函数。你期待它打印出来的东西,不是吗?您需要printf代替:

printf("Give a,b\n"); //\n at the end is good

现在,使用scanf扫描输入:

scanf("%d %d",&a,&b);

您也错过了上一个%d中的printf格式说明符,正如其他答案所提到的那样。

答案 3 :(得分:0)

scanf()是一个输入C函数(用格式扫描)使用格式说明符(%datatype ex:%d或%i = int,这是什么你想要的,或者%c = char)来存储一个给定格式的数据条目,由stdin(键盘缓冲区)提供,包括一个null(\ 0)终止字符(在这种情况下)一个字符串);

C中的&符号(&amp;)用于指定/返回内存地址(存储变量),如< strong>反对变量的值。

     scanf("Give a,b",&a,&b);
     c=a + b;
     printf("A+b=",c);

上面第一行代码的问题 忘记包含格式说明符 (%d或%i都可以使用在这种情况下,我假设您正在添加整数而不是浮点数等。)

因此,解决第一个问题的方法很简单:

     scanf("%d %d",&a,&b);

此外,您似乎 尝试将输入和输出合并为一行 Printf ,与scanf一样,可以使用格式说明符,或它可以只包含一串字符,并打印到stdout(控制台)。

你想要做的是在存储所述输入之前包括一个询问用户输入的提示。你添加\ n&#34;换行符&#34;字符最后确保在其他输出和输入之间提供间距,以及进入char数组[],又名字符串时的许多其他原因。但就目前而言,这应该可以解决问题:

     printf("Give a,b\n");
     scanf("%d %d",&a,&b);

希望这有助于当前的任务和一般/ C编程概念!