zoukankan      html  css  js  c++  java
  • 作业 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 ”, 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 
    ", 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 
    ", 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	%d	%c	%c
    ”, 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 
    ", x.a, x.c, (*px).b, px->c );
        return 0;
    }
  • 相关阅读:
    《STL源码剖析》-- 序列式容器
    IPV6 组播学习理解
    C 语言指针 引用学习
    C++ list 源码学习
    汇编基础学习---浮点运算
    C++ 运算符重载
    C++ 迭代器学习
    Play框架连接Mysql遇到的一些问题
    Jython中文乱码问题
    多线程之生产者消费者模式
  • 原文地址:https://www.cnblogs.com/jlxuqiang/p/3428066.html
Copyright © 2011-2022 走看看