首页 > 娱乐 > 结构型、共用型和枚举型典型例题
结构型、共用型和枚举型典型例题
网上收集 2007/12/17 22:33:24 (297)

66。按照相同的方法,可以知道控制变量abc的值将依次等于65、66、67、68,循环的条件都满足。当abc加1后变为69时,判断控制循环的条件“adc<C”将不再成立,退出循环。由上述分析,该循环一共执行4次,所以只有备选答案③是符合题意的。
【答案】③
7 关于枚举型变量的引用,下列说法中错误的是()
   ①给枚举型变量赋值可以使用:枚举型变量=(enum枚举型)整常数
    ②两个同一种枚举型的变量之间可以进行关系运算
    ③两个同一种枚举型的变量之间可以进行加减运算
    ④一个枚举型变量可以进行++、--的运算
【分析】分析备选答案①:教材(p165)的例子中明确指出:整数不能作为枚举型常量值,但是“(enum枚举型名)整数”是通过数据类型强制转换原则将整数转换成枚举型数据,所以该答案的说法是正确的。分析备选答案②:只要两个枚举型变量是同一种枚举型,它们之间就可以进行比较大小的运算(即关系运算),所以该答案的说法也是正确的。分析备选答案③:给枚举型变量所赋的值只能是枚举型常量,虽然枚举型常量的值是整数,但是枚举型数据是一种特殊类型的数据,不是整型数据,所以它们之间不能进行算术运算,该答案的说法是错误的,符合题意。至于备选答案④:教材(pl66)的关于枚举型变量使用在循环中的例子里,已经使用了“枚举型变量++”,显然该答案中的说法是正确的,不符合题意。
【答案】③
8 下列关于结构型、共用型、枚举型的定义语句中,正确的是()
     ① struct ss{ int x}         ② union uu { int x;}xx=5;
     ③ enum ee{ int x;};       ④struct{int x;};
【分析】分析备选答案①:在成员名x的后面缺少一个分号,在右花括号的后面缺少一个分号,所以语法上是错误的。分析备选答案②:共用型变量是不能赋初值的,该语句语法出错。分析备选答案③:枚举型定义时,花括号中是枚举常量表,即用逗号分隔的一个个枚举常量,不能对每个枚举常量给出数据类型,所以该语句也有语法错误。显然备选答案④是正确的,符合题意。注意,在这个定义语句中,没有给出结构型名,这是允许的。
【答案】④
9 若有下列定义语句“typedef int *INTARRAY[10];”,则和定义语句“INTAIthAY a,b;”作用相同的数据定义语句是()
     ① int a[10], b[10];      ② int a[10],*b;
     ③int *a,b[10];           ④int *a[10],*b[10];
【分析】首先来分析给出的前一个定义语句,这个语句是定义用户自己的数据类型符的,从语句本身可以看出,这是定义指向整型数据的指针型数组的用户数据类型。再分析结出的后一个定义语句,显然这个语句是使用用户定义的数据类型符“INTARRAY”来定义具体的指针型数组,从语句中可以看出,一共定义了两个名为a和b的、指向整型数据的。长度为10的指针数组。显然,分析给出的四个备选答案,只有备选答案④的功能是定义两个名为a和b的指向整型数据的指针型数组,且数组长度为10,所以本题的正确答案应选④。
【答案】 ④
10 下列程序的功能是输入一个学生的学号,在3个学生的信息(参看程序清单中的结构型定义)中查找,如果找到,则输出该学生的姓名和总分;如果找不到,则输出提示“NotFound!”。请填写程序中缺少的语句成份。
   struct { long num;       /*学生的学号*/
            char nane[10];  /*学生的姓名*/
            float total;    /*学生的总分*/
          } s[3]={{101L,"chi",658},102L,"gu",648},{103L,"cheng",549}};
   main()
   { long x;
     int i, flag= 0;
     scanf(“%1d”, &x);
     for( i= 0; i< 3; i++)
        if(______________)
          { flag= l;
            break;
          }
    if(flag)
       prinif("%s%f\n", s[i].name, s[i].total);
    else
       printf("Not Found!\n");
   }
