如果我运行下面的代码,它就不会显示整个答案(last printf("")
就是答案)。我想知道为什么它没有显示整个答案。有谁知道这个问题?
#include <stdio.h>
int main()
{
int M,T,P,K,H;
printf("Teekonna pikkus:\n");
scanf("%u", &P);
printf("Tarbitud k\u00FCtuse kogus:\n");
scanf("%u", &K);
printf("K\u00FCtuse liitri hind:\n");
scanf("%u", &H);
T = K/(P/100);
M = K*H;
printf("Olete s\u00F5itnud %u", P," kilomeetrit ning kulutanud %u", K," liitrit kütust. Teie auto k\u00FCtusekulu oli %u", T," liitrit 100 kilomeetri kohta. S\u00F5idu maksumus oli %u", M," eurot.");
while(1);
}
答案 0 :(得分:7)
printf具有以下语法:
int printf ( const char * format, ... );
第一个参数是格式,所有其他变量都可以替换格式中存在的占位符。
你应该写:
printf("Olete s\u00F5itnud %u kilomeetrit ning kulutanud %u liitrit kütust. Teie auto k\u00FCtusekulu oli %u liitrit 100 kilomeetri kohta. S\u00F5idu maksumus oli %u eurot.", P, K, T, M);
答案 1 :(得分:2)
这不是printf
的工作方式。将所有参数放在格式字符串之后。
printf("Olete s\u00F5itnud %u kilomeetrit ning kulutanud %u liitrit kütust. Teie auto k\u00FCtusekulu oli %u liitrit 100 kilomeetri kohta. S\u00F5idu maksumus oli %u" eurot.", P, K, T, M);
答案 2 :(得分:1)
代码中有两个问题:
printf()
应该用作:printf("P: %d - T: %d\n", P, T);
但也有可能除以零:
T = K/(P/100);
P
是integer
,如果P/100
变得足够小,它将四舍五入为0.然后K/0
(零)将产生问题。< / p>
因此,应在分割前检查这些值。对某些变量使用(或转换为)float
或double
可能更好。
答案 3 :(得分:0)
printf()
输出基于第一个字符串参数(格式化字符串),用字符串后面的附加参数替换其中的特殊%
字符(“格式化说明符”)。
因此它仅显示您要求显示的内容,因为您只有%u
(unsigned int,对应于P
)。其余参数将被忽略,因为在格式化字符串
您应该连接所有格式化字符串:
printf (""Olete s\u00F5itnud %u kilomeetrit ning kulutanud %u ...%u...%u...", P, K, T, M);