复试急救篇---预处理、结构体和文件(错题)

错题:

  1. 预处理是在编译前由预编译器完成的,它不占用编译时间和运行时间。
  2. C语言的宏定义本质就是用一个不带引号的字符串替换宏名。
  3. 结构体类型及其变量的声明。
//声明结构体类型(stu)的同时声明结构体变量(stutype)
struct stu{
int a;
float b;
}stutype;

//先声明结构体类型,再定义结构体变量。
struct stu{
int a;
float b;
};
struct stu stutype;

//声明一个无名结构体类型,同时定义结构体变量。
struct {
int a;
float b;
}stutype;

//声明一个无名结构体类型,再定义结构体变量。
struct {
int a;
float b;
}stutype;
struct stutype;
  1. 对结构体成员变量的引用
struct pupil{
char name[20];
int age,sex;
}pup[5],*p=pup;

对成员变量的引用如果是非数组类的一定要带取地址符:

scanf("%s",&pup[0].age);   scanf("%s",&(p->sex));

对成员变量的引用如果是数组类的则不需要带取地址符,因为数组名本身就是地址变量:

scanf("%s",pup[0].name);
  1. 若执行fopen函数时发生错误,则函数的返回值是0。
  2. 要求用fopen函数打开一个新的文件,说明磁盘上没有该文件,要生成一个,则用“w”模式,二进制文件要用"b"模式,能读能写要用“+”模式,组合起来就是“wb+”形式。
  3. “a”模式是指针移动到文件末尾并向文件进行添加操作,“+”模式表示文件能读能写。
    “a+”表示文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,可作添加和读操作
  4. feek函数是对文件进行定位,可实现改变文件位置指针的操作,其形式是int fseek(FILE *fp,long offset,int origin); 当origin=0时,表示从文件开头计算;当origin=1时,表示从文件开头指针当前位置计算;当origin=2时,表示从文件末尾计算。offset若为正,则文件指针向后移动;offset若为负,则文件指针向前移动。
    fseek(fp,-20L,2)中origin=2时,表示从文件末尾计算,-20L表示文件指针从文件尾向前移动20个字节。
  5. fgetc函数用于从文件中读取一个字符,对应的文件打开模式可以是读(“r”),可以是读写(“r+”)、追加(“a”)。
  6. rewind函数的作用是使位置指针重新返回文件的开头。
  7. ftell(fp)函数的作用是得到流式文件中的当前位置。
  8. C语言流式文件的两种形式是文本文件和二进制文件。
  9. C语言中输出一个数据块到文件中的函数是fwrite,从文件中输入一个数据块的函数是fread,输出一个字符串到文件中的函数是fputs,从文件中输入一个字符串的函数是fgets。
  10. feof(fp)函数用来判断文件是否结束,若遇到文件结束,函数值为1,否则为0。
  11. 在C语言中,文件的存取是以字节为单位,这种文件称作流式文件。
  12. 结构数组的输入输出。
int main(){
    struct man *p,*q;
    int old=0;
    p=person;
    for(;p<person+3;p++)
       if(old<p->age){
          q=p;
          old=p->age;
       }
    printf("%s %d",q->name,q->age);
    return 0;
}
  1. printf("%d, %d\n",(++p)->a,(p++)->a);由于C语言中函数参数是从右向左结合的,因此先输出(p++)->a(值为3),然后p指向s[2],++p后p就指向s[3],因此++p->a的值为7。
  2. 统计链表中的节点个数
struct link{
     char data;
     struct link *next;
};
struct link *p,*first;
int c=0;
p=first;
while(p){
    c++;
    p=p->next;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值