C语言基础及答案10~12

第十章 结构体与共用体

一、 选择题

1、 定义结构类型时,下列叙述正确的是____

A、 系统会按成员大小分配每个空间

B、 系统会按最大成员大小分配空间

C、 系统不会分配空间

D、 以上说法均不正确

2、 已知结构类型变量x的初始化值为{20,30,40,35.5},请问合适的结构定义是___

A、 Struct s{int no;int x,y,z};

B、 Struct s{char no[2];int x,y,z};

C、 Struct s{int no;float x,y,z};

DStruct s{char no[2];float x,y,z};

3、若程序中有定义struct abc{int x;char y;};abc s1,s2;则会发生的情况是____

A、 编译时会有错误

B、 链接时会有错误

C、 运行时会有错误

D、 程序没有错误

  

二 、编程

1、 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。

 

参考答案

选择题

1   2    3A

二、编程题

1#include

   #define null 0

   #define LEN sizeof(struct student)

   Struct student

   {long num;

Int score;

Struct student *next;

};

Struct student listA,listB;

Int n,sum=0;

Main()

{struct student *creat(void)

 Struct student *insert(struct student *,struct student *);

 Void print(struct student *);

 Struct student *ahead,*bhead,*abh;

 Printf(\ninput list a:\n);

 ahead=creat();

 sum=sum+n;

 printf(input list b:\n);

 bhead=creat();

 sum=sum+n;

 abh=insert(ahead,bhead);

 print(abh);

 }

Struct student *creat(void)

 {struct student *p1,*p1,*head;

  n=0;

  p1=p2=(struct student *)malloc(LEN);

  printf(input number scores of student:\n);

  printf(if number is 0,stop inputing,\n);

scanf(%ld,%d,&p1->num,&p1->score);

head=null;

while(p1->num!=0)

 {n=n+1;

  If(n==1)head=p1;

  Else p2->next=p1;

  p2=p1;

  p1=(struct student*)malloc(LEN);

  scanf(%ld,%d,&p1->num,&p1->score);

  }

 p2->next=null;

 return(head);

 }

Struct student *insert(struct student*ah,struct *bh)

 {struct student *pa1,*pa2,*pb1,*pb2;

  pa2=pa1=ah;

  pb2=pb1=bh;

 do

 {while((pb1->num>pa1->num)&&(pa1->next!=null))

  {pa2=pa1;

   p1=pa1->next;

   }

  If(pb1->num<=pa1->num)

   {if(ah==pa1)

    ah=pb1;

   else pa2->next=pb1;

   pb1=pb1->next;

   pb2->next=pa1;

   pa2=pb2;

   pb2=pb1;

   }

  }

  While((pa1->next!=null)||(pa1==null&&pb1!null));

   If((pb1->num>pa1->num)&&(pa1->next==null))

    pa1->next=pb1;

   return(ah);

    }

  Void print(struct student *head)

   {struct student *p;

    Printf(\n there are %d records:\n,sum);

    p=head;

    if(p!=null)

     do

      {printf(%ld %d\n,p->num,p->score);

  p=p->next;

  }

 While(p!=null);

}

 

第十一章  位运算

编程题

1、 设计一个函数,使给出一个数的原码,能得到该数的补码

参考答案

Main()

{unsigned int a;

 Unsigned int getbits(unsigned);

 Printf(\ninput an octal number:);

 Scanf(%o,&a);

 Printf(result :%o\n,getbits(a));

 }

 Unsigned int getbits(unsigned value)

 {unsigned int z;

  z=value&0100000;

  if(z==0100000)

  z=~value+1;

  else

   z=value;

   return(z);

  }

 

第十二章 文件

一、 选择题

1、在C语言,文件由_____

A、 记录组成

B、 由数据行组成

C、 由数据块组成

D、 由字符(字节)序列组成

2C语言中的文件类型只有____

A、索引文件和文本文件两种

BASCII文件和二进制文件两种

C、文本文件一种

D、二进制文件一种

3C语言中文件的存取方式___

A、只能顺序存取

B、只能随机存取(或称直接存取)

C、可以顺序存取,也可随机存取

D、只能从文件的开头进行存取

   

参考答案 

选择题

1   2    3

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值