if( boy.有房() and boy.有车() )

本文通过一个幽默的方式模拟了两个人基于物质条件和情感投入的爱情发展过程。在这个过程中,男主角通过不断的努力提高自己的经济条件,并在特定的日子里给予女主角情感上的关怀,以此来增进彼此的感情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 #if 0
result love(boy, girl)
{
   
if( boy.有房() and boy.有车() )
    {
        boy.
set(nothing);
       
return girl.嫁给(boy);
    }
   
if( girl.愿意等() )
    {
   
while(!(boy.赚钱 > 100,000 and girl.感情 > 8 ) )
    {
       
for( day=1; day <=365; day++)
        {
           
if( day == 情人节 )
           
if( boy.givegirl(玫瑰) )
                girl.感情
++;
           
else
                girl.感情
--;  
           
if( day == girl.生日 )
           
if( boy.givegirl(玫瑰) )
            {
                girl.感情
++;
           
else
                girl.感情
--;
                boy.拼命赚钱();
            }
        }
       
if( boy.有房() and boy.有车() )
        {
            boy.
set(nothing);
           
return girl.嫁给(boy);
        }
        年龄
++;
        girl.感情
--;
    }
   
return girl.goto( another_boy);
}
#endif
7-2 计算职工工资 分数 20 作者 C课程组 单位 浙江大6-1 写文章 分数 10 作者 李祥 单位 湖北经济学院 请编写函数,从键盘输入一篇文章,将其写入到文件中。 函数原型 void WriteArticle(FILE *f); 说明:参数 f 为文件指针。函数从键盘输入一篇文章(由若干行文字组成,以 Ctrl+Z 结束),将其写入 f 所指文件中。 裁判程序 #include <stdio.h> #include <stdlib.h> void WriteArticle(FILE *f); int main() { FILE *f; f = fopen("Article.txt", "w"); if (!f) { puts("文件无法打开!"); exit(1); } WriteArticle(f); if (fclose(f)) { puts("文件无法关闭!"); exit(1); } puts("文件保存成功!"); return 0; } /* 你提交的代码将被嵌在这里 */ 输入样例 Poor Old Gentleman An old gentleman was walking slowly along a street one day when he saw a little boy who was trying to reach a doorbell which was too high for him. He was a kind-hearted old man, so he stopped and said, "I will ring the bell for you," and then he pulled the bell so hard that it could be heard all over the house. The little boy looked up at him and said, "Now we will run away. Come on." And before the old gentleman knew what was happening, the naughty boy had run round the corner of the street, leaving the man to explain to the angry owner of the house why he had rung the bell. 提示:最后一行输入完以后打回键,在下一行的开头按下 Ctrl + Z (屏幕显示为 ^Z),再打回键结束输入。 输出样例 文件保存成功! 打开“Article.txt”文件,查看文件内容。 Article.txt Poor Old Gentleman An old gentleman was walking slowly along a street one day when he saw a little boy who was trying to reach a doorbell which was too high for him. He was a kind-hearted old man, so he stopped and said, "I will ring the bell for you," and then he pulled the bell so hard that it could be heard all over the house. The little boy looked up at him and said, "Now we will run away. Come on." And before the old gentleman knew what was happening, the naughty boy had run round the corner of the street, leaving the man to explain to the angry owner of the house why he had rung the bell.
06-11
<think>根据用户提供的三个引用,特别是引用[2]中提供了两种实现WriteArticle函数的代码示例。两种实现方式都使用循环逐个字符读取键盘输入(标准输入)并写入文件,直到遇到EOF(EndOfFile,在Windows系统中通常通过Ctrl+Z输入,在Linux/Unix系统中通常通过Ctrl+D输入)。引用[1]和引用[3]提供了裁判程序(main函数),但未提供WriteArticle函数的实现。引用[2]则给出了两种实现:第一种:```cvoidWriteArticle(FILE*f){intc;//使用int类型是为了能够存储EOF(通常为-1),char类型可能无法正确存储EOF(因为char可能是unsigned)while((c=getchar())!=EOF){fputc(c,f);}}```第二种:```cvoidWriteArticle(FILE*f){intc;while((c=fgetc(stdin))!=EOF){fputc(c,f);}}```两种实现都是可行的。它们的功能是等价的:从标准输入(stdin)读取字符,写入文件流f中,直到遇到文件结束符(EOF)。注意:在裁判程序中,文件以文本模式打开("w"),所以系统会自动处理文本模式下的换行符转换(如在Windows下,写入文件时换行符'\n'会被转换为'\r\n',读取时则相反)。因此,我们可以选择其中一种实现。这里选择第一种,使用getchar和fputc。另外,用户提供的裁判程序(main函数)中已经处理了文件打开和关闭,以及错误检查,我们只需要实现WriteArticle函数即可。根据要求,函数参数f是已经以写方式打开的文件指针。所以,提交的代码如下:```cvoidWriteArticle(FILE*f){intc;while((c=getchar())!=EOF){fputc(c,f);}}```注意:在裁判程序中,文件打开方式为"w",如果文件存在则清空,不存在则创建。但是,需要特别注意裁判程序中文件关闭部分的错误检查:在引用[1]和引用[3]的裁判程序中,文件关闭的检查条件是:```cif(!fclose(f)){//引用[1]中:如果fclose返回0表示成功,非0表示失败,所以这里判断条件可能是写反了?puts("文件无法关闭!");exit(1);}```但实际上,fclose函数在成功时返回0,失败时返回EOF(非0)。所以上述条件`if(!fclose(f))`表示:如果fclose返回0(即关闭成功),则进入if块,输出错误信息并退出。这显然是错误的,应该是关闭失败时才输出错误。而引用[2]中的裁判程序则是正确的:```cif(fclose(f)){//fclose返回非0(失败)时,输出错误puts("文件无法关闭!");exit(1);}```由于用户提供的三个引用中裁判程序不一致,但问题只要求我们实现WriteArticle函数,所以我们可以忽略这个不一致,因为裁判程序是固定的,我们只需要按照要求实现函数。但是,请注意,用户提供的引用[1]的裁判程序中确实有误(错误检查条件写反),而引用[2]和[3]中的裁判程序正确(引用[3]只给出了部分,但文件关闭部分与引用[2]一致?实际上引用[3]中裁判程序没有给出文件关闭的条件判断,但给出了puts成功消息,所以应该是正确的)。不过这不是我们需要修改的部分,因为题目只要求我们写WriteArticle函数。因此,我们按照以上代码提交即可。§§相关问题§§1.使用`intc`而不是`charc`的原因是什么?2.除了逐个字符读写,还有其他方式实现将键盘输入写入文件吗?3.如何实现多行文本的输入结束判断(EOF的使用)?</think> 根据您提供的引用信息,要实现`WriteArticle`函数将键盘输入的文章写入文件,以下是几种可行的实现方法及完整代码示例: ### 方法1:使用`fgetc`和`fputc`逐字符读写 ```c #include <stdio.h> void WriteArticle(FILE *f) { int c; // 必须用int接收EOF(-1) while ((c = fgetc(stdin)) != EOF) { // 从标准输入读取字符 fputc(c, f); // 写入文件 } } ``` ### 方法2:使用`getchar`和`fputc`简写版 ```c #include <stdio.h> void WriteArticle(FILE *f) { int c; while ((c = getchar()) != EOF) { // getchar()等价于fgetc(stdin) fputc(c, f); } } ``` ### 方法3:使用`fgets`逐行读写(缓冲区方式) ```c #include <stdio.h> #define MAX_LINE 1024 void WriteArticle(FILE *f) { char buffer[MAX_LINE]; while (fgets(buffer, MAX_LINE, stdin)) { // 读取整行 fputs(buffer, f); // 写入整行 } } ``` --- ### 完整可运行示例 (使用方法2) ```c #include <stdio.h> #include <stdlib.h> void WriteArticle(FILE *f) { int c; while ((c = getchar()) != EOF) { fputc(c, f); } } int main() { FILE *f = fopen("Article.txt", "w"); if (!f) { puts("文件无法打开!"); exit(1); } printf("请输入文章内容(Ctrl+Z结束):\n"); WriteArticle(f); if (fclose(f)) { puts("文件无法关闭!"); exit(1); } puts("文件保存成功!"); return 0; } ``` ### 使用说明: 1. 运行程序后,输入任意多行文本(支持中文) 2. 在Windows系统按`Ctrl+Z`+回结束输入 3. 在Linux/macOS按`Ctrl+D`结束输入 4. 文章将保存到同级目录的`Article.txt` ### 关键点解析: 1. **`EOF`处理**:使用`int`类型接收字符,因为`EOF`(-1)超出`char`范围[^2] 2. **标准输入流**:`stdin`指向键盘输入流 3. **文件模式**:`"w"`表示覆盖写入文本文件 4. **错误检查**:`fopen`/`fclose`返回`NULL`或非零表示失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值