前言
本片blog主要针对牛客网初学者编程训练中的几道题,来说一下EOF的使用,比较浅显易懂啊!
提示:以下是本篇文章正文内容,主要分两部分展示,第一部分简单说一下EOF是什么,以及用EOF干什么;第二部分则摘取练习中几道典型例题给讲一讲,好!我们开始。
一、EOF的含义
??EOF的全称为End Of File,直译过来便是文件的结尾,查阅手册得出:EOF是指当遇到文件结尾(或在某些情况出现错误)时,由I/O例程返回。这句话理解起来还是有那么点晕,直白些说:输入完成后可以通过返回值(-1)结束输入。 ??使用EOF可以令C语言的输入更加多样化,通常会配合输入函数scanf()与getchar()使用,使用scanf()与EOF可以进行多组同类型输入,而使用getchar()与EOF可以从键盘获得所需的多组输入,下面就具体的例题和代码进行详细解说。
二、EOF的应用
1.数字输入
??在这里使用函数scanf()与EOF完成要求的多组输入,如下两道题所示,当输入到末尾时,scanf()会返回EOF,而EOF此时的值便是-1,因而while(-1)结束循环,完成多组输入。
#include <stdio.h>
int main()
{
int i = 0;
while(scanf("%d",&i) != EOF)
{
printf("%d\n",1<<i);
}
return 0;
}
#include <stdio.h>
int IsAngle(int a,int b,int c)
{
if(a+b > c && a+c > b && b+c > a )
return 1;
else
return 0;
}
int main(){
int a,b,c;
while((scanf("%d%d%d",&a,&b,&c)) != EOF)
{
int k = IsAngle(a,b,c);
if(k == 1)
{
if(a == b ||a == c ||c == b )
{
if(b == c && a == b)
printf("Equilateral triangle!\n");
else
printf("Isosceles triangle!\n");
}
else
printf("Ordinary triangle!\n");
}
else
printf("Not a triangle!\n");
}
return 0;
}
2.字符输入
??在这里使用函数getchar()与EOF完成字符的输入,这里主要列举了三个例子,分别是:多行字符输入;长字符序列输入;多行字符串输入。这其中需要注意在进行多行输入时需要对换行符’\n’,使用getchar()进行吸收。
#include <stdio.h>
int main(){
char ch;
while((ch = getchar()) != EOF)
{
getchar();
if((ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z'))
{printf("YES\n");}
else
printf("NO\n");
}
return 0;
}
#include <stdio.h>
int main(){
char a;
int count1 = 0;
int count2 = 0;
while((a=getchar()) != '0' && (a!=EOF))
{
if(a == 'A')
count1++;
else
count2++;
}
if(count1 > count2)
{
printf("A");
}
else if(count1 < count2)
printf("B");
else
printf("E");
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char admin[6] = "admin";
char password[6] = "admin";
char a[100],b[100];
while(scanf("%s %s",a,b) != EOF)
{
int i;
int flag = 0;
for(i=0;(admin[i] !='\0')||(password[i]!='\0');i++)
{
if((a[i] != admin[i])||(b[i] != password[i]))
{
flag = 1;
break;
}
}
if(flag == 1)
printf("Login Fail!\n");
else
printf("Login Success!\n");
}
return 0;
}
三、总结
??最后,简单总结一下EOF的添加使得字符的输入更加灵活,相比于单独使用scanf与getchar,EOF可以扩展这两个函数的实用功能,灵活学习和使用EOF可以减少代码练习时,开始遇到的难题,熟能生巧,多多练习,加深记忆。 ??本blog中所有的例题全部来自于牛客网,在此附上网页链接: 牛客网-编程语言初学训练营
|