第五周编程总结

 

本次作业所属课程

C语言程序设计||

本次作业要求

https://edu.cnblogs.com/campus/zswxy/MS/homework/2829

我在这个课程的目标是

学会数组与文件之间的转化

本次学习在哪些具体方面帮组我实现目标

学会画流程图

参考文献

C primer plus第六版

 

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

1)代码截图

#include<stdio.h>
#include<string.h>
int main(void)
{
  int i,len,num;
  char zf[1000];
  
  gets(zf);
  len = (zf);
  
  if(zf[0]==' ')
  num = 0;
  else 
  num = 1;
  
  for(i = 0; i < len - 1; i++)
  {
    if(zf[i]==' '&&zf[i+1]!=' ')
    num++;
  }
  printf("%d",num);

return 0;
}

2)设计思路

 

 

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

问题一:这题还没写老师就告诉我们答案了,不过我还是了解一下strlen函数的使用方法:计算字符串的长度,但是不包括'\0'在内

4)运行结果截图

 

题目二:统计一行文本的单词个数

1)代码截图

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    int i,j,len;
    char a[20][10],b[10];
    FILE *fp;
    
    if((fp=fopen("E:\\wangweihan.txt","a+"))==NULL) 
{
    printf("File open error!\n");
    exit(0);
}
    for(i = 0 ; ; i++)
{
    fscanf(fp,"%s",a[i]);
    if(a[i][0]=='#')
    break;
    i++;
    }
    a[i][0] = '\0';
    len = i; 
    for(i = 0 ; i < len ; i++)
    {
         for(j = 1 ; j < len-i ; j++) 
        {
           if(strlen(a[j-1]) > strlen(a[j]))
            {
            strcpy(b,a[j]);
            strcpy(a[j],a[j-1]);
            strcpy(a[j-1],b);
           }
       }
    }
    fprintf(fp,"\n");
    for(i = 0 ; i < len ; i++)
    {
    fprintf(fp,"%s ",a[i]);
    }
    if(fclose(fp))
   {
    printf("Can not close the file!\n");
    exit(0);
   }
    return 0;
}

2)设计思路

 

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

问题一:把代码改成文件格式还是不会

问题一的解决方案:借鉴了别人的代码把我的代码改成了文件格式,然后在百度里找到了strcpy函数的使用方法:src字符数组复制到dest数组中,如果dest数组本身有数据,会把src里的数据全部复制到dest中,如果dest中有数据小于src地址长度的将会被覆盖,而大于src长度的将保留,结合这些资料,我写出了我的代码

4)运行结果截图

 

题目三:第五周预习题

A 、单选题7

2-1、下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是( )。 (2分)
2-2 、int *p 的含义是 (2分)
2-3、如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 () 。 (1分)
 
2-4、变量的指针,其含义是指该变量的( )。 (1分)
 
2-5、有如下程序段
int *p,a=10,b=1;
p=&a; a=*p + b;

执行该程序段后,a的值是 (2分)

2-6 、对于下列程序,正确的是() 。 (2分)
void f(int *p)
{
      *p = 5;
}
int main(void)
{
      int a, *p;

      a = 10;
      p = &a;
      f(p);
      printf(“%d”, (*p)++);

      return 0;
}
 
2-7、执行如下程序段,打印输出的内容是: (2分)
#include <stdio.h>
void fun (int c, int *d) {
    c++;
    (*d)++;
}
int main ( ){
    int a=5, b=9;
    fun(a, &b);
    printf("%d, %d", a, b);
    return 0;
}

 

 预习题总结与心得:通过自学指针以及这几个题目,我大致了解了数组的作用,指针贮存的是一个地址,相比数组而言,指针是间接的访问。

目前存在的疑惑:指针的调用

 

题目四:挑战题

 简单的来说,不会写,以下是我对这个题目的一些拙见

本次挑战题在上周的基础上增加了矩阵的要求,我认为可以将数组的字符串长度先算出来,然后存到数组里面,然后使用if语句进行判断,最后依次输出吧。

四、学习进度条

时间

这周所花时间

代码行数

学到的知识简介

目前比较迷惑的问题

第一周

5小时

80

初步了解数组

数组的引用

第二周

6小时

200

指针的了解

完全没听懂老师上课在讲什么,继续努力

第三周

7小时

200

文件与数组的使用

没看到代码运行后文件的内容发生改变

第四周

9小时

120

冒泡法,选择排序法

冒泡法不会

第五周

9小时

120+

字符型数组

把代码改成文件格式

 

五、累积代码行数及博客字数

六、结对编程感想

对于这次结对编程,我感觉在互相讨论的过程中加深了自己对以前知识的理解,同时又学会了一些新的知识,感觉结对编程还是可以促进编程能力的

 总结:对于这次作业,感觉·PTA上面的题目较博客里的题目要简单很多,通过助教的思路以及新的函数解决PTA的题目并不是特别困难

posted @ 2019-03-29 17:45  ღ阿ོ茶꧔ꦿ༊  阅读(216)  评论(1编辑  收藏  举报