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行 | 字符串的定义及其使用 | 指针的具体使用 |