C中的Printf混淆

时间:2014-01-29 15:45:56

标签: c printf

我是C的初学者,我在格式化一个简单的printf函数时遇到了一些麻烦,该函数需要两个整数,a& b并打印出a^2 + b^2 = c,我将c指定为a*a + b*b ..

话虽如此,我不确定C的printf语句的参数是如何工作的,这就是我写的:

printf("%i,a ^2 + (%i,b) ^2 = %i,c", a, b, c);

这就是它的印刷

3,a ^2 + (4,b) ^2 = 25,c10,a ^2 + (10,b) ^2 = 200,c

哪个不太远,我只是不知道如何摆脱丑陋的变数&括号我继续像(4,b)

这应该是它的样子。我知道我在某处也错过了一个“\ n”。

3^2 + 4^2 = 25
10^2 + 10^2 = 200

3 个答案:

答案 0 :(得分:8)

printf("%i^2 + %i^2 = %i\n", a, b, c);

您不需要在字符串中放置abc,因为该字符串用作模板,其中%i将替换为给定的参数。您只需要在字符串后面以正确的顺序添加它们。

不以%开头的所有内容都会按原样打印,就像在字母和括号中一样。

答案 1 :(得分:4)

当您将a放在第一个参数的引号中时,您会得到一个文字a,而不是a的值。

你想做这样的事情:

printf("%i^2 + %i^2 = %i", a, b, c);

您拥有的,a符号不起作用。您使用%i作为整数的占位符,然后将整数作为单独的参数传递。因此,在我上面编写的版本中,您有三个占位符,然后传入三个变量作为附加参数。

答案 2 :(得分:3)

此外,您也可以使用printf("%d^2 + %d^2 = %d", a, b, c)作为整数。如果您需要解析双打,可以使用printf("%f^2 + %f^2 = %f", a, b, c)。我建议您阅读“C编程语言II版”一书,这是一本非常好的书。第七章是关于输入和输出。