无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

2013年计算机二级考试C语言课后模拟题十及答案

2013-03-18来源/作者:卫凯点击次数:729

  一 单项选择题
  1.以下程序的输出结果是( D )。
  struct student
  {char name[20];
  char sex;
  int age;
  }stu[3]={“Li Lin”, ‘M’, 18, “Zhang Fun”, ‘M’, 19, “Wang Min”, ‘F’, 20};
  main()
  {struct student *p;
  p=stu;
  printf(“%s, %c, %d\n”, p->name, p->sex, p->age);
  }
  A) Wang Min,F,20 
  B) Zhang Fun,M,19
  C) Li Lin,F,19 
  D) Li Lin,M,18
  2.设有以下语句:
  struct st{int n; struct st *next;};
  static struct st a[3]={5, &a[1], 7, &a[2], 9, ‘\0’},*p;
  p=&a[0];
  则表达式( D )的值是6。
  A) p++ ->n 
  B) p->n++ 
  C) (*p).n++
  D) ++p->n
  3.以下四个程序中,( C )不能对两个整型变量的值进行交换。
  A) #include<malloc.h>
  main()
  {int a=10,b=20;
  swap(&a,&b);
  printf(“%d %d\n”,a,b);
  }
  swap(int *p,int *q)
  {int *t;
  t=(int *)malloc(sizeof(int));
  *t=*p; *p=*q; *q=*t;
  }
  B) main()
  {int a=10,b=20;
  swap(&a,&b);
  printf(“%d %d\n”,a,b);
  }
  swap(int *p,int *q)
  {int t;
  t=*p; *p=*q; *q=t;
  }
  C) main()
  {int *a,*b;
  *a=10; *b=20;
  swap(a,b);
  printf(“%d %d\n”,*a,*b);
  }
  swap(int *p,int *q)
  {int t;
  t=*p; *p=*q; *q=t;
  }
  D) main()
  {int a=10,b=20;
  int *x=&a,*y=&b;
  swap(x,y);
  printf(“%d %d\n”,a,b);
  }
  swap(int *p,int *q)
  {int t;
  t=*p; *p=*q; *q=t;
  }
  4.下面程序的输出结果是( C )。
  struct st
  {int x;
  int *y;
  }*p;
  int dt[4]={10, 20, 30, 40};
  struct st aa[4]={50, &dt[0], 60, &dt[1], 70, &dt[2], 80, &dt[3]};
  main()
  {p=aa;
  printf(“%d ”, ++p->x);
  printf(“%d ”, (++p)->x);
  printf(“%d\n”, ++(*p->y));
  }
  A) 10 20 20
  B) 50 60 21
  C) 51 60 21
  D) 60 70 31
  5.若要用下面的程序片段使指针变量p指向一个存储整型数据的动态存储单元,则应填入( C )。
  int *p;
  p= malloc(sizeof(int));
  A) int 
  B) int * 
  C) (* int) 
  D) (int *)
  6.若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是(C )。

 

 

  A) s->next=NULL; p=p->next; p->next=s;
  B) p=p->next; s->next=p->next; p->next=s;
  C) p=p->next; s->next=p; p->next=s;
  D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;
  7.以下程序的输出结果是( D )。
  #include<stdio.h>
  void fun(float *p1,float *p2, float *s)
  {s=(float *)calloc(1, sizeof(float));
  *s=*p1+*(p2++);
  }
  main()
  {float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;
  fun (a, b, s);
  printf(“%f\n”, *s);
  }
  A) 11.100000 
  B) 12.100000 
  C) 21.100000 
  D) 1.100000
  8.字符‘0’的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是( B )。
  #include<stdio.h>
  main()
  {union
  {int i[2];
  long k;
  char c[4];
  }r, *s=&r;
  s->i[0]=0x39;
  s->i[1]=0x38;
  printf(“%c\n”, s->c[0]);
  }
  A) 39 
  B) 9 
  C) 38 
  D) 8

  推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试

  冲刺专题:2013年计算机二级考试冲刺考前注意事项考试试题首发悬赏等考真题

  欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!

  9.若有说明:long *p, a; 则不能通过scanf语句正确给输入项读入数据的程序段是( A )。
  A) *p=&a; scanf(“%ld”,p);
  B) p=(long *)malloc(8); scanf(“%ld”,p);
  C) scanf(“%ld”,p=&a);
  D) scanf(“%ld”,&a);
  10.以下选项中,能定义s为合法的结构体变量的是( B )。
  A) typedef struct abc 
  B) struct
  {double a; {double a;
  char b[10]; char b[10];
  }s; }s;
  C) struct ABC
  D) typedef ABC 来源:考
  {double a; { double a;
  char b[10]; char b[10];
  } }
  ABC s; ABC s;
  11.设有以下定义和语句,则输出结果是(指针变量占2个字节)( D )。
  struct date
  {long *cat;(2字节)
  struct date *next;(2字节)
  double dog;(8字节)
  }too;
  printf(“%d”, sizeof(too));
  A) 20 
  B) 16 
  C) 14 
  D) 12
  12.以下程序的输出结果是(D )。
  #include<malloc.h>
  int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p;
  main()
  {p=(int *)malloc(sizeof(int));
  f(p, a);
  printf(“%d\n”,*p);
  }
  f(int *s, int p[][3])
  {*s=p[1][1];}
  A) 1 
  B) 4 
  C) 7 
  D) 5
  13.设有如下定义:
  struct sk
  {int a; float b;} data, *p;
  若有p=&data,则对data中的成员a的正确引用是( B )。
  A) (*p).data.a 
  B) (*p).a 
  C) p->data.a 
  D) p.data.a
  14.以下程序的输出结果是( B )。
  #include<stdio.h>
  struct stu
  {int num;
  char name[10];
  int age;
  };
  void fun(struct stu *p)
  {printf(“%s\n”, (*p).name);}
  main()
  {struct stu students[3]={{9801, “Zhang”, 20}, {9802, “Wang”, 19}, {9803, “Zhao”, 18}};
  fun (students+2);
  }
  A) Zhang 
  B) Zhao 
  C) Wang 
  D) 18
  15.以下程序运行后,输出结果是( C )。
  fut(int **s, int p[2][3])
  {**s=p[1][1];}
  main()
  {int a[2][3]={1, 3, 5, 7, 9, 11}, *p;
  p=(int *)malloc(sizeof(int));
  fut(&p, a);
  printf(“%d\n”, *p);
  }
  A) 1
  B) 7 
  C) 9 
  D) 11

  推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试

  冲刺专题:2013年计算机二级考试冲刺考前注意事项考试试题首发悬赏等考真题

  欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!

  16.下列程序的输出结果是( B )。
  struct abc
  { int a, b, c; };
  main()
  { struct abc s[2]={{1,2,3},{4,5,6}}; int t;
  t=s[0].a + s[1].b;
  printf("%d \n", t);
  }
  A) 5 
  B) 6 
  C) 7 
  D) 8
  
  17.有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是( B )。
  struct node
  {char data;
  struct node *next;
  } a, b, *p=&a,*q=&b;
  A) a.next=q; 
  B) p.next=&b; 
  C) p->next=&b; 
  D) (*p).next=q;
  18.变量a所占内存字节数是( C )。
  union U
  {char st[4];
  int i;
  long l;
  };
  struct A
  {int c;
  union U u;
  }a;
  A) 4 
  B) 5 
  C) 6 
  D) 8
  19.有如下定义:
  struct person{char name[9]; int age;};
  struct person class[10]={“Johu”, 17, “Paul”, 19 , “Mary”, 18, “Adam”, 16};
  根据上述定义,能输出字母M的语句是( D )。
  A) printf(“%c\n”, class[3].name); 
  B) printf(“%c\n”, class[3].name[1]);
  C) printf(“%c\n”, class[2].name[1]);
  D) printf(“%c\n”, class[2].name[0]);
  20.以下对结构体类型变量的定义中,不正确的是( C )。
  A) typedef struct aa
  B) #define AA struct aa
  {int n; AA{int n;
  float m; float m;
  }AA; }td1;
  AA td1;
  C) struct
  D) struct
  { int n; { int n;
  float m; float m;
  }aa; }td1;
  struct aa td1;
  21.设有以下说明语句:
  struct ex
  {int x; float y; char z;} example;
  则下面的叙述中不正确的是( B )。
  A) struct是结构体类型的关键字 
  B) example是结构体类型名
  C) x, y, z都是结构体成员名 
  D) struct ex是结构体类型名
  22.以下程序的输出结果是(D )。
  union myun
  { struct
  { int x, y, z; } u;
  int k;
  } a;
  main()
  {a.u.x=4; a.u.y=5; a.u.z=6;
  a.k=0;
  printf(%d\n", a.u.x);
  }
  A) 4 
  B) 5 
  C) 6 
  D) 0

  推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试

  冲刺专题:2013年计算机二级考试冲刺考前注意事项考试试题首发悬赏等考真题

  欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!

  二 填空题
  1.设有以下结构体类型说明和变量定义,则变量a在内存中所占的字节数是 22 ,变量p在内存中所占的字节数是 2
  struct stud
  {char num[6];
  int s[4];
  double ave; 来源:www.examda.com
  }a, *p;
  2.若有如下结构体说明:
  struct STRU
  {int a, b ; char c; double d:
  struct STRU p1, p2;
  };
  请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型: struct STRU t[20];
  3.以下程序段用于构成一个简单的单向链表,请填空。
  struct STRU
  {int x, y ;
  float rate;
  struct STRU * p;
  } a, b;
  a.x=0; a.y=0; a.rate=0; a.p=&b;
  b.x=0; b.y=0; b.rate=0; b.p=NULL;
  4.建立并输出100个同学的通讯录,每个通讯录包括同学的姓名、地址、邮政编码。
  #include<stdio.h>
  #define N 100
  struct communication
  {char name[20];
  char address[80];
  long int post_code;
  }commun[N];
  main()
  {int i;
  for(i=0; i<100; i++)
  {set_record(commun+i);
  print_record(commun+i);
  }
  }
  set_record(struct communication *p)
  {printf(“Set a communication record\n”);
  scanf(“%s %s %ld”, p->name , p->address, p->post-code );
  }
  print_record ( strut communication * p)
  {printf(“Print a communication record\n”);
  printf(“Name: %s\n”, p->name);
  printf(“Address: %s\n”, p->address);
  printf(“Post_code: %ld\n”, p->post-code );
  }
  5.以下函数creatlist用来建立一个带头节点的单链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个节点的next成员中放入NULL,作为链表结束标志。读入时字符以#表示输入结束(#不存入链表)。请填空。
  struct node
  {char data;
  struct node * next;
  };
  struct node * creatlist( )
  {struct node * h,* s,* r;char ch;
  h=(struct node *)malloc(sizeof(struct node));
  r=h;
  ch=getchar( );
  while(ch!= ‘#’)
  {s=(struct node *)malloc(sizeof(struct node));
  s->data= ch
  r->next=s; r=s;
  ch=getchar( );}
  r->next= NULL
  return h;
  }
  6.有以下定义和语句,则sizeof(a)的值是 10 ,而sizeof(a.share)的值是 4
  struct date
  {int day;
  int month;
  int year;
  union
  {int share1;
  float share2;
  }share;
  }a;

  推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试

  冲刺专题:2013年计算机二级考试冲刺考前注意事项考试试题首发悬赏等考真题

  欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!





相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策