2019春第五周作业

作业头

| 1 | 2 | |
| -------- | -----: |
| 课程名称 | c语言程序设计2|
| 作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825 |
| 我的课程目标 | 我希望通过c语言的学习,实现输出英文单词个数,对单词长度进行排列 |
|这个作业在哪个方面帮助我实现目标|用字符串的存储与运算对英文单词进行计数与排序|
|参考文献|课本c语言程序设计以及谭浩强版c语言程序设计 |

第四周预习作业:

7-1 统计一行文本的单词个数 (15 分)

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

代码:

#include<stdio.h>
int main()
{
    char string[1000];                          
    int i,count=0,word=0;                
    char c;
    gets(string);
    for(i=0;((c=string[i])!='\0');i++)
        if(c==' ') word=0;
        else if(word==0)
        {
            word=1;
            count++;
        }
    printf("%d\n",count);
    return 0;
}

设计思路:

错误及改进:
无,根据谭浩强版c语言程序设计p165页改进即可。
答案截图:

英文单词排序

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple

输出样例:

red blue green yellow purple 

代码:

# include <stdio.h>
# include <string.h>
int main ()
{
	int word;
	int i,j;
	char a[21][11];
	char b[11];
	for(i=0;;i++)
	{
		scanf("%s",a[i]);
		if(a[i][0]=='#')
		break;
	}
	a[i][0]='\0';
	word=i;
	for(i=0;i<word;i++)
	{
		for(j=1;j<word-i;j++)
		{
			if(strlen(a[j-1])>strlen(a[j]))
			{
				strcpy(b,a[j-1]);
				strcpy(a[j-1],a[j]);
				strcpy(a[j],b);
			}
		}
	}
	for(i=0;i<word;i++)
	{
		printf("%s ",a[i]);
	}
	return 0;
}

文件代码:

# include <stdio.h>
# include <string.h>
# include <stdlib.h>
int main ()
{
	FILE*fp;
	int word;
	int i,j;
	char a[21][11];
	char b[11];
	if((fp=fopen("D:\\yxn.txt","r+"))==NULL)
    {
        printf("File open error!\n");
        exit(0);
    }
	for(i=0;;i++)
	{
		fscanf(fp,"%s",a[i]);
		if(a[i][0]=='\'')
		break;
	}
	a[i][0]='\0';
	word=i;
	for(i=0;i<word;i++)
	{
		for(j=1;j<word-i;j++)
		{
			if(strlen(a[j-1])>strlen(a[j]))
			{
				strcpy(b,a[j-1]);
				strcpy(a[j-1],a[j]);
				strcpy(a[j],b);
			}
		}
	}
	fprintf(fp,"\n");
	for(i=0;i<word;i++)
	{
		fprintf(fp,"%s ",a[i]);
		printf("%s ",a[i]);
	}
	if(fclose(fp)){
        printf("Can not close the file!\n");
        exit(0);
    }
	return 0;
}

设计思路:

错误及解决:

放到c++上发现是少了空格,然后在%s后加空格。
因为我学号+37得到的符号是 ' 所以要加个\不然就编译错误了。

答案:

第五周预习作业:







预习主要内容:

指针变量的定义;指针的基本运算;指针变量初始化。

疑惑:

对于指针的运算有些头晕,对指针和地址的关系也有点难理解。

学习进度:

感悟:

沉迷作业,日渐变胖。另外strlen和strcpy还没接触过结果基础作业要用,很难受。

结对编程感受:

思路还是打不开,还得多听听助教讲解。

posted @ 2019-03-29 17:25  YXN99  阅读(197)  评论(0编辑  收藏  举报