预处理、文件等知识点1

本文详细介绍了C语言中fopen函数的使用,包括正确格式和错误示例。同时,讨论了宏定义的概念,如SQR、MAX宏的计算过程,以及预处理命令的作用,如文件包含、条件编译等。此外,还提到了静态变量的作用域和文件的打开模式。

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

  1. 以下可作为函数fopen中,第一个参数的正确格式是(A.c:\\user\\text.txt).    
    本来应该写成c:\user\\text.txt但是C语言中将'\'作为转义字符的标志,因此在字符串或字符中要表示'\'时,应当在'\'之前再加一个'\'。
  2. 已知有宏定义#define SQR(a)   2*a*a,则SQR(3+4)的值为(22).    2*3+4*3+4
  3. file1.c中,有命令,#include<file2.c>,若file2.c中,有全局静态变量a,则a在file1.c中,有效,不必用extern说明.
  4. 设有以下宏定义:
    #define M 4
    #define T(t)((M+1)*t)
    ,则执行语句:y=2*(M+T(4+1));后,y的值为(50).  
  5. 设有宏定义#define MAX(x,y) (x)>(y)?(x):(y),则F=MAX(2*4,3*4)的值为(12).   2*4>3*4
  6. 预处理命令。包含三个内容:宏定义、文件包含、条件编译。预处理命令有预处理程序解释。程序中的预处理命令是从#开始的,预处理命令既可以出现在函数外部,也可以出现在函数内部。      
    若在程序的一行中出现多条预处理命令,这些命令都是有效的。(×)
  7. 若有以下程序段:
    struct dent
    { int n;
      int *m;
    };
    int a=1,b=2,c=3;
    struct dent s[3]={{101,&a},{102,&b},{103,&c}};
    *s[0].m+1是指向下一个元素而不是数值加1.
  8. fgets函数将从文件中,最多读入n-1个字符
  9. 如果需要打开一个已经存在的非空文件"file1"并在原基础上进行修改(不做附加),正确的语句是fp=fopen("file1","r+"); 
  10. 若执行fopen函数时发生错误,则函数的返回值是(B). A.0    B.NULL
  11. 有两个实型变量dog和cat,若要把数据写入磁盘文件中,以下正确的形式是(). fprintf(fp,"%f%f",dog,cat);
  12. 设有宏定义#define MAX(x,y)(x)>(y)?(x):(y),则F=4*MAX(2,3)的值为(2).  
     4*2>3成立输出2,不成立输出3
  13. 用一个#include命令可以同时指定数个被包含文件.(×)
  14. 用宏可以得到也仅能得到一个返回值.(×)
  15. 在定义宏时,在宏名与表示参数的括弧之间不应加空格.(√)
  16. 宏替换在运行程序时进行,占用运行时间.(×)
  17. 带参数的宏定义如果在代码文件中多次使用,会造成代码长度比使用函数更长。(√)
  18. 宏名有类型,其参数也有类型.(×)
  19. 被包含文件与其所在的文件(即用#include命令的源文件),在预处理后,成为同一个文件(√)
  20. 头文件中,通常包含宏定义、函数原型申明和数据类型定义。(√)
  21. 文件关闭函数fclose可以关闭打开的文件,返回值类型为void.(×)
  22. 宏命令#define无论在源文件中何处定义,其有效范围总是整个源文件.(×)
  23. C语言中,关闭文件函数为fclose(),其括号内可不带任何参数.(×)
  24. 一个#include 命令只能指定1个被包含的文件.(√)
  25. 计算机编译系统对宏定义在编译时进行语法检查.(×)
  26. 被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.(×)                    一般我们使用#include指令包含头文件(当然,头文件也是可以有实现),编译器首先通过预编译,将所有使用#include的地方全部使用包含的文件替换,然后在执行编译,所以被包含不会生成单独的目标文件
    生成单独的目标文件一般是头文件的实现文件,头文件的实现就是先编译成单独的目标文件,然后通过链接器连接到一起,成为一个完整的可执行文件
  27. 如果被包含文件中有全局静态变量,它们在用#include命令的源文件中有效.(√)
  28. 若在程序的一行中出现多条预处理命令,这些命令都是有效的(×)
    不能在一行上写多条预处理命令 宏里面的参数没有数据类型,它所执行的只是文本的替换。 宏的名称中不能出现空格,否则空格之后的部分都将被替换。
  29. 若有宏定义:#define S(a,b) t=a;a=b;b=t;由于变量t没定义,所以此宏定义是错误的.(×)
  30. 可以用#undef命令终止宏定义的作用域.
  31. 带参数的宏定义不是进行简单的字符串替换,还要进行参数替换.(√)
  32. 若有fp=fopen("a1.dat","a+")打开文件语句,这个文件的数据是以_ASCII码_的形式存放在内存中,该文件的使用方式为_____。附加和读写 附加 读和写 读/写 读写
  33. 有如下代码:
       int i;
       for (i=3;i<=10;i __+=__ 3) //此空只允许填写运算符
          printf("%d  ",i);

    完成:求10以内的所有数中,能被3整除的数(运行结果为3 6 9)。 

  34. 若有以下宏定义:
    #define M(a,b) -a/b   
    则执行语句"printf("%d",M(4+3,2+1));"后输出结果为(_-2_)。                                          -4+3/2+1(多次验证应该是此结果)

  35. 若有如下宏定义语句:
    #define M 3*5
    则执行语句"printf("%d",M/M);"后输出结果为__25__。 

  36. 设有宏定义#define MA(x) x*(x-1),且a=1,b=2,则MA(1+a+b)的值为(8).

  37. 已知有宏定义#define F(a) a*(a+2),则F(4+3)的值为(31).

  38. 一个#include 命令只能指定1个被包含的文件.(√)

  39. 用fopen("file","r+");打开的文件"file"可以进行修改.(√)

  40. 若有如下宏定义语句:
    #define M 4/2
    则执行语句"printf("%d",M*M);"后输出结果为___2__。

  41. 若有如下宏定义语句:
    #define M 4/3
    则执行语句"printf("%d",M*M);"后输出结果为___1___。

  42. 下面语句的功能是从一文本文件中读入一个数据(数据保存格式为:XXXX)到一整型变量i中,请填空
    (fp,"%4d",&i);

  43. 调用 fopen 函数打开一文本文件,在"使用方式"这一项中, 为写入文件而打开需填入__w_. 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值