0 c
double drake_equation(double RofSF, double FSwP, int NofPSL, double PDL, double PwIL, double CwDC, int LofTRS);\n\nint main(int argc, char **argv)\n{\n double RofSF[] = {1.0, 1.0, 1.5, 3.0};\n double FSwP[] = {0.2, 0.5, 1.0, 1.0};\n int NofPSL[] = {1, 5, 3, 5};\n double PDL[] = {1.0, 1.0, 1.0, 1.0};\n double PwIL[] = {1.0, 1.0, 0.0001, 1.0};\n double CwDC[] = {0.1, 0.2, 0.001, 0.1};\n int LofTRS[] = {1000, 1000000000, 304, 10000000};\n double N;\n int i;\n for (i=1; i< 5; i++)\n {\n N = drake_equation(RofSF[i], FSwP[i], NofPSL[i], PDL[i], PwIL[i], CwDC[i], LofTRS[i]);\n printf("N=%1f", "R*=%1f", "fp=%1f", "ne=%d", "fl=%1f", "fi=%1f", "fc=%1f", "L=%d", N, RofSF[i], FSwP[i], NofPSL[i], PDL[i], PwIL[i], CwDC[i], LofTRS[i]); \n }\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n'我已经查看了有关此错误的其他帖子,但我真的不明白我必须对我的代码做什么,我收到错误:
\n格式的参数太多 [-Wformat-extra-args]\n&\n\xe2\x80\x98%f\xe2\x80\x99 需要 \xe2\x80\x98double\xe2\x80\x99 类型的参数,但参数2 第 18 行的类型为 \xe2\x80\x98char *\xe2\x80\x99\nboth。
\n关于我需要改变的任何帮助都会很有帮助,谢谢。
\n在您的printf()调用中,您有一个格式字符串"N=%1f",后跟 15 个附加参数。由于格式字符串中只有一个格式化运算符,因此应该只有一个附加参数。这就是“太多的格式争论”试图告诉你的。
第一个参数应该是 a double(或 a ,由于标准促销,float它将升级为),因为这是格式所期望的,但你的第一个参数是一个字符串。这就是“'%f'期望tobe 'double'的参数”试图告诉你的。double%1f
问题是您将格式字符串拆分为 8 个单独的参数。它应该是单个字符串。
printf("N=%1f, R*=%1f, fp=%1f, ne=%d, fl=%1f, fi=%1f, fc=%1f, L=%d", N, RofSF[i], FSwP[i], NofPSL[i], PDL[i], PwIL[i], CwDC[i], LofTRS[i]);
Run Code Online (Sandbox Code Playgroud)