下面的程序为什么不对? 只有将puts(n);改成printf("%d",n);时才对。 为什么?

system("color 2f");
int i,n;
char s1[50];
gets(s1);
i=0;
n=0;
while(s1[i+1]!='\0')
{

if(s1[i]+1==s1[i+1])
    n++;
i++;

}
puts(n);
system("pause");

puts(s) 等效于printf("%s\n",s);
就你的代码来说,如果你想用puts输出n的值,先得用itoa转换成字符串才行。

char nn[20];
itoa(n, nn, 10);
puts(nn);

itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在stdlib.h头文件中包含这个函数。

http://baike.baidu.com/link?url=pGLPMC3siGB4OGT8OZWD5RdjdEkfJsGM5hUtOlH5ojQ4YfzEYFEyAx51Ub2sckTU4VyaRNA7wS2u5dTm8by4TK

puts的参数要求是字符型或字符串,n 为int 型,

简单地说,printf一般用来输出整型

定义与输出之间存在矛盾,可以试试类型转换,或者直接定义成字符串型

你现在在调用库函数,或者说别人写的程序,有必要看一下函数原型,看一下别人实现这个函数的时候,对输入输出做了哪些规定~