本周作业头
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/3238 |
我在这个课程的目标是 | 学会c语言,能用其编写出实用程序 |
这个作业在那个具体方面帮助我实现目标 | 指针进阶(二级指针的概念,指针与函数的关系) |
参考文献 | 《 C语言程序设计II》 |
基础作业
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 max=0;
int i,j;
for(i=0;i<n;i++){
if(strlen(s[max])<strlen(s[i])){
max=i;
}
}
return strlen(s[max]);
}
设计思路:
题目要求输出最长字符串的长度,先定义各变量并令max=0,for循环,不断比较max大小并用大值替换max的值,最后输出max值即可。
运行结果截图:
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;
}
设计思路:
读取二、三位数字,数字为02的累加即可,最后输出结果。
运行结果截图:
学习进度统计:
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
3/1-3/8 | 30h | 142 | 定义文件,文件读写及导入(出) | 流程图不会画 |
3/9-3/15 | 25h | 152 | 自学 | 暂无 |
3/16-3/22 | 14h | 63 | 一、二维数组数据的处理和输出 | 无法读懂复杂代码 |
3/23-3/29 | 34h | 188 | 头文件string.h、字符串 | 不懂string.h的含义 |
3/30-4/5 | 21h | 143 | 指针及其定义,指针实现函数调用返回多个值 | 指针的内存与什么有关 |
4/6-4/13 | 26h | 164 | 指针、数组、地址之间的关系,以及改变主调函数的值 | 改变主调函数的值如何实现 |
4/14-4/21 | 25h | 172 | 指针进阶 | 本周作业的难题 |
4/22-4/29 | 27h | 164 | 结构变量、结构数组的定义与使用,结构指针的概念与基本操作 | 结构数组、结构指针的使用 |
5/1-5/19 | 67h | 375 | 二级指针的概念,以及指针数组的应用,指针与函数的关系,指针作为函数返回值 | 挑战题八皇后等实在不会 |
学习感悟:
本周挑战题难度对我来说过大,实在无法独自完成。
预习题:
1.所在小组想要开发的项目的名称和目标;
名称:冲塔
目标:小游戏,一层一层的闯关。
2.项目主体功能的描述;
在电脑上控制人物的移动,解锁门来吃经验,获得增益性攻击和防御。
3.现阶段已做的准备工作:
没有确定的创意了,有目标了,有人员了,学习基础知识逐渐提升。
4.小组成员名单和进度安排。(课程设计阶段:13-17周)
黄诺诚(组长)谢思敏 夏泽宇