关于C语言中“%”的问题

# include "stdio.h"
# include "math.h"

void main()
{
float r, p;
int n;
printf("按顺序输入r, n(中间以空格隔开):\n");
scanf("%f %d", &r, &n);
p = pow((1 + r), n);
printf("%f\n", p);

}
/* 如果是 "scanf("%f %d", &r, &n);"结果是:
-------------------------------------
按顺序输入r, n(中间以空格隔开):
0.09 10
2.367364
Press any key to continue
-------------------------------------
-----------------------------------
按顺序输入r, n(中间以空格隔开):
0.09 10
2.367364
Press any key to continue
----------------------------------
如果是 “scanf("%f%% %d", &r, &n);”
---------------------------------
按顺序输入r, n(中间以空格隔开):结果是
9% 10
10000000000.000000
Press any key to continue
---------------------------------
*/

%%表示输入数据时,要有个%
scanf("%f%% %d", &r, &n);

9% 10 这里在输入时,%和空格都不可少追问

为什么这两种方式输入“9% 10”和输入“0.09 10”得到的结果不一样啊???

追答

哦,你是想输入百分之九啊?
这不行,你这个输入方法只能让计算机读到数值9而%只是它的一个输入分隔符!
计算机C语言输入数据时,好象不支持百分数的方式!
翻了翻资料,C确实不支持百分数这种输入格式的。计算机不是纯数学,它是人工制造、规定出来的法则,计算机只是按相应的法则去做事。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-25
按照格式输入,你那里是
%f%% %f
那么输入的时候,就应该按照这样的格式,一个%f是一个浮点型数据
替换下来应该是输入
数据%% 数据

也就是说,程序运行结果不一样是输入错误追问

那这几种不同的方式应该怎样输入呢?

第2个回答  2013-08-25
恩!你说的都很对啊!没有什么好解释的啊!

这个是数据输入格式的要求!既然你自己编写了相关要求你当然要执行啊!追问

不好意思啊,没有提出问题就提交了;
我的问题是 “为什么这几种方法得到的结果不一样?”

追答

因为你的输入格式还是不对!

如果是 “scanf("%f%% %d", &r, &n);”//注意::::::::::这里是俩个%%
---------------------------------
按顺序输入r, n(中间以空格隔开):结果是
9% 10
10000000000.000000
Press any key to continue
---------------------------------
*/

你的输入应该是9%% 10才对

追问

我输进去得到的结果是“0.000000”,scanf函数“%%”貌似就是表示可以读入“%”

第3个回答  2013-08-25
明白了没有?
相似回答