昨天出了一道题[c 语言谜题] 程序填空,老程序员来做做,不少朋友都搞定了,今天是第二题
#include <stdio.h>
struct FileData {
FILE *fp;
size_t size;
unsigned char buf[1024];
};
main() {
struct FileData fileData;
unsigned char res = 0;
size_t i;
fileData.fp = fopen(__FILE__, "rb");
fileData.size = fread(fileData.buf, 1, sizeof(fileData.buf), fileData.fp);
for (i = 0; i < fileData.size; ++i) {
if (fileData.buf[i] != ' ' && fileData.buf[i] != '\t' && fileData.buf[i] != '\r' && fileData.buf[i] != '\n') {
res += fileData.buf[i];
}
}
fclose(fileData.fp);
printf("%u\n", (unsigned)res);
}
此程序是c 程序,文件扩展名“.c ”,意在将自身源代码中的所有“有效字符”相加后输出结果,虽然相加发生了溢出,但对于确定的输入,会有确定的输出。
此程序运行后输出的数字是220
,可以先验证一下。
要求,替换掉源代码中的一个字符,条件如下:
问:经过了你的合法的替换,程序运行后的输出数字是几呢?
ps:角度比较刁钻,切勿因此虐心,仅供一乐,不承担法律责任
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.