zoukankan      html  css  js  c++  java
  • 作业6

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

    • 什么是结构?什么情况下使用结构管理数据?
    • #是一种允许程序员把一些数据分量聚合成一个整体的数据类型
    • 什么是结构定义和结构变量?
    • #在程序部首定义结构类型,每一个数组元素都是一个结构变量
    • 什么是结构的成员,如何初始化和引用结构成员的值?
    • #成员则代表每个数据的基本信息项,    在定义时对其赋初值  使用结构成员操作符“.”来引用结构成员
    • 结构变量如何作为函数参数使用?
    • 用结构变量作为函数的参数和返回值
    • 什么是结构数组,如何定义和使用结构数组?
    • #具有相同的变量组织起来就形成了结构数组
    • 什么是结构指针,如何利用结构指针操作结构成员?
    • #就是指向结构类型变量的指针              
    • #将数组的首地址传递给结构指针,经过参数传递之后,在函数中就可以通过指针对结构数组肿中的数据进行间接访问操作了

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

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

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

    1)  下面定义结构变量的语句中错误的是 ___,为什么? D错误  因为自行命名一个结构名,它必须是一个合法的c标识符。stu 错误

    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 ); 输出结果是 ___, 为什么? B

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

          3) 分析下面的程序片段,能打印出字母 M 的语句是 ___, 为什么?。        C 因为固定格式为“结构数组名.结构成员名”

    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 成员的正确引用是 ___, 为什么?

     B 因为正确结构是  用*p访问结构成员  或者用指向运算符->访问指针指向的结构成员
               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;
    }
    复制代码
  • 相关阅读:
    C语言程序设计习题参考答案
    C语言程序设计 数据类型转换
    C语言程序设计 练习题参考答案 第二章
    计算机等级考试二级C语言考试复习五要点
    计算机等级考试二级快速复习法
    C语言程序设计 辗转相除法
    ReportViewer (RDLC) 中的换行符是什么
    关于axis2中对soapfault的处理的一个小bug
    java多线程中利用优先级来分配CPU时间的实例
    马云演讲
  • 原文地址:https://www.cnblogs.com/sally959/p/3434524.html
Copyright © 2011-2022 走看看