第五周作业

这次作业属于哪个课程 C语言程序设计ll
这个作业要求在哪里 (https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825)
我在这个课程的目标是 复习文件巩固冒泡排序法和字符型函数以及学习用字符串编程
这个作业在哪个具体方面帮助我实现目标 进一步了解二维数组以及关于字符串的一些函数
参考文献 (https://wenda.so.com/q/1371549524065170) (https://wenda.so.com/q/1458200285723342)

第四周预习作业

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

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

输入格式:
输入给出一行字符。

输出格式:
在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

1.实验代码

#include<stdio.h>
int main ()
{
  int count=0,i=0;
  char str[1000];
  gets(str);    //输入字符
     while(str[i]==' ') //跳过开头的空格  
        i++;  
      while(str[i]!='')   //循环到时结束
    {  
      if(str[i]!=' ')  
      {   
          count++;  
          while(str[i]!=' ') //跳过一个单词的其他字符  
          {  
          if(str[i]=='')  //如果循环到,跳出循环  
            break;  
            i++;      
          }  
      }  
        else  
      {  
            while(str[i]==' ')  
                i++;      
        }  
    }  
    printf("%d
",count);
    return 0;
}

2.实验设计思路:

流程图:

先输入字符串 ,为空格时跳过且i+1 ,后一个循环条件为循环到时结束
如果不为空格则count++,为空格则i++

需注意事项:

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

错误截图:

问题:我开始没有考虑以空格结尾和全空格的情况
解决办法:我换了一种输入字符串的方式 然后添加了 if(str[i]=='') break; i++

4.运行结果截图:

第五周基础作业

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

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

1.pta实验代码:

#include<stdio.h>
#include<string.h>
int main(void)
{
	char input[21][11] = { '' };  //定义足够的数组空间
	char t[11]={''};
	int i=0,j=0;
	while(1) {             //循环测试一直为真
		scanf("%s",input[i]);     //输入英文单词
		if (input[i][0]=='#')   //以#作为输入结束标志
			break;
		i++;
	}
	input[i][0]='';
	int len=i;        //len为输入单词个数
	for(i=0;i<len;i++)
	{
		for(j=1;j<len-i;j++)                     //strlen为计算字符串长度的库函数名
		{
			if(strlen(input[j-1])>strlen(input[j]))  //直到碰到第一个字符串结束符''为止,然后返回计数器值
			{
				strcpy(t, input[j-1]);  //把后一个所指由NULL结束的字符串复制到前一个所指的数组中
				strcpy(input[j-1],input[j]);
				strcpy(input[j],t);
			}
 		}
	}
	for(i=0;i<len;i++)
		printf("%s ",input[i]);
 
	return 0;
}

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

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
	FILE*fp;
	char input[21][11] = { '' };  //定义足够的数组空间
	char t[11]={''};
	int i=0,j=0;
	if((fp=fopen("F:\第五周基础作业f505-Yangling.txt","r+"))==NULL)
    {
        printf("File open error!
");
        exit(0);
    }
	while(1) {             //循环测试一直为真
		scanf("%s",input[i]);     //输入英文单词
		fprintf(fp,"%s
",input[i]);
		if (input[i][0]=='#')   //以#作为输入结束标志
			break;
		i++;
	}
	input[i][0]='';
	int len=i;        //len为输入单词个数
	for(i=0;i<len;i++)
	{
		for(j=1;j<len-i;j++)                     //strlen为计算字符串长度的库函数名
		{
			if(strlen(input[j-1])>strlen(input[j]))  //直到碰到第一个字符串结束符''为止,然后返回计数器值
			{
				strcpy(t, input[j-1]);  //把后一个所指由NULL结束的字符串复制到前一个所指的数组中
				strcpy(input[j-1],input[j]);
				strcpy(input[j],t);
			}
 		}
	}
	for(i=0;i<len;i++){
		printf("%s ",input[i]);
	    fprintf(fp,"%s ",input[i]);
}
		if(fclose(fp)){
        printf("Can not close the file!
");
        exit(0);
  }
    
	return 0;
}

2.实验设计思路:

流程图:

设计思路:
先定义足够的数组空间 然后用while语句输入英文单词,
且以#作为输入结束标志
接着用for循环比较字符串长度,直到碰到第一个字符串结束符''为止
最后按字符串长短输出

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

我在网上查找了strlen以及strcpy函数的用法

注意事项:
可以用二维数组来输入单词数量及长度

4.运行结果截图:



第五周预习题

选择题:


二、学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的题目
3/4-3/9 6小时 89 新建文件进行读写 二位数组子数组的最大值的求和
3/10-3/15 8小时 156 二维数组的运用 二位数组子数组的最大值的求和
3/16-3/22 10小时 120 用二维数组求最大值和鞍点 冒泡法排序
3/23-3/29 6小时 56 进一步了解一维数组以及字符串的一些简单用法 求二维数组的最大子数组是矩形的

三、学习感悟

复习文件巩固冒泡排序法和字符型函数以及学习用字符串编程

原文地址:https://www.cnblogs.com/lyx1314/p/10621391.html