关于c/c++语言的EOF(C++实现闰年判断)

EOF 是 End Of File 的缩写,在 C 语言标准库中的定义如下:

#define  EOF  (-1)

迄今为止,关于 EOF 作用的观点各异。大多数程序员认为“文件中有一个 EOF 字符,用于表示文件的结尾”。其实,在个人看来这是一种最简单、最粗暴的理解,但实际上,这个观点并不正确(或者说并不完整),在文件所包含的数据中,并没有什么文件结束符。从 EOF 宏的定义中可以看出,EOF 宏的值为 -1,属于 int 类型的数据,在 32 位系统中,可以表示为 0xFFFFFFFF。由此可见,EOF 并不是一个字符,也不是文件中实际存在的内容(在第一个参考链接有详细说明)。

  1. 使用EOF实现闰年不断判断

    #include<iostream>
    using namespace std;
    int main()
    {
        int n;
        char c = 0;//初始化c;
        while (c!=EOF)
        {
            cout << "cinyear:";
            cin >> n;
            if (n % 100 == 0 && n % 400 == 0 || n % 100 != 0 && n % 4 == 0)
                cout << "runnian" << endl;
            else
                cout << "feirun " << endl;
            cout << "tip:";
            cin >> c;
            c = cin.get();
        }
    
        return 0;
    }
  2. 不使用EOF实现

    #include<iostream>
    using namespace std;
    int main()
    {
        int n;
        char c = 0;//初始化c
        while (c!=‘o‘)
        {
            cout << "cinyear:";
            cin >> n;
            if (n % 100 == 0 && n % 400 == 0 || n % 100 != 0 && n % 4 == 0)
                cout << "runnian" << endl;
            else
                cout << "feirun " << endl;
            cout << "cinchice ‘i‘is in,‘o‘is out:";
            cin >> c;
        }
    
        return 0;
    }

参考文章:

http://c.biancheng.net/view/345.html

https://blog.csdn.net/qq_34681261/article/details/70147965

原文地址:https://www.cnblogs.com/LJianYu/p/12287896.html

时间: 2024-12-21 18:31:48

关于c/c++语言的EOF(C++实现闰年判断)的相关文章

java OJ题目判断输入结束(与C语言的EOF结束等价)

/* * java 作Oj题目是会有输入若干数据的情况,不好判断输入结束符, * 类似于C语言中的EOF符号 * 在这里提供了一种方法 * */ 1 import java.util.Iterator; 2 import java.util.Scanner; 3 import java.util.TreeSet; 4 5 public class StudentCode { 6 7 public static void main(String[] args) { 8 TreeSet<Intege

c语言:实现一个函数,判断一个数是不是素数。

实现一个函数,判断一个数是不是素数. 程序: #include <stdio.h> #include <math.h> int prime(int num) //prime表示素数 { int i = 0; int k = 0; k = sqrt(num); for (i = 2; i <= k; i++) { if (num%i == 0) { return 0; } } return 1; } int main() { int num; int ret; printf(&

c语言:输出一个数组,判断是否存在问题,若有,请找出问题并改正

输出一个数组,判断是否存在问题,若有,请找出问题并改正 程序: #include <stdio.h> int main() { int i, a[5] ; for (i = 0; i <=5; i++) { a[i] = 0; } for (i = 0; i <5; i++) { printf("%d\n", a[i]); } return 0; } 结果:出现崩溃 分析:循环的次数超过了数组长度 改正后程序: #include <stdio.h>

【面试题】C语言:实现一个函数,判断一个数是不是素数。

#include<stdio.h> #include<math.h> int main() {  int num=0;  int ret=0;  printf("please input the number:\n");  scanf("%d",&num);  ret=prime(num);  if(ret==1)  {    printf("%d is prime",num);   }  else  {    p

(C语言)回文数的判断

问题描述: 判断一个数是否为回文数: 121: 12321: 1234321: 程序分析: 1. 回文数(palindromic number):是指一个数的最高位和最低位上的数相等,第二高位与次低位上的数相等,也就是关于中间"对称".如上面的三个数情况是一个回文数. 2.将这个数扩展成一个数组,将这个数的各个位上的数取出来并且一一赋给这个数组. 3.判断这个数组中的元素之间的关系是否符合回文数的特征.并且将结果输出.这个程序写了一个函数来实现这一功能. 代码如下: #include&

C语言实现1000--2000的闰年判断

 判断1000年---2000年之间的闰年 #include <stdio.h>int main(){ int year=0; int num=0; for(year=1000;year<=2000;year++) {  if((year%4==0&&year%100!=0)||(year%400==0))  {   printf("%d ",year);   num++;  } } printf("num=%d\n",num); 

(C语言)回文字符串的判断

问题描述: 判断一个字符串是否为回文字符串. 程序分析: 回文字符串: (1)是一种特殊的字符串,有着不一样的特点.整个字符串中的每个元素的首尾是相同的,并且内容关于中间"对称". (2)写程序的时候,写一个函数,并且用指针实现判断功能,最后再调用这个函数. (3)在写这个函数的时候,我在主函数里传入一个字符串可以用scanf也可以用gets函数.这个时候如果我想要连续判断字符串是否为回文字符串的时候,我写了一个while循环,这个时候,如果我运用gets这个函数来传入我要判断的字符串

【C语言】不使用循环和判断语句,求出1-100之间所有数的和

//不使用循环和判断语句,求出1-100之间所有数的和 #include <stdio.h> int fun(int n, int *sum) { *sum = *sum + n; (n--) && (fun(n, sum)); return n; } int main() { int n = 100; int sum = 0; fun(n, &sum); printf("%d\n", sum); return 0; } <img src=&q

【c语言】 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是不转换

// 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是不转换 #include <stdio.h> int main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); if(ch >= 'A' && ch <= 'Z') ch = ch + 32; printf("转换成小写字母是:%c\n",ch); return 0; }