十二周

第十二周作业#

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/3235
我在这个课程的目标是 掌握二级指针的概念,以及指针数组的应用;掌握单向链表的概念和操作(建立、增加、删除、修改、遍历)
这个作业在那个具体方面帮助我实现目标 了解指针与函数的关系,掌握指针作为函数返回值;
参考文献 c语言程序设计第三版

6-1 计算最长的字符串长度 (15 分)###

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。

函数接口定义:

int max_len( char *s[], int n );
其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。

裁判测试程序样例:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXN 10
#define MAXS 20

int max_len( char *s[], int n );

int main()
{
    int i, n;
    char *string[MAXN] = {NULL};

    scanf("%d", &n);
    for(i = 0; i < n; i++) {
        string[i] = (char *)malloc(sizeof(char)*MAXS);
        scanf("%s", string[i]);
    }
    printf("%d\n", max_len(string, n));

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

4
blue
yellow
red
green

输出样例:

6

代码###

int max_len( char *s[], int n )
{
int i,L=-1;
for(i=0;i<n;i++){
int len=strlen(s[i]);
if(L<len){
L=len;
}
}
return L;
}

流程图###

截图###

6-2 统计专业人数 (15 分)###

本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:

struct ListNode {
    char code[8];
    struct ListNode *next;
};
这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。

函数接口定义:

int countcs( struct ListNode *head );
其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct ListNode {
    char code[8];
    struct ListNode *next;
};

struct ListNode *createlist(); /*裁判实现,细节不表*/
int countcs( struct ListNode *head );

int main()
{
    struct ListNode  *head;

    head = createlist();
    printf("%d\n", countcs(head));
	
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1021202
2022310
8102134
1030912
3110203
4021205
#

输出样例:

3

代码###

int countcs( struct ListNode *head )
{
 int num = 0;
 struct ListNode *p = head;
  while(p != NULL)
 {
 if(p->code[1] == '0' && p->code[2] == '2')
  num++;
 p = p->next;
 }
  return num;
}

流程图###

截图###

6-3 删除单链表偶数节点 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:

struct ListNode {
    int data;
    struct ListNode *next;
};

函数接口定义:

struct ListNode *createlist();
struct ListNode *deleteeven( struct ListNode *head );

函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。

函数deleteeven将单链表head中偶数值的结点删除,返回结果链表的头指针。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>

struct ListNode {
    int data;
    struct ListNode *next;
};

struct ListNode *createlist();
struct ListNode *deleteeven( struct ListNode *head );
void printlist( struct ListNode *head )
{
     struct ListNode *p = head;
     while (p) {
           printf("%d ", p->data);
           p = p->next;
     }
     printf("\n");
}

int main()
{
    struct ListNode *head;

    head = createlist();
    head = deleteeven(head);
    printlist(head);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1 2 2 3 4 5 6 7 -1

输出样例:

1 3 5 7 

代码###

struct ListNode *createlist()
{
 struct ListNode *head,*p1,*tail;
 int num;
 head=(struct ListNode *)malloc(sizeof(struct ListNode));
 p1=tail=(struct ListNode *)malloc(sizeof(struct ListNode));
 p1->next=tail->next=head->next=NULL;
 while(1)
 {
  scanf("%d",&num);
  if(num!=-1)
  {
   
   p1->data=num;
   if(head->next==NULL)
   {
    head->next=p1;
   }
   else 
   {
    tail->next=p1;
    tail=p1;
   }
   p1=(struct ListNode *)malloc(sizeof(struct ListNode));
   p1->next=NULL;
  }
  else 
  break;
 }
 return head;
}
struct ListNode *deleteeven(struct ListNode *head)
{
 struct ListNode *num,*p;
 p=head;
 num=head->next;
 while(num!=NULL)
 {
  if(num->data%2==0)
     {
      p->next=num->next;
  }
  else
  p=p->next;
  num=num->next;
 }
 return head->next;
}

流程图###

截图###

预习作业##

从第十三周开始,将进入课程设计阶段,请在本次作业中给出:###

1.所在小组想要开发的项目的名称和目标;###

暂时没定

2.项目主体功能的描述;###

等待后续

3.现阶段已做的准备工作;###

咨询学姐学长

4.小组成员名单和进度安排。(课程设计阶段:13-17周)###

苏小龙,杨湘辉,吴小波

学习进度条###

周/日期 这周所花时间 代码行 知识点简介 困惑问题
第三周 6小时 52行 数组的升级运用
第四周 4小时 64行 选择排序法 没什么
第五周 5小时 95行 字符串的基本概念及使用方法 没什么
第六周 4小时 116行 指针的定义及其运用 指针作为函数参数的作用
第七周 6小时 152行 指针、数组和地址之间的关系
第八周 4小时 230行 动态内存分配
第九周 3小时 142行 结构变量与结构数组
第十一周 2小时 23行 递归函数
第十二周 3小时 132行 指针进阶

学习感悟##

上课有点蒙,还需要课后补血###

posted @ 2019-05-17 22:40  三好青年。  阅读(111)  评论(0编辑  收藏  举报