2019春第五周作业

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825
我在这个课程的目标是 进一步了解字符串以及二维数组的运用
这个作业在那个具体方面帮助我实现目标 二维数组的运用与字符串结合起来使用
参考文献 strcpy的运用(http://blog.sina.com.cn/s/blog_5f82a1060100kz0p.html) strlen的意思(https://wenda.so.com/q/1458200285723342)
一、基础作业
=========
第四周预习作业

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

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

1.实验代码

#include<stdio.h>
int main()
{
	char ch;
	int flag=0;
	int count=0;
	while((ch=getchar())!='
')
	{
		if(ch!=' '&&flag==0)
		{
			count++;
			flag=1;
		}
		else if(ch==' ')
		{
			flag=0;
		}
	}
	printf("%d
",count);
	
	return 0;
}

2.实验设计思路:
流程图:

3.本题遇到的问题及解决办法:
问题:当时在没学这个回文的时候不知道怎么来表示字符串
解决:在学完之后就知道然后表示字符串了将预习题写了
4.运行结果截图:

第五周基础作业

7-1 英文单词排序 (25 分)

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

1.实验代码

#include<stdio.h>
#include<string.h>
int main(void)
{
	char str[100][100];
	char num[100];
	int i = 0, j = 0,temp ;
	while (1) {
		scanf("%s", str[i]);
		if (str[i][0] == '#')
			break;
		    i++;
	}
	str[i][0] = '';
	temp = i;
	for (i = 0; i < temp; i++)
	{
		for (j = 1; j < temp - i; j++)
		{
			if (strlen(str[j - 1]) > strlen(str[j]))
			{
				strcpy(num, str[j - 1]);
				strcpy(str[j - 1], str[j]);
				strcpy(str[j], num);
			}
 		}
	}
	for (i = 0; i < temp; i++)
		printf("%s ", str[i]);
 
	return 0;
}

博客园要求输入文件代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
	FILE * fp;
	char str[100][100];
	char num[100];
	int i = 0, j = 0,temp ;
	
	if((fp=fopen("F:\xueshengke3.txt","w+"))==NULL)
	{
        printf("File open error!
");
        exit(0);
    }
	while (1) {
		scanf("%s", str[i]);
		fprintf(fp,"%s
",str[i]);
		if (str[i][0] == '&')//我的学号是结尾是1加上37的ASCII字符是&
			break;
		    i++;
	}
	str[i][0] = '';
	temp = i;
	for (i = 0; i < temp; i++)//运用上次的挑战题的冒泡循环
	{
		for (j = 1; j < temp - i; j++)
		{
			if (strlen(str[j - 1]) > strlen(str[j]))//这一部分我是参考百度的
			{
				strcpy(num, str[j - 1]);
				strcpy(str[j - 1], str[j]);
				strcpy(str[j], num);
			}
 		}
	}
	for (i = 0; i < temp; i++){
		printf("%s ", str[i]);
		fprintf(fp,"%s ",str[i]);
    }
    if(fclose(fp)){
        printf("Can not close the file!
");
        exit(0);
    }
	return 0;
}

2.实验设计思路:
流程图:

3.本题遇到的问题及解决办法:
问题:

出现段错误,弄了很久
解决:是因为字符串是用%s表示而我用的是%d
问题:

运行时间长了
解决:在定义数组时我定义的单元格少了就会出现超时的结果,将数组定义的更大
问题:

在输出是%s后没有空格
解决:在%s的后面加上空格
4.运行结果截图:

二、预习作业



三、学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
3/9-3/15 5小时 39 在文件中读,写 文件指针
3/15-3/18 5小时 81 二维数组 数组怎么定义位置
3/18-3/22 6小时 选择排序法、二分查找法 出现一些段错误不知道怎么搞
3/22-3/29 5小时 68 字符串数组的定义及其运用二维数组的使用 复杂的字符串不会写

四、学习感悟

字符串需要用到ASCII码,学习到了字符串的使用,文件的调用更加熟练!

原文地址:https://www.cnblogs.com/angel-520/p/10621995.html