前言:之前在完成下面这道题的时候,上网搜了搜,网上给出的版本大部分使用数组;作者一直想用一种不用数组可以解决的办法,举了好几个一行一行的例子都无法得解,偶然间想到计算机是通过‘\n’来判断行的,眼前一行行的数据全部整合成一行,而让这个程序结束的排序就是‘\n’‘@’‘\n’。
题目描述
编写一个程序,要求统计输入文本的行数。
输入要求
每行输入任意长度的字符串(每一行的字符串的长度小于等于1000),以输入仅由符号@构成的行作为结束, @所在的行不计入行数。
输出要求
输出文本的行数。
输入样例
Hello world!
I come from China!
I’m a boy!
@
输出样例
3
代码:
#include<stdio.h>
int main()
{
char a;
int red,green;
int sum=0;
while(1)
{
scanf("%c",&a);
if(a=='\n')
{
red++;
sum++;
}
else if(a=='@')
green++;
else
{
red=0;
green=0;
}
if(red==2&&green==1)
break;
}
printf("%d\n",sum-1);
return 0;
}
Tip:
笔者这样的做法仅仅适用于实际行数不少于2行,判断行数不少于1行。