我已经开始学习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=
有什么想法吗?
答案 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编程概念!