printf(“%d -at EOF\n“, c)的意思是什么?

该程序段用于演示在C语言中如何检查getchar()函数返回值是否等于EOF。通过while循环条件getchar()!EOF,程序会一直读取输入字符直到遇到文件结束符EOF。最后输出的%d-atEOF揭示了最终的字符值,表明文件结束。
摘要由CSDN通过智能技术生成

在K&R 《C语言程序设计》一书中习题1-6的解答中给出了如下程序



#include "stdio.h"
main()
{
	int c;

	while(c=getchar()!=EOF)
		printf("%d\n",c);
	printf("%d -at EOF\n", c);
}

题目是要验证   getchar() != EOF 的值为 0还是1,所以故意没有带 c =  getchar()两边的括号

好的,我会为您解答这个问题。首先,这是一个经典的贪心算法问题,我们可以按照结束时间从早到晚对所有电视节目进行排序,然后依次选择结束时间最早的电视节目,并将其结束时间作为下一个选择的起始时间,直到所有电视节目都被选择完。下面是用C语言实现的代码: ```c #include <stdio.h> #include <stdlib.h> typedef struct { int start; int end; } Program; int cmp(const void* a, const void* b) { Program* p1 = (Program*)a; Program* p2 = (Program*)b; return p1->end - p2->end; } int main() { int n; while (scanf("%d", &n) != EOF) { Program* programs = (Program*)malloc(n * sizeof(Program)); for (int i = 0; i < n; i++) { scanf("%d%d", &programs[i].start, &programs[i].end); } qsort(programs, n, sizeof(Program), cmp); int count = 0, end = 0; for (int i = 0; i < n; i++) { if (programs[i].start >= end) { count++; end = programs[i].end; } } printf("%d\n", count); free(programs); } return 0; } ``` 代码中,我们定义了一个结构体 `Program` 来存储每个电视节目的开始时间和结束时间。`cmp` 函数是用来比较两个电视节目的结束时间的,用于 `qsort` 排序。在 `main` 函数中,我们使用 `scanf` 读入每个测试用例,然后按照结束时间从早到晚对所有电视节目进行排序。接下来,我们使用 `count` 记录可以观看的电视节目数量,`end` 记录上一个观看的电视节目的结束时间。然后遍历所有电视节目,如果当前电视节目的开始时间大于等于 `end`,则选择该电视节目,并更新 `count` 和 `end`。最后输出 `count` 即可。 希望我的回答对您有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值