【分析】这是一个在数组中寻找符合条件的数组元素的常见问题,唯一要注意的是这个数组是结构型数组,这个查找的条件是结构型成员的位。例览程序可以发现,和一般的顺序查找算法相同,也是利用一重次数型循环依次处理当前数组元素,查到则在标记变量flag中置1,退出循环;查不到,则利用循环前在标记变量flag中预置的0来表示。最后利用标记变量flag的值进行不同的输出。分析到这儿,就可以来考虑需要填写的内容,这个内容显然是查到的条件:输入的学号x要等于当前结构型数组元素s[i]的成员num值,具体写出来就是:x==s[i].num。注意,这个答案还有另一种写法:x==(&s[i])->num。
【答案】x==S[i].num或x==(&s[i])->num1 设有下列定义语句,则表达式“p->x「l」”的值是_____________;表达式“(*p).k”的值是____________。
       struct { int x[5];
                 int k;
               } s={{1,2},3},*p=&s;
【分析】p是指向结构型变量s的结构型指针变量,所以“p->成员名”就是结构型变量s的成员。由于表达式中给出的成员是数组元素x[1],所以该表达式的值就是x[1]的值。从赋初值来看,这个数组元素的初值为2,所以第一个空白应该填写2。同样道理,*p就是p指向的结构型变量s,所以第二个表达式就是s.k,k是结构型变量S的成员,初值为3,所以第二个表达式的值为3。
【答案】2
       3
2 设有下列定义语句,则下列表达式中能表示结构型xx的成员x的表达式是()
   struct xx{ int x;};
         struct yy { struct xx xxx;int yy;} xxyy;
  ① xxyy.x   ② xxyy->x    ③(&xxyy)->xxx.x    ④xxx.x
【分析】分析备选答案①:xxyy是结构型yy的变量,其后跟“.成员”是正确的,但是这个成员必须是结构型yy的成员,而表达式中的“x”是结构型xx的成员,所以是错误的。分析备选答案②:xxyy是结构型变量,其后不能跟“->”,这样会造成语法错误。分析备选答案③:&xxyy是结构型变量xxyy的地址,其后跟“->成员”是正确的,表示该结构型
的成员,这个成员是结构型对的成员xxx,而这个成员的数据类型又是另一个结构型xx,所以其后应该是“.xx的成员”,表达式中恰好是xx的成员x,所以这个表达式是正确的(注意,这是嵌套结构型成员的弓l用格式)。至于备选答案④:xxx是结构型成员,不能直接引用,前面必须有结构型变量或结构型数组元素。
【答案】③
3 设有下列定义语句,则表达式“(*(p+1)).name[1]”的值是______________;表达式“(p+1)-> score[1]”的值是_____________。
  struct { long num;char name[10」;float score[3];
         }s[2」={{101L,"zhao",{90,80,70}},{102L,"qian",{75,65,55}}},*p=s;
【分析】指针变量 p是指向结构型数组 S的首地址,所以 p+ 1就是数组元素 s[1]的地址,因此,*(p+ l)就是 s[1],这是一个结构型数组元素,其后跟“.name[1]”,则代表结构型成员,所以第一个空白处应该填写的是结构型成员name数组的元素name[1]的值,从赋初值的情况来看,这个值是字符‘i’。再来分析第二个表达式, p+ l是结构型数
组s的元素s[1]的地址,在地址后面跟“->score[1]”也是代表结构型成员,因此第二个空白处填写的是结构型成员score数组的元素score[l]的值,这个值显然是65.0。
【答案】'i'
       65.0
4 关于获得系统日期函数(getdate())和获得系统时间(gettime())的函数,下列说法中错误的是()
①需要在程序的开头写上相关的包含命令
②如果需要通过getdate()函数获得系统日期,必须定义一个 struct date型的变量
③如果需要通过gettime()函数获得系统时间,必须定义一个 struct time型的变量和一个struct time型的指针变量
④getdate()函数和gettime()函数均无返回值
【分析】分析备选答案①:显然是正确的说法,使用任何系统函数都要写上包含该函数的包含命令。分析备选答案②:因为调用getdat()函数时,需要一个能接受系统日期的结构型 struct date的变量,虽然该函数的参数是指向该种结构型的指针变量,但是我们可以用“&结构型变量名”作为实际参数,所以本答案的说法也是正确的。分析备选答案③:和备选答案②类似,从

阅读(297) (责任编辑:城市网)
关于我们 - 联系我们 - 网站荣誉 - 广告服务 - 版权声明 - 网站地图
Copyright© 2007-2018 bj1.com.cn 首都热线 版权所有 QQ:165687462
中国·北京 粤ICP备14047004号-20