成人之美,进学有为——学历提升!

用户自己建立数据类型章节练习

用户自己建立数据类型章节练习
  • 题  数:12道
  • 已答人数:626人
  • 试卷提供:诚为径教育
题型介绍
简答题
简答题
    • 1、[简答题]

      定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

      查看答案
    • 2、[简答题]

      写一个函数 days,实现第1题的计算。由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。

      查看答案
    • 3、[简答题]

      编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。

      查看答案
    • 4、[简答题]

      在第3题的基础上,编写一个函数 input,用来输入5个学生的数据记录。

      查看答案
    • 5、[简答题]

      有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。

      查看答案
    • 6、[简答题]

      13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。

      查看答案
    • 7、[简答题]

      在例1

      #include<stdio.h>

      #include<stdlib.h>

      #define LEN sizeof(struct Student)

      struct Student

          {long num;

          float score;

          struct Student * next;

      };

      int n;

      struct Student * creat(void)//n为全局变量,本文件模块中各函数均可使用它

          {struct Student * head;//定义函数。此函数返回一个指向链表头的指针

          struct Student * p1, * p2;

          n = 0;

          p1=p2=(struct Student *)malloc(LEN); //开辟一个新单元

          scanf("%ld,%f",&p1->num,&p1->score);    //输入第1个学生的学号和成绩

          head=NULL;

          while(p1->num!=0)

              {n=n+1;

              if(n==1)head=p1;

                  else p2 -> next=p1;

              p2=p1;

              p1=(struct Student*)malloc(LEN);//开辟动态存储区,把起始地址赋给p1

              scanf("%ld,%f",&p1->num,&p1->score);//输入其他学生的学号和成绩

              }

              p2->next=NULL;

              return(head);

              }

              可以写一个main函数,调用这个creat函数:

              int main()

                  {struct Student *pt;    

                  pt=creat(); //函数返回链表第一个结点的地址

                  printf("\nnum:%ld\nscore:%5.1f\n",pt->num,pt->score); //输出第1个结点的成员值

                  return 0;

          };

      和例2

      # include <stdio. h>

      # include <stdlib. h>

      # define LEN sizeof(struct Student)

      struct Student //声明结构体类型 struct Studen

          {long num; 

          float score; t

          struct Student * next;

          };

      int n;//全局变量n

      void print (struct Student * head) //定义 print 函数

          {struct Student * p; //在函数中定义 struct Student 类型的变量

          printf("\nNow, These %d records are: \n" , n) ;

          p=head; //使p指向第1个结点

          if(head!=NULL) //若不是空表

              do

                  {printf("%ld %5. 1f\n" ;p->num, p->score) ;//输出一个结点中的学号与成绩

                  p=p>next;//p指向下一个结点

                  } while (p! =NULL);//当p不是“空地址”

      }

      的基础上,写一个函数del,用来删除动态链表中指定的结点。

      查看答案
    • 8、[简答题]

      写一个函数insert,用来向一个动态链表插入结点

      查看答案
    • 9、[简答题]

      综合例1#include<stdio.h>

      #include<stdlib.h>

      #define LEN sizeof(struct Student)

      struct Student

          {long num;

          float score;

          struct Student * next;

      };

      int n;

      struct Student * creat(void)//n为全局变量,本文件模块中各函数均可使用它

          {struct Student * head;//定义函数。此函数返回一个指向链表头的指针

          struct Student * p1, * p2;

          n = 0;

          p1=p2=(struct Student *)malloc(LEN); //开辟一个新单元

          scanf("%ld,%f",&p1->num,&p1->score);    //输入第1个学生的学号和成绩

          head=NULL;

          while(p1->num!=0)

              {n=n+1;

              if(n==1)head=p1;

                  else p2 -> next=p1;

              p2=p1;

              p1=(struct Student*)malloc(LEN);//开辟动态存储区,把起始地址赋给p1

              scanf("%ld,%f",&p1->num,&p1->score);//输入其他学生的学号和成绩

              }

              p2->next=NULL;

              return(head);

              }

              可以写一个main函数,调用这个creat函数:

              int main()

                  {struct Student *pt;    

                  pt=creat(); //函数返回链表第一个结点的地址

                  printf("\nnum:%ld\nscore:%5.1f\n",pt->num,pt->score); //输出第1个结点的成员值

                  return 0;

          };

      例2# include <stdio. h>

      # include <stdlib. h>

      # define LEN sizeof(struct Student)

      struct Student //声明结构体类型 struct Studen

          {long num; 

          float score; t

          struct Student * next;

          };

      int n;//全局变量n

      void print (struct Student * head) //定义 print 函数

          {struct Student * p; //在函数中定义 struct Student 类型的变量

          printf("\nNow, These %d records are: \n" , n) ;

          p=head; //使p指向第1个结点

          if(head!=NULL) //若不是空表

              do

                  {printf("%ld %5. 1f\n" ;p->num, p->score) ;//输出一个结点中的学号与成绩

                  p=p>next;//p指向下一个结点

                  } while (p! =NULL);//当p不是“空地址”

      }

      和第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插入的结点的数据。

      查看答案
    • 10、[简答题]

      已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。

      查看答案
    • 11、[简答题]

      有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点。


      查看答案
    • 12、[简答题]

      建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

      查看答案

诚为径教育为大家带来用户自己建立数据类型章节练习,有考试模式和练习模式可供选择,试卷可供下载,欢迎有需要的朋友前来做题!

关于我们 联系我们 用户协议 网站地图

版权所有:湖南晨润教育科技有限公司  出版物经营许可证:第4301042021097号