2019春第五周作业
这个作业属于哪个课程? | C语言程序设计Ⅱ |
这个作业的要求在哪? | https://edu.cnblogs.com/campus/zswxy/MS/homework/2829 |
我在这个课程的目标是 | 能使用字符串进行程序设计 |
这个作业在哪个具体方面帮我实现目标 | 新的知识点,新的算法 |
参考文献 | 《C语言程序设计》, |
第四周预习题
7-1 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
1.实验代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,len,num;
char zf[1000];
gets(zf);
len =strlen(zf);
if (zf[0]==' ')
num=0;
else
num=1;
for(i=0;i<len-1;i++)
{
if(zf[i]==' '&&zf[i+1] !=' ')
num++;
}
printf("%d",num);
return 0;
}
2.设计思路:
具体思路:题目要求统计一行文本的单词个数,即输出文本中所出现的空格数,而单词数就是空格数=1。
3.遇到的问题及解决方法
此题老师再上课时当作例题讲解过,所以基本也没什么问题,也不明白" ' "这样连接的算一个单词,然后就是对字符型的输入,处理等方面还比较生疏,不知道怎样应用。
4.运行结果截图
第五周预习题
1.预习内容
指针变量的含义:指针是用来存放内存地址的变量,使用指针可间接访问内存和操纵地址。
如何对指针变量进行赋值?
假设有定义:int i, *p;则p=&i;需注意的是:指针变量被赋的值是地址。
2.作业截图
2.1 此题考察的是指针定义的正确写法,此题翻阅书上的知识可得正确答案。
2.2 此题考查的是指针的定义,指针是用来存放地址的。
2.3 在此题中,int m, n = 5, *p = &m就是定义 p为指向 int 类型变量 m的指针,若需满足要求m=n,则可以句定义 p 为指向 int 类型变量 n的指针,所以选B。
2.4 这是指针变量的定义,指针是用来存放内存地址的变量。
2.5 p=&a;使指针变量p指向a,此时p=10,所以后面的a=p+b=10+1=11。
2019春第五周作业——基础(计算机)
7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#
作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
实验代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
FILE * fp;
int i,m,j,k,d;
char a[21][11];
int b[21],c[21];
if((fp=fopen("C:\gonghan.txt","a+"))==NULL){
printf("File open error!
");
exit(0);
}
for(i=j=0;;i++){
j=0;
for(;;j++){
fscanf(fp,"%c",&a[i][j]);
if(a[i][j]=='
'){
break;
}
}
b[i]=j;
c[i]=i;
if(a[i][j-1]=='#'){
break;
}
}
k=i;
for(i=0;i<k-1;i++){
m=i;
for(j=i+1;j<k;j++){
if(b[m]>b[j]){
m=j;
}
}
j=b[m];
d=c[m];
c[m]=c[i];
c[i]=d;
b[m]=b[i];
b[i]=j;
}
for(i=j=0;k>0;k--,i++){
for(j=0;j<b[i];j++){
fprintf(fp,"%c",a[c[i]][j]);
printf("%c",a[c[i]][j]);
}
fprintf(fp," ");
printf(" ");
}
if(fclose(fp)){
printf("Can not close the file!
");
exit (0);
}
return 0;
}
2.设计思路:

题目要求把单词按长度从小到大排序后输出,所以我选择的是利用上周所学的选择排序法来解决此题。先把单词存入数组中,注意在输入时,
输入回车键即代表结束这一行的输入,数组b[i]代表这一行单词中字母个数,c[i]代表这一行中的单词个数。当输入#时结束。然后用选择排序法将所有单词按字母个数进行排序输出。
实验过程中遇到的问题和解决方法:

此题是靠编程伙伴黄诺诚完成的,在过程中我的代码出现了很多错误,有些代码用int 定义是不行的,需要用char定义,数组的赋值运用strcpy进行字符串的赋值(复制),我自己的理解,我在代码中进行下标的位置互换,导致错误。然后和黄诺诚讨论后,用了他的代码。
运行结果截图:
学习进度条:
学习感悟:作业之前的准备真的十分重要,临阵磨枪真的不好使,太烧脑了,所以以后要多在草稿纸上多写写,多画画。还有就是看题太重要了,你必须要看懂题目的意思,题目到底是在要求我们干什么,不然也很容易进入误区。
结对编程感悟:编程伙伴又改了,不知道怎么说,这次的伙伴是自行组织的,所以以后的效果会比之前要好的多吧。