第五周作业

本周作业头:

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
我在这个课程的目标是 学会排序,能解决复杂的打乱顺序的问题
这个作业在那个具体方面帮助我实现目标 这次作业在同学的帮助下学会了一些以前不知道的知识
参考文献 参考文献

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

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

实验代码:

#include <stdio.h>
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;
}

设计思路:

正确截图:

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

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

实验代码:

#include<stdio.h>
#include<string.h>
int main(void)
{
	char input[21][11] = { '\0' };
	char snap[11] = { '\0' };
	int i = 0;
	while (1) {
		scanf("%s", input[i]);
		if (input[i][0] == '#')
			break;
		i++;
	}
	input[i][0] = '\0';
	int len = i;
	int j = 0;
	for (i = 0; i < len; i++)
	{
		for (j = 1; j < len - i; j++)
		{
			if (strlen(input[j - 1]) > strlen(input[j]))
			{
				strcpy(snap, input[j - 1]);
				strcpy(input[j - 1], input[j]);
				strcpy(input[j], snap);
			}
 		}
	}
	for (i = 0; i < len; i++)
		printf("%s ", input[i]);
	return 0;
}

设计思路:

遇到的问题及解决方法:

1定义变量时只定义了一个数组,对另外一个数组不理解
解决方法:询问同学知道了数组b是接收的一个数组;
2结尾没有正确的接收输出
解决方法:仔细审题然后运用一个for语句和printf语句;
3在写博客的时候对pta什么的文件的更改有些问题,很多例如scanf都会忘记fscanf
解决方法:自己多注意细节;

实验截图:

预习题

2-1

下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是(C)。 (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 的含义是(B) (2分)
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的值是(B) (2分)
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

执行如下程序段,打印输出的内容是: (C)(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;
}

A.5, 9
B.6, 10
C.5, 10
D.6, 9
作者: 周强
单位: 青岛大学

预习主要内容

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

学习感悟

感觉自己很差啊学什么都不是很好的能够学入,感觉自己缺少一点对学习的认真态度。

结对编程感想

在昨天之前我的同伴都无法有时间与我一起编程,所以觉得一起编程挺好的可以促进同学们的交流与同学们各种思想能够融合在一起。

学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
2/25-3/3 三天 45 数组的认识及用法 数组长度的理解
3/4-3/10 四天 38 文件的处理问题 文件指针的用法
3/11-3/16 三天 52 二维数组的使用及文件插入 二维数组的用法、上三角的判断及文件的处理
3/17-3/24 三天 102 用一维数组和二维数组编程 冒泡算法的运用
3/25-3/29 三天 66 学会规范的画流程图,认识了字符串 进制之间的转换的代码
posted @ 2019-03-29 15:54  丁震  阅读(326)  评论(1编辑  收藏  举报