一、单选题
1、设有定义:
struct complex
{
    int real,  unreal;
} data1={1,8},data2;
则以下赋值语句中错误的是()。
al=data1.unreal;
B.data2=(2,6);
C.data2=data1;
al;
正确答案:B
2、设有定义:
struct
{char mark[12];
int num1;
double num2;} t1,t2;
若变量均已正确赋初值,则以下语句中错误的是()。
A.t2.num1=t1.num1;
B.t2.num2=t1.num2;
C.t1=t2;
D.t2.mark=t1.mark;
正确答案:D
3、有以下定义语句:
struct student
{int num;
char name[9];
};
则不能正确定义结构体数组并赋初始值的是( )。
A.struct stu[]={{1,"zhangsan"},{2,"li si"}};
B.struct student stu[2]={{1,"zhangsan"},{2,"li si"}};
C.struct student stu[2]={1, "zhangsan",2,"li si"};
D.struct student stu[]={{1,"zhangsan"},{2,"li si"}};
正确答案:A
4、有以下程序:
#include<stdio.h>
struct S
{ int a,b;}data[2]={10,100,20,200};
int main()
{struct S p=data[1];
printf("%d\n",++(p.a));
return 0;}
程序运行后的输出结果是()。
A.11
B.10
C.21
D.20
c语言程序分析题及答案正确答案:C
5、有以下程序:
    #include <stdio.h>
    struct ord
    { int  x,y;  } dt[2]={1,2,3,4};
    int main()
    { struct  ord  *p=dt;
      printf("%d,",++p->x);  printf("%d\n",++p->y);
    return 0;
    }
程序的运行结果是()。
A.2,3
B.4,1
C.1,2
D.3,4
正确答案:A
6、 若有以下定义:
struct date{int y,m,d;};
struct student
{ int num;char name[9];
  structdate bir;} stu,*p=&stu;
则以下对结构体变量stu成员的引用中错误的是( )。
A.p->bir->y
B.stu.bir.y
C.stu.name
D.p->bir.y
正确答案:A
二、判断题
1、设有定义:
struct student
{ int  ID;
  char  name[12]; }s,*p=&s;
语句:p.ID=20161001;是否正确?(×
2、使几个不同类型的变量共占同一段内存的结构称为共用体。(
3、在定义一个共用体变量时,系统分配给它的存储空间是该共用体变量中占用存储单元最长的成员的长度。(√)
4、结构体变量可以在函数间传递,传递方式有值传递和地址传递两种。(√)
三、填空题
1、结构体是不同数据类型的数据集合,作为数据类型, 必须先定义结构体______,再定义结构体变量。
正确答案:类型
2、设有定义:
struct person
{ int  ID;
  char  name[12]; }pa;
请将scanf("%s",______);语句补充完整,使其能够为结构体变量pa的成员name正确读入数据。
正确答案:pa.name
3、以下程序运行后的输出结果是 ______。
#include<stdio.h>
struct  NODE
{ int  k;
  char s[20];
};
int main()
{
    struct  NODE  m[3];
    int i;
    for(i=0;i<3;i++)
          m[i].k=i+1; 
    for(i=0;i<3;i++)
        printf("%d ",m[i].k);
    return 0;
}
正确答案:1 2 3
4、设有以下语句:
    struct st {int n; struct st *next; };
    static struct st a[3]={5, &a[1], 6,&a[2], 9, '\0'}, *p;
    p=&a[0];
    则表达式++p->n的值是______。
正确答案:6
5、程序运行的结果是______。
#include <stdio.h>
int main()
{
      union example
      { int a;  int b; }e;
      e.a=1;e.b=2;
      printf("%d\n",e.a);
      return 0;
}
正确答案:2