第九周作业

 第九周三道题
作业属于课程 C语言程序设计
作业要求 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018
课程哪方面帮我实现目标 结构变量、数组和指针的基本概念 定义 使用方法
参考文献 《C语言程序设计》
7-2 考试座位号 (15 分)
 

每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数 N(≤),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数 M(≤),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。

输入样例:

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

输出样例:

3310120150912002 2
3310120150912119 1

实验代码

#include<stdio.h>
struct student
    {
    char number[17];
    int snumber,knumber;
    };
    int main(void)
    {
        int i,j,a,b[1000],n;
        scanf("%d",&n);
        struct student s1[1000];
  
        for(i=0;i<n;i++)
        {
           scanf("%s%d%d",s1[i].number,&s1[i].snumber,&s1[i].knumber);
        }
       scanf("%d",&a);
 
       for(i=0;i<a;i++)
       {
           scanf("%d",&b[i]);
       }
 
       for(i=0;i<a;i++)
       for(j=0;j<n;j++)
       {
            while(b[i]==s1[j].snumber)
       {
            printf("%s %d ",s1[j].number ,s1[j].knumber);
            break;
       }
      }
 
return 0;
}
流程图

 开始题目不会  在百度上找到一个答案  弄懂思路之后 运行 发现超时,和结对编程的同学一起探讨 得到正确代码

7-1 一帮一 (15 分)
 

“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。

输入格式:

输入第一行给出正偶数N≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。

输出格式:

每行输出一组两个学生的姓名,其间以1个空格分隔。名次高的学生在前,名次低的学生在后。小组的输出顺序按照前面学生的名次从高到低排列。

输入样例:

8
0 Amy
1 Tom
1 Bill
0 Cindy
0 Maya
1 John
1 Jack
0 Linda

输出样例:

Amy Jack
Tom Linda
Bill Maya
Cindy John

实验代码
#include<stdio.h>
struct student
{
     char name[50];
     int num;
    };
    int main (void)
   {
        int n,flag[50];
        scanf("%d",&n);
        struct student S1[50];
 
       for(int i=0;i<n;i++)
       {
            scanf("%d %s",&S1[i].num,&S1[i].name);
       }
      for(int i=0;i<n/2;i++)
      for(int j=n-1;j>=n/2;j--)
      {
          if(flag[j]!=1&&S1[i].num!=S1[j].num)
      {
      flag[j]=1;
      printf("%s %s ",S1[i].name,S1[j].name);
      break;
      }
      }
 
     return 0;
}
流程图
 

题目1. 6-1 按等级统计学生成绩 (20 分)

本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

函数接口定义:

int set_grade( struct student *p, int n );

其中p是指向学生信息的结构体数组的指针,该结构体的定义为:

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。

1).实验代码

int set_grade( struct student *p, int n )
     {
    int i,count=0;
    char A,B,C,D,grade;

     for(i=0;i<n;i++){
     if(p[i].score>=85&&p[i].score<=100){
     p[i].grade='A';
     }
     else if(p[i].score>=70&&p[i].score<=84){
     p[i].grade='B';
     }
     else if(p[i].score>=60&&p[i].score<=69){
     p[i].grade='C';
}
else{
     p[i].grade='D';
     count++;
}

}
return count;
}
 
流程图
运行结果

二、学习进度条

周/日期这周所花的时间代码行数学到的知识点简介目前比较迷惑的问题
3/2-3/8 10 300行 数组,指针的大致意义,文件 数组串指针
3/9-3/15 15 400行 文件 数组 for循环的
3/16-3/22 15 450行 数组,数组, 字符串  数组
3/23-3/29 10 350行 字符串的定义及其使用 指针的具体使用
3/30-4/5 20 340行 指针变量的定义,使用,初始化 使用指针实现函数调用返回多个值 指针
4/6-4/12 20 400行 ,理解指针、数组和地址之间的关系,指针和数组,结构体 结构体 数组
4/13-4/19 10 500行 常用字符串函数以及使用指针操作字符串的方法,掌握动态内存分配 数组 指针

三、学习感悟

心得:

(1) 学习内容:
 
1.  函数传递
2. 掌握结构指针的操作,
收获:
(2) 难点: 指针,结构体数组的混合使用
捋清楚每个变量之间的关系

四、结对编程

1.结对编程过程

两个人在一起总是能想出方法 在讨论的过程中 能够找到方向  慢慢的觉得题目不是很难能找到感觉

原文地址:https://www.cnblogs.com/JCclub/p/10776379.html