2019春第五周作业

这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 2019年春季学期第五周作业
我在这个课程的目标是 我希望能够通过学习C语言的知识,编写程序
这个作业在哪个具体方面帮助我实现目标 这个作业让我知道了字符串的基本概念及使用方法,理解了字符串与一维字符数组的区别、字符串的存储以及字符串的操作方法。明白了如何正确使用字符串进行程序设计。
参考文献 字符串 菜鸟教程C 标准库 - <string.h> 《C语言程序设计》指针

一、本周完成的作业

题目1. 第四周预习题

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:
输入给出一行字符。

输出格式:
在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

1).实验代码

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

int main(void)
{
  int i, count, len;
  char ch[1000];
  
  gets(ch); 
  
  len = strlen(ch);
  
  if(ch [0] == ' ')
    count = 0;
  else
    count = 1;
    
  for(i = 0;i < len - 1;i ++)
  {
    if(ch [i] == ' ' && ch [i+1] != ' ')
    count ++;
  }
  printf("%d", count);
  
  return 0;
}

2). 设计思路

3).本题调试过程碰到问题及解决办法

遇到的问题:由测试点提示的错误信息就可以得出,字符串的长度不够
解决的办法:该题老师上课以给我们看过了代码与流程图,按老师方法可以很流畅的写出来,但是我想尝试一下是否可以把 字符串长度设小一点节省内存空间,结果发现100还是太小了不行。

4).运行结果截图

题目2. 第五周作业—基础

7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

新增要求:
基础作业
PTA:英文单词排序
要求:
1.在PTA上完成作业
2.博客总结需要将PTA上代码做以下修改:(1)通过以自己名字命名的文件输入英文单词,(2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.”)(3)在不删除原有内容的情况下,将排序后的单词输出到文件。

1).实验代码

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

int main(void)
{
  FILE * fp = fopen("C:\\Users\\LILI\\Desktop\\LX\\lixuan.txt", "a+");
  
  int i=0, j, k;
  char  zf[21][11];
  
  while(1)
  {
  	fscanf(fp,"%s", &zf[i]);

  	if(zf[i][0] == ',')
  	    break;
  		i++;
  }
  
  fprintf(fp,"\n") ;
  for(j = 1;j <= 10;j ++)
  {
  	for(k = 0;k < i;k++)
  	{
  		if(strlen(zf[k]) == j)
  		 fprintf(fp,"%s ", zf[k]);
    
	  }
  }
   fclose(fp);
   
   return 0;
}

2). 设计思路

3).本题调试过程碰到问题及解决办法

遇到的问题:答案错误,空集正确是因为什么都没有输出就是空集,所以应该是输出的地方有问题
解决的办法:搭档看出了我双循环的判断时逻辑有错误,应该将判断字符长度放在循环里。

4).运行结果截图

题目3.第五周作业—预习

1).预习的主要内容

指针:
1.什么是指针
2.什么是指针变量,并且如何定义,和给其赋值
3.如何引用指针变量

2).完成情况截图



3).预习中存在的疑惑

1. 2-3:指针可以直接存储一个需要输出的数吗?
2.指针的具体使用还有哪些?

题目4. 挑战作业:

继续挑战第二周的挑战作业:返回整数数组中最大子数组的和,本周,我们要求二维数组的子数组必须是矩形的。
具体要求参看邹欣老师博客 现代程序设计作业2

1). 设计思路

第一步 输入二维数组
第二步 循环进行相邻几行几列相加进行比较大小
第三步 再循环比较大小的同时也不断将最大的几行几列的地址存储在另一个数组中
第四步 输出最大矩形子数组的和

二、学习进度条

周/日期 这周所花的时间 代码行数 学到的知识点简介 目前比较迷惑的问题
3/2-3/8 20h 300行 数组,指针的大致意义,文件入门 数组串的使用,指针
3/9-3/15 25h 400行 二维数组,文件与数组的结合运用 双for循环的流程图(再不上课,光自学感觉太艰难了)
3/16-3/22 22h 450行 一维数组,二维数组,几种数组排序法 字符串使用
3/23-3/29 20h 350行 字符串的定义及其使用 指针的具体使用

三、学习感悟

心得:

(1) 学习内容:
1. 字符串与一维字符数组的区别
2. 字符串的存储以及字符串的操作方法
收获:自从上周自己完全靠自己的思路写出了一个程序后,发现自己比上个学期懵懵懂懂编程的状态好多了,现在比较能够明确的知道自己的思路,也可以更快的找出一些错误。本周学会了字符串及其的使用。
(2) 难点:挑战题太难了,其中的子数组的范围到底是指什么。

解决的方法:自行百度了一下,但还是没有完全理解其意思。

四、结对编程

1.结对编程过程

有了上次结对编程后的磨合,懂得了结对编程应该怎样进行,本周除了挑战题,作业难度都不是特别大,预习题自己独立完成,基础题由我先说出自己思路,搭档修改我的思路并提供新思路引导我完成。

2.结对编程的优缺点

优点:1.在编程时有了更多探讨的过程,而不是一个人死钻
2.为编程提供了更多的解答思路
3.在代码出错而怎么都找不到错误时不会一个人自我崩溃,而是有个人会帮你一起找出问题
缺点:能够面对面结对的时间太少了。

完成作业的消耗时间:12h

posted @ 2019-03-29 14:06  LILI6  阅读(425)  评论(4编辑  收藏  举报