第五周作业
2019年春季学期第五周作业
本周作业头:
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824 |
我在这个课程的目标是 | 学好排序方法和字符数组 |
这个作业在那个具体方面帮助我实现目标 | 学习了字符数组的用法 |
参考文献 | C语言程序设计 |
7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#
作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
1)、实验代码
#include <stdio.h> #include <string.h> int main() { FILE *fp; int i,j,n=0; char str [20] [20],t [20],str1 [20];</span><span style="color: #0000ff;">if</span> ((fp = fopen (<span style="color: #800000;">"</span><span style="color: #800000;">C:\\zhangwei.txt</span><span style="color: #800000;">"</span>,<span style="color: #800000;">"</span><span style="color: #800000;">r+</span><span style="color: #800000;">"</span>)) ==<span style="color: #000000;"> NULL) { printf (</span><span style="color: #800000;">"</span><span style="color: #800000;">File open error!\n</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">while</span>(<span style="color: #800080;">1</span><span style="color: #000000;">) { fscanf (fp,</span><span style="color: #800000;">"</span><span style="color: #800000;">%s</span><span style="color: #800000;">"</span><span style="color: #000000;">,str1); </span><span style="color: #0000ff;">if</span> (str1[<span style="color: #800080;">0</span>]==<span style="color: #800000;">'</span><span style="color: #800000;">-</span><span style="color: #800000;">'</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { strcpy (str[n],str1); n</span>++<span style="color: #000000;">; } } </span><span style="color: #0000ff;">for</span> (i=<span style="color: #800080;">0</span>; i<n-<span style="color: #800080;">1</span>; i++<span style="color: #000000;">) </span><span style="color: #0000ff;">for</span>(j=<span style="color: #800080;">0</span>;j<n-<span style="color: #800080;">1</span>-i;j++<span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (strlen (str [j] ) > strlen (str [j+<span style="color: #800080;">1</span><span style="color: #000000;">] )) { strcpy (t,str [j] ); strcpy (str [j] ,str [j</span>+<span style="color: #800080;">1</span><span style="color: #000000;">] ); strcpy (str [j</span>+<span style="color: #800080;">1</span><span style="color: #000000;">] ,t); } } fprintf(fp,</span><span style="color: #800000;">"</span><span style="color: #800000;">\n</span><span style="color: #800000;">"</span><span style="color: #000000;">); </span><span style="color: #0000ff;">for</span> (i=<span style="color: #800080;">0</span>; i<n; i++<span style="color: #000000;">) { fprintf(fp,</span><span style="color: #800000;">"</span><span style="color: #800000;">%s </span><span style="color: #800000;">"</span><span style="color: #000000;">,str [i] ); } </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (fclose (fp)) { printf (</span><span style="color: #800000;">"</span><span style="color: #800000;">Can not close the file! \n</span><span style="color: #800000;">"</span><span style="color: #000000;"> ); } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">0</span>;</pre>
2)、设计思路
3)、本题调试过程碰到的问题及解决方法
一开始不知道为什么要定义两个数组,只定义了一个写不出来问了室友才知道要定义两个数组
然后再输入文件的时候日常出现打开失败
4)、运行结果图
第四周预习作业
上周博客园写过了就直接搬过来了
7-1 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
(1)实验代码
#include<stdio.h> #include<string.h> int main() { char a[1000]; gets(a); int m, i, j; m = strlen(a); if (a[0] == ' ') j = 0; else j = 1; for (i = 0; i<m - 1; i++) { if (a[i] == ' ' /**/&& a[i + 1] != ' ') j++; } printf("%d\n", j); return 0; }
(2)设计思路
(3)遇到的问题和解决方法
这道题也是一开始看完下周要学的东西后没想明白怎么动笔,后面问了下pyz然后百度到了,他看完后就教了我,但我一开始写的时候还是有问题后面才改过来
(4)实验截图
预习题:
下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。 (2分)
int *p 的含义是 (2分)
如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 () 。 (1分)
变量的指针,其含义是指该变量的( )。 (1分)
有如下程序段
int *p,a=10,b=1;
p=&a; a=*p + b;
执行该程序段后,a的值是 (2分)
对于下列程序,正确的是() 。 (2分)
void f(int *p) { *p = 5; } int main(void) { int a, *p;
a = 10; p = &a; f(p); printf(“%d”, (*p)++); return 0;
}
执行如下程序段,打印输出的内容是: (2分)
#include <stdio.h>
void fun (int c, int *d) {
c++;
(*d)++;
}
int main ( ){
int a=5, b=9;
fun(a, &b);
printf("%d, %d", a, b);
return 0;
}
在看完了助教发的 指针教学的视频后 来写的预习题,在预习过程中学到了一些简单的指针知识比如指针变量只能存放地址,在用之前要进行赋值但写起题目来还是有点懵逼几道题都不太懂问的pyz
二、学习进度条
周/日期 |
这周所花的时间 |
代码行数 |
学到的知识点简介 |
目前比较迷惑的问题 |
3/3-3/9 |
四个小时 |
32 |
这周学习了文件 |
不太理解文件的运用和一些符号的意义导致打代码进度很慢 |
3/10-3/15 |
四个小时 |
130 |
这周虽然没上课但完成了上周的一部分挑战作业,还预习了二维数组并且完成了一个题目 |
对于二维数组还是不太理解 |
3/16-3/22 |
五小时 |
153 |
这周学习了二维数组还学习了两种排序方法 |
对于两种排序方法的不同还不太清楚 |
3/23-3/29 |
六小时 |
67 |
学习了字符数组的概念和简单运用, |
在写程序的时候总是在输入文件的时候出现问题,无法在文件中打印出想要的结果 |
三、学习感悟
这周学习了字符串的排序,还预习了有关指针的一些基础的东西,在完成作业的时候也发现了自己的不足,还是要多自学。
结对编程感想
这周进行的结对编程是我自己找的伙伴是我的室友,我们一起讨论问题同时一起解决问题,有助于大家一起学习