zoukankan      html  css  js  c++  java
  • 结构的学习

    一、视频学习

    1.观看视频:3.2.1结构类型、3.2.2结构与函数、3.2.3 结构中的结构

    2.C语言代码

    ①视频代码列表

     ②书本9.1输出平均分最高的学生信息代码

     

     ③书本9.2学生成绩排序代码

     

     ④书本9.3修改学生成绩代码

     

     3.手写笔记

     

     

     

     4.遇到的问题

    问题:%i的含义

        结果:在 printf 格式串中使用时,没有区别。在 scanf 格式串中使用时%d 只与十进制形式的整数相匹配。而%i 则可以匹配八进制、十进制、十六进制表示的整数。例如: 如果输入的数字有前缀 0(018、025),%i将会把它当作八进制数来处理,如果有前缀0x (0x54),它将以十六进制来处理。

    问题:视频中结构中的结构数组代码,不清楚结构体变量和结构体数组直接的关系

                   #include<stdio.h>
                   struct point {
                   int x;
                   int y;
                    };
                   struct rectangle {
                   struct point p1;
                   struct point p2;
                    };
                    void printrect(struct rectangle r) {
                    printf("<%d,%d>to<%d,%d> ",r.p1.x,r.p1.y,r.p2.x,r.p2.y);
                    }
                    int main(int argc,char const *argv[]) {
                    int i;
                    struct rectangle rects[]= {{{1,2},{3,4}},{{5,6},{7,8}}};
                    for(i=0;i<2;i++)printrect(rects[i]);
                     }

    结果:编译运行后发现{1,2}为rects[0](结构数组)中p1(结构)的x、y成员,{3,4}为rects[0](结构数组)中p2(结构)的x、y成员,同理{5,6},{7,8}分别是rects[1](结构数组)中p1(结构)的x、y成员和rects[1](结构数组)中p2(结构)的x、y成员。故结构体变量可以作为结构体数组的元素。

    二、PTA中遇到的问题

    1、问题:PTA2-1对于以下结构定义:struct { int len; char *str;}*p;++p->str中的++加在________
                      A指针str上   B. 指针p上   C. str所指的内容上   D.以上均不是

          结果:->的优先级比++ 所以++p->str结果就是 (p->str)=(p->str)+1

          可能答案:A

    2、问题:PTA2-3有如下定义

                   struct student{
                   char name[10];
                   int age;
                   char gender;
                   }std[3], *p=std;
                  则以下各输入语句中错误的是:
                 A.scanf("%d" ,&(*p) .age );
                B.scanf("%c" ,&std[0] .gender);
                C.scanf("%c" ,&(p->gender));
                D.scanf("%s" ,&std.name);

    结果:选项A中“&(*p).age”代表的是std[0]age的地址,是正确的,选项B也是正确的,选项C先用指针变量引用结构型的成员name,然后取它的地址,也是正确的,选项D中的“std.name"是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员“name”。

    可能答案:D

     3、特别注意点:结构数组不同于一般数组,相同类型的结构数组间可以相互赋值。

  • 相关阅读:
    使用sshpass方式实现ssh自动登陆
    MySQL高可用负载均衡
    linux 查看文件夹下的文件个数(当前目录的文件数)
    centos6.5 rsync+inotify实现服务器之间文件实时同步
    Linux shell之数组
    Shell脚本 $0, $#, $*, $@, $?, $$等变量说明
    Linux输出重定向>和>>区别
    EXCEL操作实用学习笔记
    mysql的学习笔记-视图
    mysql学习笔记-索引
  • 原文地址:https://www.cnblogs.com/zsj123/p/12594448.html
Copyright © 2011-2022 走看看