*对输入的行和字符进行计数。在计算机中,一行是以一个回车符\n作为行结束标记的,这样在程序中可以通过搜索\n对行进行计数。在UNIX操作系统中,一般有ctrl+d作为文件结束标记,其字符码为-1.当输入ctrl+d时表示文件输入结束,停止计数。在C语言中,以EOF(End Of File)作为文件结束标志
**输出格式要求:"chars=%d, lines=%d\n"
为什么以下两个程序运行结果不同(第一个正确,第二个错误)
#include
int main (void)
{
int lines = 0;
int chars = 0;
char ch;
while ((ch=getchar ()) != EOF)
{
chars ++;
if (ch == '\n')
{
lines ++;
}
}
printf ("chars=%d, lines=%d\n", chars, lines);
return 0;
}
#include
int main (void)
{
int lines = 0;
int chars = 0;
while (getchar () != EOF)
{
chars ++;
if (getchar() == '\n')
{
lines ++;
}
}
printf ("chars=%d, lines=%d\n", chars, lines);
return 0;
}
第一个程序正确,因为它使用了一个变量ch来存储每次输入的字符,并且在每次循环中检查ch是否为EOF,如果不是,则计算字符数,并且检查是否为换行符,如果是,则计算行数。
第二个程序错误,因为它每次循环中调用了两次getchar()函数,第一次调用用于检查是否为EOF,第二次调用用于检查是否为换行符,但是第二次调用会把第一次调用的字符覆盖掉,导致程序无法正确计算字符数和行数。
不知道你这个问题是否已经解决, 如果还没有解决的话:给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
示例 2:输入:num = 14
输出:false来源:力扣(LeetCode)
字面意思,直接for循环走起来即可,同时要注意到变量的类型,防止溢出
下面进行实现代码,提交运行: