公告:本站提供编程开发方面的技术交流与分享,打造最佳教程网,希望能为您排忧解难!

C语言教程C语言习题集10 结构体与共同体

C语言习题集10 结构体与共同体

更新时间:2013-04-13 07:16:56 |

结构体与共同体

一、选择题
1.C语言结构体类型变量在程序执行期间_________.
   a)所有成员一直驻留在内存中
   b)只有一个成员驻留在内存中
   c)部分成员驻留在内存中
   d)没有成员驻留在内存中
 
2.下面程序的运行结果是___________.
  main()
  {
   struct cmplx{int x;
                int y;
               }cnum[2]={1,3,2,7};
     printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
  }
  a)0      b)1    c)3    d)6
 
3.设有如下定义:
  struct  sk
   {int n;
    float  x;
   }data ,*p;
  若要使p指向data中的n域,正确的赋值语句是_______.
  a)p=&data.n;
  b)*p=data.n;
  c)p=(struct sk *)&data.n;
  d)p=(struct sk *)data.n;
 
4.以下对结构体变量stu1中成员age的非法引用是________.
struct  student
  {int age;
   int num;
  }stu1,*p;
  p=&stu1;
  a)stu1.age        b)student.age
  c)p->age          d)(*p).age
 
5.下面对typedef的叙述中不正确的是______.
  a)用typedef可以定义各种类型名,但不能用来定义变量
  b)用typedef可以增加新类型
  c)用typedef只是将已存在的类型用一个新的标识符来代表
  d)使用typedef有利于程序的通用和移植
 
6.以下scanf函数调用语句中对结构体变量成员的不正确引用是________.
    struct  pupil
    {char name[20];
      int age;
      int sex;
    }pup[5],*p;
    p=pup;
   a)scanf("%s",pup[0].name);
   b)scanf("%d",&pup[0].age);
   c)scanf("%d",&(p->sex));
   d)scanf("%d",p->age);

一、填空题
1.以下程序的运行结果是________.
  struct n{
    int x;
    char c;
   };
  main()
  {struct n a={10,'x'};
  func(a);
   printf("%d,%c",a.x,a.c);
  }
  func(struct n b)
  {
  b.x=20;
  b.c='y';
  }
 
2.若有定义:
  struct  num
  {int a;
    int b;
    float  f;
   }n={1,3,5.0};
  struct num *pn=&n;
  则表达式pn->b/n.a*++pn->b的值是________,表达式(*pn).a+pn->f的值是________.
 
3. 以下程序的运行结果是________.
  struct ks
  {int a;
   int *b;
  }s[4],*p;
  main()
  {
   int n=1;
  printf("\n");
  for(i=0;i<4;i++)
   {
     s[i].a=n;
     s[i].b=&s[i].a;
     n=n+2;
   }
  p=&s[0];
  p++;
  printf("%d,%d\n",(++p)->a,(p++)->a);
}
 
4.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名
和年龄。请在_______内填入正确内容。
  stati struct man{
    char name[20];
     int age;
  }person[]={"li=ming",18,
             "wang-hua",19,
              "zhang-ping",20
             };
 
  main()
  {struct man *p,*q;
   int old=0
   p=person;
  for(  ;p_____;p++)
    if(old<p->age)
     {q=p;______;}
   printf("%s %d",______);
}
 
5. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点
的指针(链表不带头结点)。请在______内填入正确内容。
  struct link
  {char data ;
   struct link *next;
  };
  ....
  struct link *p,*first;
  int c=0;
  p=first;
  while(_____)
   {_______;
    p=_______;
  }

最佳教程网

最大的技术交流平台 www.goodxyx.com© CopyRight 2011-2013, All Rights Reserved

浙ICP备11033019号