zoukankan      html  css  js  c++  java
  • 第五周作业

    这次作业属于哪个课程 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 进一步了解一维数组以及字符串的一些简单用法 求二维数组的最大子数组是矩形的

    三、学习感悟

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

  • 相关阅读:
    dsp1
    数字信号处理中的常用方法
    近一星期的学习计划4-8 到 4-15
    近一个月的学习计划!4-8
    离散时间与系统-1
    python _列表
    2016-1-19
    fushioncharts 使用教程要点---使用JSON数据方式
    使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题
    MVC之路随记3--Html辅助方法
  • 原文地址:https://www.cnblogs.com/lyx1314/p/10621391.html
Copyright © 2011-2022 走看看