第五周作业1

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 要求我们掌握二维数组,可以更好的运用它
我在这个课程的目标是  学懂C语言,会编程一些简单的小应用
这个作业在那个具体方面帮助我实现目标  这个作业让我学懂了二维数组的运用
参考文献
https://blog.csdn.net/mathew_leung/article/details/80382098

 

 

 

 

第四周预习作业

统计一行文本的单词个数

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5 

 

1)代码

    

#include<stdio.h>
#include<string.h>
int main()
{
  int i,n,c=0;
  char a[1000];
  gets(a);
  if(a[0]==' ')
    c=0;
  else
    c=1;
  for(i=0;a[i]!='\0';i++)
  {
    
    if(a[i]==' ' && a[i+1]!=' ' && a[i+1]!='\0')//计算单词字数
    {
         c++;
    }
  }
  printf("%d\n",c);
  return 0;
}

 

2)流程图

       

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

      问题:char a[]的储存值取小了,导致运行超时

     解决办法:因为a[]的储存值越大越好,取较大的储存值

4)运行结果截图

     

 

 

 

 

第五周基础作业

英文单词排序

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

 

1)代码


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    FILE * fp;
    char a[21][11];
    char b[11];
    int j,k,d,i=0;
    if((fp=fopen("C:\\safemon\\Xinea.txt","w+"))==NULL)//打开文件 
    {
        printf("Flie open error!\n");
    } 
    while(1){   //输入字符串到‘#’结束
      scanf("%s",a[i]);
      fprintf(fp,"%s\n",a[i]);//把数据从屏幕输入到文件里 
      if (a[i][0]=='&')//我学号最后一位数字是1;1+37的ASCII字符是&
        break;
      i++;
    }
    a[i][0]='\0';
fprintf(fp,"\n");
for (k=0;k<i-1;k++) //用的是选择排序法 { d=k; for(j=k+1;j<i;j++) { if(strlen(a[j])<strlen(a[d])) //函数strlen()用来计算字符串长度 { d=j; } } strcpy(b,a[d]); //函数strcpy()用来把数组a中的字符串复制给数组b strcpy(a[d],a[k]); strcpy(a[k],b); } for(k=0;k<i;k++)//输出储存在数组b中的字符串 printf("%s ",a[k]); fprintf(fp,"%s ",a[k]);//把数据输入到文件里 if(fclose(fp))//关闭文件 { printf("Can not close the file!\n"); exit(0); } return 0; }

 

  

2)流程图

    

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

     问题:开始时我写的是:b=a[d]  a[d]=a[k] a[k]=b,导致编译错误

     解决办法:查了百度说赋值是无效的,因为即使不发生错误,之后的程序还是会访问在结构体内的数组也就是原来数组的内容 ,

                    可以用函数strcpy(),复制外部数组的值到结构体中的数组里;

4)运行结果截图

 

 

 

 

第五周预习题

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;
}

 

 

 

第五周挑战题

       由上周的求数组的最大子数组和,我们可知它的最简单的原型是求一维数组中的最大值。那么基于这个启发,我们可以把问题从二维数组转化为一维数组来求最大数组。

 

 

 

结对编程

1)结对编程的感悟

       结对编程让我们相互分享各自的观点,互相学习编程技巧;还可以让我们互相监督,不容易偷懒

2)结对编程碰到的问题

    我们对第四周的预习题思路不一样,无法统一意见;最后还是相互退让

       

 

 



  第二周 第三周 第四周 第五周

字数

548 661 1145  1242
代码行数 37 55 100  54

 

 

 

 

 

 

 

 

学习进度条
日期 花的时间 行数页码 学到的知识 日期的疑惑
3/1-3/7 4个小时 148-155

数组的定义与运用

3/9-3/15 4个小时 298-303

文件定义和文件数据的处理

3/18-3/22 4个小时 155-165

一维数组的排序方法

二维数组的运用

3/23-3/28 四个小时  166-172  字符串的储存方法,和字符串的运用  将字符串改成十进制输出





学习总结
这周的pta作业相比相对与上周的作业少了一些,难度也少了一些,上周的预习题老师稍微讲了一点,认真写的话可以做出来;但这周的基础题有难度,这周的基础题令我有成就感的是,经过我参考别人的编程学会了一个新的函数strcpy(),并运用到这周的基础题上了。

     

 

posted @ 2019-03-27 20:08  ¥...Star  阅读(287)  评论(0编辑  收藏  举报