作业 6 结构体

[目的]

1.掌握结构体的概念、定义和使用;
2.理解结构变量和结构成员变量,掌握引用结构成员;
3.重点结构体的使用方法。

[题目] 

一、预习检查:自学教材第九章、阅读博客[结构体简介],并回答以下问题:

  • 什么是结构?什么情况下使用结构管理数据?
  • 什么是结构定义和结构变量?
  • 什么是结构的成员,如何初始化和引用结构成员的值?
  • 结构变量如何作为函数参数使用?
  • 什么是结构数组,如何定义和使用结构数组?
  • 什么是结构指针,如何利用结构指针操作结构成员?

--------------------------------题目分割线---------------------------------

二、运行和理解教材例题9-1;

--------------------------------题目分割线---------------------------------
三、预习检查:选择正确答案,并简要说明为什么?

1)  下面定义结构变量的语句中错误的是 ___,为什么? 
A.struct student{ int num; char name[20]; } s;
B.struct { int num; char name[20]; } stu ;
C.struct student{ int num; char name[20]; }; struct student s;
D.struct student{ int num; char name[20]; }; struct stu s;

2) struct { int x, y; } s[2] = { { 1, 3 }, { 2, 7 } }; 则语句:printf(“%d\n”, s[0].y/s[1].x ); 输出结果是 ___, 为什么? 

          A.0        B.1          C.2         D.3

      3) 分析下面的程序片段,能打印出字母 M 的语句是 ___, 为什么?。         

struct person{char name[10];int age; } c[10] = { “John”, 17, “Paul”, 19, “Mary”, 18, “Adam”, 16 };

A.printf(“%c”, c[3].name);
B.printf(“%c”, c[3].name[1]);
C.printf(“%c”, c[2].name[0]);
D.printf(“%c”, c[2].name[1]);

      4) 设有如下定义,则对 data 中的 a 成员的正确引用是 ___, 为什么? 
           struct sk{ int a; float b; } data, *p=&data;
          A.(*p).data.a       B.(*p).a    C.p->data.a        D.p.data.a  

--------------------------------题目分割线---------------------------------

四、预习检查:填空,并注释"每空"填充的依据

      1) 完成下列程序,该程序计算 10 名学生的平均成绩          

#include <stdio.h>
#include <string.h>
struct student {
    int num;
    char name[20];
    int score;
}; 
struct student stud[10];
int main(void)
{
    int   i , sum = 0 ;
    for(i = 0; i < 10; i++){
        scanf("%d%s%d ",&stud[i].num,stud[i].name, &stud[i].score);
        sum += stud[i].score;
    }
    printf("aver = %d \n", sum/10);
    return 0;
}

      2) 下列程序读入时间数值,将其加 1 秒后输出,时间格式为:hh: mm: ss,即小时:分钟:秒,当小时等于 24 小时,置为 0。          

#include<stdio.h>
struct { int hour, minute, second;} time;
int main(void)
{
    scanf("%d: %d: %d",    &time.hour, &time.minute, &time.second );
    time.second++;
    if( time.second == 60){
        time.minute++ ; 
        time.second = 0;
        if(time.minute == 60){
            time.hour++; 
            time.minute = 0;
            if( time.hour == 24 )
                time.hour = 0; 
        }
    }
    printf ("%d: %d: %d \n", time.hour, time.minute, time.second );
    return 0;
} 

      3) 写出下面程序的运行结果,并简要描述原因。       

struct s1{
    char c1, c2;
    int   n;
};
struct s2{
    int n; 
    struct s1 m;
} m = {1, {‘A’, ’B’, 2} };
int main(void)
{ 
    printf(“%d\t%d\t%c\t%c\n”, m.n, m.m.n, m.m.c1, m.m.c2);
    return 0;
}

      4) 写出下面程序的运行结果,并简要描述原因。          

struct abc{    int a;    float b;    char *c; };
int main(void)
{
    struct abc x = {23,98.5,"wang"};
    struct abc *px = &x;
    printf("%d, %s, %.1f, %s \n", x.a, x.c, (*px).b, px->c );
    return 0;
}

 

posted @ 2013-11-17 19:33  jlxuqiang  阅读(909)  评论(0编辑  收藏  举报