第7章 C语言情诗大战
期末考试的阴云笼罩着校园,空气中弥漫着紧张的气息。计算机系的走廊上,学生们抱着厚重的课本匆匆而过,唯独三楼的386机房内传来阵阵欢声笑语。
“曼丽,你知道吗?这次C语言考试不仅要考理论知识,还要有实际编程能力。“我一边敲打着键盘,一边对坐在旁边的曼丽说道。
曼丽转过头,她那双明亮的眼睛闪烁着智慧的光芒:“所以我才拉你一起来啊,刘军。实践才是最好的老师。“
我们俩正在准备期末项目的编程练习。窗外的阳光斜照进来,映照在机房略显陈旧的电脑屏幕上。
我注意到曼丽今天特意穿了一件淡蓝色的连衣裙,微风拂过,窗帘轻轻摆动,她的发丝也随之飘扬。
“对了,“曼丽突然压低声音,神秘地笑了笑,“我想我们可以把一首情诗藏在代码里,再加上一个心形图案和一个密码。如何?“
“好主意!“我兴奋地拍了一下桌子,引来周围同学的侧目。
曼丽连忙示意我小声点,我不好意思地笑了笑,但眼中的热情丝毫未减。
接下来的几个小时里,我和曼丽沉浸在代码的世界里。
我们精心设计了一段C语言程序,它能够在屏幕上绘制出一个完美的心形图案,并在运行时提示用户输入密码。
*****C语言情诗******
#include <stdio.h>
#include <math.h>
void drawHeart(){
float x, y, r;
for (y = 1.5; y >-1.5; y -= 0.1){
for (x =-1.5; x < 1.5; x += 0.05){
r = sqrt(x*x + y*y - 1);
putchar(r <= 1.0 ?“*“:““);
}
putchar('\n');
}
}
int main(){
printf(“正在运行特殊程序...\n“);
drawHeart();
printf(“\n\n想要惊喜,请输入密码\n“);
//密码验证逻辑将在后面添加
return 0;
}
“这首情诗写在哪里呢?“曼丽好奇地问。
我神秘地笑了笑,开始在代码中添加了一个隐藏的功能:
void printPoem(){
char poem[4][40]={
“我住长江头,君住长江尾。“,
“日日思君不见君,共饮长江水。“,
“此水几时休,此恨何时已。“,
“只愿君心似我心,定不负相思意。“
};
int i, j;
for (i = 0; i < 4; i++){
for (j = 0; j < 40; j++){
printf(“%c“, poem[i][j]);
Sleep(100);//控制显示速度
}
printf(“\n“);
}
}
然后,我们在主函数中添加了一个调用这个函数的触发条件:
int main(){
char password[20];
int correctPassword = 0;
//密码计算逻辑:用自己的生日加对方生日
//这部分代码放在后面
while (!correctPassword){
printf(“请输入密码:“);
scanf(“%s“, password);
//密码验证
if (strcmp(password, generatedPassword)== 0){
correctPassword = 1;
printf(“\n密码正确!\n“);
printPoem();//密码正确后显示情诗
} else {
printf(“\n密码错误,请重试!\n“);
}
}
return 0;
}
我们花了整个下午的时间完善这个程序,时不时因为一个小bug而一起皱眉思考,又因为一次成功的尝试而相视大笑。
窗外的天色渐渐暗了下来,但我们浑然不觉,完全沉浸在编程的乐趣中。
“刘军,我们已经完成了基本功能,但最好还是保存一下当前的进度。“曼丽提醒道,她看了看墙上的时钟,已经接近傍晚了。
“别担心,我的电脑不会出问题的。“我自信满满地回答,眼睛仍然盯着屏幕,手指在键盘上快速敲击着,继续完善密码验证的部分。
曼丽无奈地摇了摇头,但没有再多说什么。我知道她在担心什么——之前我已经因为疏忽丢失过几次代码了。
“好了!“我兴奋地拍了一下桌子,“最后的密码系统完成了!我用我的生日加你的生日作为密码,你也可以用你的生日加我的生日,这样我们都能打开对方的程序。“
曼丽看了看表:“已经很晚了,我们先保存工作吧。“
“再等一分钟,就一分钟!“我恳求道,眼睛一刻也舍不得离开屏幕,“我刚刚想到了一个绝妙的点子,可以让密码提示变得更加浪漫。“
曼丽叹了口气,不再说话,只是静静地看着我。我能感觉到她的目光,但我太投入了,完全没有注意到她眼中那一闪而过的担忧。
时间一分一秒地过去,突然,电脑屏幕闪烁了一下,接着完全黑了下来。
“怎么了?“我惊慌地敲击着键盘,但没有任何反应。
“刘军,别试了,“曼丽站起身来,“电源接触不良,我之前看到过这种情况。“
“不,不是电源问题,“我急切地检查着电脑连接,“我的程序还没保存!“
我手忙脚乱地按下了几个键,希望能恢复刚刚的工作,但一切都是徒劳的。屏幕依然一片漆黑,仿佛我刚才的努力都只是一场梦。
“我早就告诉过你要经常保存的!“曼丽的声音中带着责备,但更多的是焦急。
我的脸涨得通红,手心冒汗,心跳加速。一整天的努力就这样付诸东流了?我不敢相信眼前的一切,感觉自己的世界正在崩塌。
“别急,我们一起想想办法。“曼丽拍了拍我的肩膀,试图安抚我激动的情绪。
我抬起头,看着她关切的眼神,心中涌起一股莫名的感动。在这个关键时刻,她没有选择指责,而是选择和我一起面对困难。
“谢谢你,曼丽。“我轻声说道。
然而,情况比我们想象的还要糟糕。当我们尝试重新启动电脑时,发现硬盘根本无法读取。我的程序,连同那段隐藏的情诗,似乎永远消失了。
“怎么会这样?“我抓着头发,几乎要哭出来,“这是我第一次尝试这样的创意编程!“
曼丽沉默了一会儿,然后说道:“我们可能需要寻求专业帮助了。“
就在这时,机房管理员走了过来,询问发生了什么事。我们解释了情况后,他摇了摇头:“这个硬盘可能已经物理损坏了,最好找专业人士看看。“
我和曼丽对视一眼,都看到了对方眼中的绝望。一整天的努力就这样白费了,更糟糕的是,我没能听曼丽的建议及时保存,现在后悔已经太晚了。
第二天一早,我带着硬盘来到了学校的计算机维修中心。经过专业技术人员的检查,确认硬盘的0磁道损坏,导致数据无法读取。
“0磁道是硬盘最关键的部分,存储着引导扇区信息,“技术人员解释道,“一旦损坏,常规方法是无法恢复数据的。除非...“
“除非什么?“我急切地问道。
“除非用低级格式化工具重新初始化磁盘,但这会导致所有数据永久丢失。“
我感到一阵眩晕,这意味着我的程序彻底消失了?那段包含心形图案和情诗的代码,还有我和曼丽共同的心血,就这样没有了?
“等等,“我想到了一个可能性,“有没有可能在不格式化硬盘的情况下访问数据?比如用汇编语言直接操作磁头?“
技术人员的脸上露出了惊讶的神情:“你懂汇编语言?理论上讲,如果你能绕过操作系统直接控制磁盘的物理读取,可能会读取到损坏区域之后的数据。但0磁道损坏的话,启动扇区已经丢失,系统根本无法启动。“
“我试试看。“我坚定地说道,眼神中重新燃起了希望。
回到宿舍,我翻出了尘封已久的汇编语言教材,开始疯狂地学习和研究。我必须找到一种方法,绕过受损的0磁道,直接访问后面的数据。
整整两天两夜,我几乎没合眼,全神贯注地编写着一段特殊的汇编程序。
我不知道是否能够成功,但我不能就这样放弃。这不仅关乎我的期末项目,更关乎我和曼丽之间那份特殊的默契。
“我需要定位磁头的位置,强行从第1磁道开始读取数据,“我自言自语道,手指在键盘上飞快地敲击着,“然后手动解析文件系统,找到我们的文件。“
编写这样的程序对于一个普通的大学生来说几乎是天方夜谭,但我别无选择。我必须尝试。
时间一分一秒地过去,我的眼睛布满了血丝,手指也因为长时间的敲击而生疼。就在我几乎要放弃的时候,屏幕上终于出现了一行让我心跳加速的文字:
“读取成功:project.exe“
我激动地几乎从椅子上跳起来,双手颤抖着打开了文件。当我看到那个熟悉的心形图案在屏幕上完美呈现时,泪水模糊了我的视线。
“我做到了!“我大喊一声,把正在休息的室友都吓了一跳。
当我输入密码时,屏幕上显示:“密码错误,请重试!“
“怎么会这样?“我疑惑地喃喃自语。难道是我哪里出错了?
我再次仔细检查了密码设置的逻辑。哦,对了!我和曼丽约定好,我使用“我的生日+她的生日“作为密码,而她使用“她的生日+我的生日“。我刚才输入的是“我的生日+她的生日“,但可能程序中的逻辑需要反过来?
我重新输入了密码,这次是“她的生日+我的生日“。屏幕依然显示:“密码错误,请重试!“
“怎么会这样?“我急得满头大汗,“难道我的程序有问题?“
我重新检查了代码,发现我在计算密码哈希值时犯了一个错误。在紧张的情况下,我竟然忘记了将日期转换为正确的十六进制表示!
修正了这个错误后,我再次尝试输入密码。这一次,屏幕终于显示:“密码正确!“
随着程序的运行,那个美丽的心形图案再次出现在屏幕上,接着是一行浪漫的文字:“请输入密码查看惊喜“。
我输入了正确的密码:“我的生日+她的生日“,屏幕上慢慢浮现出一首诗:
我住长江头,君住长江尾。
日日思君不见君,共饮长江水。
此水几时休,此恨何时已。
只愿君心似我心,定不负相思意。
正当我沉浸在成功的喜悦中时,宿舍的门突然被敲响了。
“刘军,有人找你。“门外传来室友的声音。
我疑惑地打开门,竟然看到了曼丽站在门口,她的脸上带着我从未见过的担忧和期待。
“你那块硬盘出问题了,对吗?“曼丽问道,她的眼神中充满了关切。
“你怎么知道?“我惊讶地问。
“机房老师让同学跟我说,有人用汇编语言尝试恢复硬盘数据,而且似乎成功了。但是密码尝试了很多次都失败了,所以我担心是你。“
我看着曼丽,心中涌起一股暖流。她不仅在担心我的程序,更担心我本人。
“是的,是我。“我点了点头,“我成功恢复了数据,但是密码好像出了点问题。“
曼丽走进宿舍,坐到我的电脑前。她看了看屏幕,然后输入了一个密码:“她的生日+我的生日“。
屏幕闪烁了一下,接着显示出了一行不同的文字:
与steven天长地久
丽的脸上露出了微笑:“看来我们都设置了对方才能看到的密码。“
“这是什么意思?“我疑惑地问道。
“我用'我的生日+你的生日'作为密码,得到了这首情诗;你用'你的生日+我的生日'作为密码,会得到什么?“
我输入了密码:“我的生日+她的生日“,屏幕上显示:
永远爱marry
“看,我说过不要用英文名!“曼丽假装生气地说,但眼中闪烁着喜悦的光芒。
我们都笑了起来,紧张的气氛一扫而空。就在这时,我注意到曼丽的表情有些不对劲,她的眼神中似乎藏着什么难以言说的情感。
“刘军,“她轻声说,“其实我也有话想对你说。“
就在这时,楼下有人喊我赶快去接电话。我飞奔下楼,是机房老师打来的:“刘军,你恢复的数据我已经看到了,确实很精彩。不过,有个坏消息——硬盘的物理损坏还在继续恶化,如果你还想彻底保存数据,需要立刻进行专业的数据恢复。“
我看了看曼丽,又看了看电脑屏幕上的情诗,心中已经有了决定。
“老师,我现在就去。“我挂断电话,转向曼丽,“愿意和我一起去吗?“
曼丽点了点头,她的脸上洋溢着幸福的笑容。我们收拾好东西,一起走出了宿舍。
当我们到达数据恢复中心时,已经是下午了。技术人员告诉我们,硬盘的物理损坏正在迅速恶化,必须立即进行开盘恢复。
“开盘恢复是什么?“我疑惑地问道。
“就是打开硬盘,直接在无尘环境下读取盘片上的数据。“技术人员解释道,“不过这个过程有风险,可能会导致数据永久丢失。你们确定要继续吗?“
我看了看曼丽,她微笑着点了点头。我深吸一口气,做出了决定:“是的,我需要恢复这些数据。“
等待的过程漫长而煎熬。几个小时后,技术人员把我们叫到了工作室。
“好了,我们成功读取了大部分数据。“技术人员递给我们一个软盘,“不过我要提醒你们,硬盘损坏严重,这只是部分恢复的数据,不保证完整性。“
我接过软盘,和曼丽一起回到了学校。在宿舍里,我们小心翼翼地将数据导入电脑。除了我们的编程项目外,还恢复了一些我们之前没有意识到的文件。
“这是什么?“曼丽指着一个名为“给曼丽的信.txt“的文件问道。
我打开了文件,上面写着:
亲爱的曼丽:
当你读到这封信时,我已经决定离开一段时间。
我知道我一直在逃避,不敢面对自己的感情。每当看到你,我的心就会不受控制地加速跳动。我喜欢你的聪明,喜欢你的善良,喜欢你的每一个微笑和皱眉。
我不敢告诉你,因为我害怕失去你。我害怕一旦表白,我们连朋友都做不成。
但是,通过这个项目,我想让你知道我的心意。代码中的每一行都是我精心设计的,就像我对你的感情一样细致入微。
密码?哦,密码是一个双关语:我用“我的生日+你的生日“作为密码,结果是什么呢?让我想想...
那个心形图案,不仅仅是因为它漂亮,更因为它象征着我们共同的心跳。
曼丽,我喜欢你。不,不只是喜欢,是爱。我不敢当面告诉你,只能通过这种方式表达。
如果你看到了这封信,无论你如何回应,请你知道,在这个世界上,有一个人深深地爱着你。
永远爱你的,
刘军
曼丽的脸上泛起红晕,她接过信,轻轻地读着。我能看到她的眼眶湿润了。
“这...这是真的吗?“她颤抖着声音问我。
我点了点头,不敢直视她的眼睛:“对不起,我一直没有勇气告诉你。我害怕失去你这个朋友。“
曼丽沉默了一会儿,然后问道:“那你为什么选择用这种方式表达?“
“因为我不知道如何用言语表达,“我诚实地回答,“编程是我最擅长的事情,所以我想用我最擅长的方式来表达内心最真实的情感。“
“谢谢你,刘军,“曼丽的脸上露出了灿烂的笑容,“我很感动。但是...“
“但是什么?“我紧张地问道。
“我也给你准备了一样东西,“曼丽神秘地笑了笑,从包里拿出了一张软盘,“在我们的程序成功运行后,我想到了一个更好的方式来表达我的感受。“
我困惑地接过软盘,插入电脑A驱。屏幕上显示出一个程序运行的界面,同样是那个美丽的心形图案,然后提示输入密码。
“密码是什么?“我问道。
“密码就是'愿意做我的男朋友吗?',不过要用英文输入。“曼丽调皮地说。
我按照她的指示输入了密码,屏幕上出现了一段表白:
“刘军,当你看到这段表白时,我已经无法用言语表达我的感受了。你知道吗?其实我早就注意你了。每次看到你专注编程的样子,我都觉得你特别迷人。你的执着、你的才华、你的善良,都深深地吸引着我。
我也一直不敢告诉你我的心意,因为我害怕失去你这个朋友。但是,通过这个程序,我想让你知道:我愿意和你一起面对未来的挑战,无论是在编程的世界里,还是在现实生活中。
所以,刘军,你愿意做我的男朋友吗?如果愿意,请输入'我愿意';如果需要时间考虑,请输入'我需要时间';如果拒绝,请输入'对不起'。“
看着这些,我的眼眶湿润了。我转头看向她,发现她也正用期待的眼神看着我。
“我愿意!“我毫不犹豫地输入了这三个字,然后按下了回车键。
屏幕上一条信息缓缓显示出来:
“谢谢你的回答。我会永远记得这一天,记得我们一起编程的日子,记得那个美丽的心形图案。“
就在这时,曼丽突然靠在我的肩上,轻声说:“其实我已经知道了答案,只是想确认一下。“
我转过头,看着她美丽的脸庞,然后轻轻地握住了她的手。
“你知道吗?“曼丽靠在我的肩膀上说,“有时候,最珍贵的礼物不是你送的编程作品,而是你愿意为了我付出那么多努力。“
我紧紧握住她的手,心中充满了感激和幸福。
