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

    2019春季第五周作业

    这个作业属于哪个课程 C语言程序设计ll
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824)
    我在这个课程的目标是 希望能多了解一维字符数组及字符串的用法,以后碰见类似的题目时能够不出错误的做出来
    这个作业在哪个具体方面帮助我实现目标 这个作业让我大概了解了使用字符串编程,并且对一维数组有了更深入的了解
    参考文献 https://www.jb51.net/article/37456.htm)

    一、 统计一行文本的单词个数

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

    输入格式:

    输入给出一行字符。

    输出格式:

    在一行中输出单词个数。

    输入样例:

    Let's go to room 209.
    

    输出样例:

    5
    

    (1)实验代码

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i,j,x;
    	char a[1000];
        gets(a);        //从标准输入文件读入一个字符串到字符数组a,输入字符串以回车结束 
        x=strlen(a);    //计算字符串长度x 
        
        if(a[0]==' ')
    	    j=0;
        else
    	    j=1;
        for(i=0;i<x-1;i++)
        {
    	    if(a[i]==' ' && a[i+1]!=' ')
    		    j++;
        }
        printf("%d
    ",j);
        return 0; 
    }
    

    (2)设计思路

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

    问题1:定义字符串数组的时候不太清楚a[100]与a[1000]的区别,定义成a[100]就是错的
    解决方法:自己查了资料,然后问了班上的大佬

    问题2:不太清楚get char与gets的区别
    解决方法:翻书看,get char表示从标准输入文件读入一个字符,而gets表示读入一串字符

    (4)运行结果截图

    二、 英文单词排序

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

    输入格式:

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

    输出格式:

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

    输入样例:

    blue
    red
    yellow
    green
    purple
    #
    

    输出样例:

    red blue green yellow purple 
    

    (1)实验代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    main()
    {
    	FILE*fp;
        char a[20][10],m[20],x[10];
        int i,j,n=0;
        
        if((fp=fopen("C:\Users\Administrator\Desktop\zhangman.txt","r+"))==NULL)              //打开文件
        {
        	printf("File open error!
    ");
        	exit(0);
    	}
        while(1)
    	{
    		fscanf(fp,"%s", x);
        	scanf("%s",x);                    //输入字符串数组
        	
        	if(x[0]=='%')
    	    {
        		break;
        	}
            else
    		{
                strcpy(a[n],x);                     //把数组x的值赋给数组a[n]  
    			n++;
            }
        }
        for(i=0;i<n-1;i++)                       //计算字符串长度并进行比较 
        	for(j=1;j<n;j++)
    	    {
                if(strlen(a[j])<strlen(a[j-1]))
    		    {
                   strcpy(m,a[j-1]);
                   strcpy(a[j-1],a[j]);
                   strcpy(a[j],m);
                }
            }
        for(i=0;i<n;i++)                         //输出字符串数组
    	{
            printf("%s ",a[i]);
        }
        fprintf(fp,"
    ");
        
        for(i=0;i<n;i++)
        {
        	fprintf(fp,"%s ",a[i]);
    	} 
          
        if(fclose(fp))                                        //关闭文件
        {
        	printf("Can not close the file!
    ");
        	exit(0);
    	}
        return 0;
    }
    

    (2)设计思路

    (3)本题调试过程中遇到的问题及解决方法

    问题1:在写代码的时候没有定义二维数组,导致一直答案错误
    解决方法:一直运行还是没发现哪里错误,然后搜了百度,后来问的班上的大佬

    问题2:第一次 遇到strcpy,不太清楚它的含义及用法
    解决方法:查资料,问了大佬,大概了解了它的用法

    (4)运行结果截图

    三、预习题

    (1)预习的主要内容

    预习了指针的第1小节密码开锁,程序中定义了变量x来存放密码,再定义一个特殊的指针变量p,用于存放变量x的地址。这样既可以通过变量名x直接得到密码值,也可以在不知道变量名的情况下,通过指针变量p所存放的x的地址间接找到密码值。地址和指针是计算机中的两个重要概念,在程序运行过程中,变量或者程序代码被储存在以字节为单位组织的存储器中。在C语言中,如果定义了一个变量,在编译时就会根据该变量的类型给它分配相应大小的内存单元。指针声明符在定义指针时被使用,说明被定义的那个变量是指针。定义多个指针变量时,每一个指针变量前面都必须加上。指针的类型和它所指向变量的类型必须相同。只能将一个指针的值赋给另一个相同类型的指针。

    (2)完成情况截图

    (3)预习中存在的疑惑

    疑惑1:不太能区分内存单元的内容和内存单元的地址

    疑惑2:把指针用到程序中还有很多地方不懂

    疑惑3:对于指针的基本运算也不是很清楚。

    四、学习进度条

    周/日期 这周所花的时间 代码行数 学到的知识点简介 目前比较迷惑的问题
    2/25-3/3 三天 45 数组的认识及用法 数组长度的理解
    3/4-3/10 两天 37 编写程序时处理文件 fscanf与fprintf的具体用法
    3/11-3/17 三天 112 二维数组的使用及文件插入 二维数组的用法、上三角的判断及文件的处理
    3/18-3/24 两天 113 选择排序法、二分查找法、二维数组的引用与矩阵 不清楚选择排序法和冒泡排序法的区别
    3/25-3/31 两天 78 判断回文、一维字符数组的用法、使用字符串编程 使用字符串编程

    五、学习感悟

    本周学习了:
    判断回文,其中学的包括了一维字符数组,一维字符数组用于存放字符型数据,它的定义、初始化和引用与其他类的一维数组一样;另外,还学习了字符串及使用字符串编程,字符串常量就是用一对双引号括起来的字符序列,C语言将字符串作为一个特殊的一维字符数组来处理。
    目前对使用字符串数组不是特别清楚。

    感悟:宝剑锋从磨砺出,梅花香自苦寒来。

    六、结对编程感想

    每周三晚自习是我们结对编程的时间,我的搭档每次都来的,但是我们基本不讨论,都是自己做自己的,对于我们来说讨论有点扰乱自己的思路,好不容易想出来的题目只要对方说句话就有可能忘了,所以,我们一般都是写完作业后才讨论或者就瞎聊,结对编程对我们来说好像没有什么作用,不知道对其他同学有没有什么效果。

  • 相关阅读:
    LeetCode OJ 107. Binary Tree Level Order Traversal II
    LeetCode OJ 116. Populating Next Right Pointers in Each Node
    LeetCode OJ 108. Convert Sorted Array to Binary Search Tree
    LeetCode OJ 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode OJ 98. Validate Binary Search Tree
    老程序员解Bug的通用套路
    转载 四年努力,梦归阿里,和大家聊聊成长感悟
    转载面试感悟----一名3年工作经验的程序员应该具备的技能
    Web Service和Servlet的区别
    关于spring xml文件中的xmlns,xsi:schemaLocation
  • 原文地址:https://www.cnblogs.com/zmzhang/p/10614975.html
Copyright © 2011-2022 走看看