zoukankan      html  css  js  c++  java
  • 第五周总结

    2019春第五周作业

    这个作业属于哪个课程 C语言程序设计Ⅱ
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
    我在这个课程的目标是 能完全搞懂字符数组以及其用法,可以靠自己完成一些简单的或一些较复杂的程序编写
    这个作业在哪个具体方面帮助我实现目标 可以更深刻地接触字符串,还学会了字符数组用法,以及一些课外暂时还未接触的函数、用法等.
    参考文献 C语言程序设计(第3版);

    一、本周完成的作业

    题目1.统计一行文本的单词个数

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

    Let's go to room 209.
    

    输出样例:

    5
    

    1)、实验代码

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

    2)、设计思路

    3)、本题调试过程碰到的问题及解决方法

    无。

    4)、运行结果图

    题目2. 英文单词排序

    在开始这道题前,我先说一下从这道题中学到的之前不知道的相关知识,1.char[20] [20]:char str[20][20]相当于20个char str[20],只是把20个字符数组放在连续的内存当中,str[0][20],str[1][20]......str[19][20]. 2.#include<string>:在C++中用 #include <string>来导入标准库中的字符串类和相关操作,导入后才能使用string类.3.strcpy(str1,str2):字符串复制函数,将字符串2复制到字符串1.4.strlen:计算给定字符串的(unsigned int型)长度,不包括''在内.

    本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
    输入格式:
    输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
    输出格式:
    输出为排序后的结果,每个单词后面都额外输出一个空格。
    输入样例:

    blue
    red
    yellow
    green
    purple
    #
    

    输出样例:

    red blue green yellow purple 
    

    1)、PTA实验代码

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

    2)、设计思路

    3)、本题调试过程碰到的问题及解决方法

    如图,在多次尝试之后,终于有部分正确,此时指出问题是“ 最大数量,最长最短单词,逆序”,在这里出错可能是因为忽略了这种情况,然后就考虑当输入的是该种状况时该如何判断?自己的代码中是否可以判断?应该在哪里添加点东西可以包括改种情况?经过检查后,自己看不出应该怎么改,但我觉得问题是出在for循环结构那里。我就看了博客园里其他人的做法,发现跟自己的没什么出入,在for循环那里有不一样。仔细看过一遍后发现确实是自己少了一层。一开始我看了之后发现就算少了那一层也没什么影响吧,至少我认为表达的意思差不多吧。但我在自己的代码基础上加上那一层后,运行成功。虽然运行成功,但原理还是不晓得。我分别调试了一下两种代码,发现之前我的代码可以是可以,只是在一般情况时,若加上二层循环会更全面。

    4)、运行结果图

    博客园修改后

    1)、实验代码

    #include <stdio.h>
    #include <string.h>
    int main()
    {
    	FILE *fp;
        int i,j,n=0;
    	char str [20] [20],t [20],str1 [20];
        
        if ((fp = fopen ("C:\songguanhao.txt","r+")) == NULL) {
    		printf ("File open error!
    ");
    	}
        while(1)
    	{
        	fscanf (fp,"%s",str1);
        	if (str1[0]=='-') {
        		break;
        	}
            else {
            strcpy (str[n],str1);
            n++;
            }
        }
        for (i=0; i<n-1; i++) 
            for(j=0;j<n-1-i;j++) {
        	    if (strlen (str [j] ) > strlen (str [j+1] )) {
                   strcpy (t,str [j] );
                   strcpy (str [j] ,str [j+1] );
                   strcpy (str [j+1] ,t);
                }
            }
            fprintf(fp,"
    ");
        for (i=0; i<n; i++) {
            fprintf(fp,"%s ",str [i] );
        }
        if (fclose (fp)) {
    		printf ("Can not close the file! 
    " );
    	}
    	
        return 0;
    }
    

    3)、本题调试过程碰到的问题及解决方法

    4)、运行结果图

    题目3.预习题







    二、学习进度条

    周/日期 这周所花的时间 代码行数 学到的知识点简介 目前比较迷惑的问题
    3/2-3/8 三天六小时 50 1、定义、运用文件指针;2、如何打开、关闭文件3、如何读出指定文件中的数据;4、如何向指定文件中写入数据; 字符、字符串有什么区别?二者输入、输出有没有很大不同?什么才算字符串?什么算字符?在文件中二者有没有差别?
    3/9-3/15 四天三小时 180 1、运用二维数组解决问题,矩阵的判断;2、对一组数的所有子数组求和 如何在输出时利用数组的性质
    3/16-3/22 三天八小时 210 1、二维数组加深理解,二维数组与矩阵;2、选择排序法解决问题;3、二分查找法 二分查找法这周没练习,只是看看书上例题大致懂了,不知道真正应用时能否掌握。
    3/23-3/29 三天两小时 120 1、判断回;文2、字符数组的概念及其简单运用;3、一些简单的与字符数组相关的暂时没接触补充知识,一些函数,用法等。 在作业运用文件指针时,一开始总是出现从文件里输不出来结果,打印不出来,后来发现可能与自己输入时格式未搞好,本来不应该出现的空格出现了,导致打印不出来结果。文件指针还不是很熟练

    三、学习感悟

    本周作业中,用到了一些还没学到的与本节有关的小知识,个人感觉很有成就。我认为这就说明有时候还是应该多了解类似标准库函数的一些用法,能在编写代码时更简便,简洁,清晰。

    结对编程感想

    结对编程已将进行两周了,我认为结对编程确实有很大的优点。虽然我并没有带机子过去(哈哈,电脑着实不行),但在整个晚自习中,我也没有空闲一下,总会有同学来主动讨论,包括自己的结对队友,也包括其他同学。也许这样一来自己思考的就不足够了,但既然是结对编程,就是要一起讨论的。感觉,每周能有一个晚自习来讨论,作业就没有那么困难了。

  • 相关阅读:
    如何构建积木式Web应用
    ASP.NET 2.0 异步页面原理浅析 [1] [原]
    HybridDictionary 类
    datagrid自定义
    认识.NET的集合
    织梦 10060
    java.io.FileNotFoundException: E:\temp (拒绝访问。)
    引用与对象实例化
    C#中为DataGrid添加下拉列表框
    C#中使用指针
  • 原文地址:https://www.cnblogs.com/songguanhao/p/10605808.html
Copyright © 2011-2022 走看看