第五周作业

2019年春季学期第五周作业

这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
我在这个课程的目标是 学会判断回文,在选择排序的基础上更进一步
这个作业在哪个具体方面帮助我实现目标 这次作业在同学的帮助下学会了一些以前不知道的知识(自定义的运用)
参考文献 C语言程序设计(第3版)

7-1 英文单词排序 (25 分)

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple

输出样例:

red blue green yellow purple

要求:(1)通过以自己名字命名的文件输入英文单词,(2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.”)(3)在不删除原有内容的情况下,将排序后的单词输出到文件。

实验代码:

#include
int main (void)
{
  char a[21][11];
  char b[11];
  int i,j,m;
  FILE *fp;
  char tmp[11];
  if((fp=fopen ("E:\\Swallow.txt","a+"))==NULL){
    printf("File open error!\n");
    exit (0);
  }
  for(i=0;i<21;i++)
  {
    fscanf(fp,"%s ",&a[i]);
    if(a[i][0]==')')
      break;          
  }
  for(m=1;mstrlen(a[j+1]))
    {
           strcpy(tmp,a[j]);
           strcpy(a[j],a[j+1]);
           strcpy(a[j+1],tmp);
    }
    for(int n=0;n

设计思路:

第五周作业_第1张图片
第五周作业_第2张图片
第五周作业_第3张图片
第五周作业_第4张图片

遇到的问题及解决方法:

问题:定义变量时只定义了一个数组,对另外一个数组不理解
解决方法:询问同学知道了数组b是接收的一个数组;

问题:结尾没有正确的接收输出
解决方法:仔细审题然后运用一个for语句和printf语句;

问题:在写博客的时候对pta什么的文件的更改有些问题,很多例如scanf都会忘记fscanf
解决方法:自己多注意细节;

实验运行图:

第五周作业_第5张图片
第五周作业_第6张图片
第五周作业_第7张图片

第四周预习作业

7-1 统计一行文本的单词个数 (15 分)

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

实验代码:

#include 
int main()
{
    char a;
    int cnt=0,count=0;
    while(1){
        scanf("%c",&a);
        if(a=='\n'){    
            break;
        }
        else if(a!=' '){
            if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')  {
                count++;   
                cnt++;
            }
                while(1){
                    scanf("%c",&a);
                    if(a==' '||a=='\n'){ 
                        break;
                    }
                    cnt++;
                }
            if(cnt>1){
                if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')  
              count++; 
            }
            if(a=='\n'){
                break;
            }
        } 
    }
    printf("%d",count);
    return 0;
}

设计思路:

第五周作业_第8张图片
第五周作业_第9张图片
第五周作业_第10张图片
第五周作业_第11张图片

遇到的问题及解决方法:

问题:一开始对单词的判断不会
解决方法:自己查资料就用了这一复杂的方法

问题:代码用了很多循环结构,一开始自己做的时候会循环不清楚了
解决方法:画流程图,询问同学解决这一问题

运行图:

第五周作业_第12张图片
第五周作业_第13张图片

2-1

下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是(B)。 (2分)

A.int a, x = a;
B.int a,
x = &a;
C.int *x = &a, a;
D.int a, x = a;
作者: 张泳
单位: 浙江大学城市学院

2-2

int *p 的含义是 (2分)(B)

A.p是一个指针, 用来存放一个整型数
B.p是一个指针, 用来存放一个整型数据在内存中的地址
C.p是一个整型变量
D.以上都不对
作者: 李廷元
单位: 中国民用航空飞行学院

2-3

如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 (B) 。 (1分)

A.m = p;
B.
p = *&n;
C.m = &n;
D.m = **p;
作者: 张泳
单位: 浙江大学城市学院

2-4

变量的指针,其含义是指该变量的(B )。 (1分)

A.值
B.地址
C.名
D.一个标志
作者: 张泳
单位: 浙江大学城市学院

2-5

有如下程序段

int p,a=10,b=1;
p=&a; a=
p + b;
执行该程序段后,a的值是 (2分)(B)

A.12
B.11
C.10
D.编译出错
作者: 李廷元
单位: 中国民用航空飞行学院

2-6

对于下列程序,正确的是(A) 。 (2分)

void f(int p)
{
p = 5;
}
int main(void)
{
int a, *p;

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

  return 0;

}
A.5
B.6
C.10
D.11
作者: 张泳
单位: 浙江大学城市学院

2-7

执行如下程序段,打印输出的内容是: (2分)(C)

include

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;
}
A.5, 9
B.6, 10
C.5, 10
D.6, 9

预习总结:

  知道了地址可以体现指向关系,指针变量只能定向的指向定义时所规定类型的变量,指针变量定义后变量值是不确定的,所以应用前必须先赋值;指针变量只能存放地址,不能将一个常数赋给指针变量;*的结合性为从右往左,&的结合性为从左往右。

遇到的疑惑:有关指针的运算的题目,还是有点搞弄不明白。

学习进度条

周/日期 这周所花的时间 代码行数 学到的知识点 目前比较疑惑的问题
2/25-3/3 三天 45 学习数组及用法 数组的长度问题
3/4-3/10 三天 40 文件的处理问题 文件指针的用法
3/11-3/15 四天 50 对数组的遍历 关于遍历的范围还有不理解的地方
3/16-3/22 四天 80 用一维数组和二维数组编程 冒泡算法的运用
3/23-3/29 三天 65 学会规范的画流程图,认识了字符串 进制之间的转换的代码

学习感悟

总体来说还是自我感觉比以前强些了,但是仍然有许多自己不满意的地方,不要放弃,我就不信我搞不明白了。加油!!!

结对编程感想

因为我的搭档没有来,所以我是要向淇同学告诉我的,他很厉害,能够告诉我很多一开始我自己不知道的知识,希望能够通过结对编程学到更多。

转载于:https://www.cnblogs.com/hxy2017826779/p/10610590.html

你可能感兴趣的:(第五周作业)