第五周编程总结
一、作业
这个作业属于哪个课程 | C语言程序设计ll |
---|---|
这个作业要求在哪里 | (https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824) |
我在这个课程的目标是 | 掌握字符(串)数组的相关知识 |
这个作业在哪个具体方面帮助我实现目标 | 这次作业让我大概了解了使用字符串编程,加强了进一步的学习 |
参考文献 | (https://www.jb51.net/article/37456.htm) |
预习题
7-1 统计一行文本的单词个数
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
1、实验代码
#include<stdio.h>
int main()
{
int n=0;
char a,m=' ';
while(a!='\n'){
scanf("%c",&a);
if(a==' '&&m!=' '||a=='\n'&&m!=' '){
n++;
}
m=a;
}
printf("%d",n);
return 0;
}
2、设计思路
3、本题调试过程碰到问题及解决办法:
问题如下:
1.以空格开头会算一个单词。
2.结尾没有空格所以最后一个单词没加。
解决办法:将if(a' '&&m!=' '){改为if(a' '&&m!=' '||a=='\n'&&m!=' '){,将第5行m改为m=' ',将11行改为m=a;,问题得以解决。
4、运行结果截图:
基础题
7-1 英文单词排序
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
输出样例:
red blue green yellow purple
1、实验代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main (void)
{
FILE*fp;
char ch[20][10],a[20];
int h,l,n;
if((fp=fopen("D:\\helei.txt","a+"))==NULL){
printf("File open error!\n");
exit(0);
}
while(1){
fscanf(fp,"%s", ch[n]);
if(ch[n][0]==','){
break;
}
n++;
}
for(h=0;h<n-1;h++)
for(l=0;l<n-1;l++)
{
if(strlen(ch[l])>strlen(ch[l+1]))
{
strcpy(a,ch[l]);
strcpy(ch[l],ch[l+1]);
strcpy(ch[l+1],a);
}
}
fprintf(fp,"\n",ch[h]);
for(h=0;h<n;h++)
{
fprintf(fp,"%s ",ch[h]);
}
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}
2、设计思路
3、本题调试过程碰到问题及解决办法:
根据提示以及运行结果,仔细检查代码后发现第14、15行中应为<n-1,否则循环会进行到字符为'\n'才结束,从而导致答案错误,修改后问题得以解决
4、运行将结果截图
预习题
(1)预习的主要内容
指针变量的含义:专门用来存放变量地址的变量,用来实现间接访问;
指针的定义:类型名 * 指针变量名;
指针变量的赋值:指针的赋值是地址,int *p=&i。
(2)完成情况截图
二、学习进度条
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
2/25-3/3 | 48h | 45 | 数组的认识及用法 | 数组长度的理解 |
3/4-3/10 | 36h | 37 | 编写程序时处理文件 | fscanf与fprintf的具体用法 |
3/11-3/17 | 46h | 55 | 定义文件,以及文件的导入导出和读写 | 二维数组的用法、上三角的判断及文件的处理 |
3/17-3/22 | 15h | 66 | 选择排序法、二分查找法 | 不清楚选择排序法和冒泡排序法的区别 |
3/25-3/29 | 56h | 74 | 判断回文,字符串的用法,预习了指针的用法 | 对于指针还是有许多不明白的地方 |
3、学习感悟
本周学习了判断回文,和一维字符数组和字符串的使用,字符串的学习还算简单,这一周对我而言还是有许多的提升,这周老师还主要给我们讲了流程图的画法,必须要还有清晰的思路,我们也要先将流程图画出来,这样有助于我们做题。还有这周预习了指针,这个还是有许多的问题。下周继续加油,坚持就是胜利!!!
4、结对编程感想
结对编程已经开始几周了,但是我们有人对于分组有些意见,有人觉得自己的队友懒,不想与其结对,也有一些人不熟悉,但是我人为结对还是很有必要的,因为只有结对才能发现自己发现不了的错误,这样才能有更大的提升,我希望我的队友可以更加的积极一点!!!