杨佳琴

数组

0.展示PTA总分(0----2)

1.本章学习总结(3分)

1.1 学习内容总结

数组中如何查找数据,有哪些做法

  1. 折半查找法:针对有序数
  2. 顺序查找法:其执行的操作从数据序列中的第1 个元素开始,从头到尾依次逐个查找,直到找到所要的数据或搜索完整个数据序列。顺序查找主要针对少量的、无规则的数据。

数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法

输入数据
for(遍历数组)
   if(a[i]==date)
   index=i找到插入位置
   for(i=index;i<n;i++)将该位置以后的数据往后移一位
end for
输出更改后的数组

数组中如何删除数据,这个有多种做法,请一一展示。

  1. 覆盖删除:从要删除的数开始到数组末尾,让数组前一位等于后一位,即数组左移,直接覆盖要删除的数字,还要考虑数组下标的特别情况。
  2. 当有重复数字时可以调用辅助数组,时间和空间转换。

数组中目前学到排序方法,主要思路?

  1. 冒泡排序法:有n个数,则循环n-1趟,a[i]和a[i+1]比较。
  2. 选择排序法:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。

数组做枚举用法,有哪些案例?

枚举法:https://blog.csdn.net/wq3028/article/details/76204690】

哈希数组用法,目前学过哪些案例,举例展示。

哈希数组用法:https://blog.csdn.net/weixin_30577801/article/details/94830390?utm_medium=distribute.pc_feed_404.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase&depth_1-utm_source=distribute.pc_feed_404.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecas

字符数组、字符串特点及编程注意事项。

  1. 数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。
  2. 字符串常量就是用双引号括起来的字符序列,即一串字符,它有一个结束标志'\0'。字符串的有效长度就是有效字符的个数。
    (1). 将字符串存入数组时,由于它有一个结束符'\0',数组长度至少是字符串的有效长度+1。如果数组长度大于字符串的有效长度+1,则数组中除了存入的字符串,还有其他内容,即字符串只占用了数组中的一部分。
    (2). 注意事项: 输入字符串时,需要事先设定一个输入结束符。一旦输入它,就表示字符串输入结束,并将输入结束符转换成字符串结束符'\0'。

2.PTA实验作业(7分)

2.1 题目名1(3分)


思路:1.跳过开头的空格
2. 遇到单词的第一个字母计数加一并跳过一个单词的其他字符。
3. 在跳过一个单词的其他字符是的时候,要判断句子有没有结束。
4. 单词之间有多个空格的话,多于不计
我的代码:
同学的:

#include<iostream>
int main()
{
	char str[1001];
	gets(str);
	int count=0;
	int i=0;
	while(str[i]==' ') //跳过开头的空格
		i++;
	
	while(str[i]!='\0')  //"\0"是结束标识符 
	{
		if(str[i]!=' ')
		{ 
			count++;
			while(str[i]!=' ') //跳过一个单词的其他字符
			{
				if(str[i]=='\0')  //判断句子有没有结束,这句很重要,漏掉后出现严重错误, 
				break;
				i++;	
			}
		}
		else              //如果单词之间有多个空格的话,多于不计 
		{
			while(str[i]==' ' )
				i++;	
		}
	}
	std::cout<<count<<'\n';
	return 0;
}

我是请教室友才完成的,代码简单但容易出错。也容易忽略掉一些步骤。
同学的代码思路很清晰,也容易明白,过程都比较清晰,注释也清楚,值得我学习。

2.2 题目名2(2分)

阅览室题目·

和超星视频的比较

超星视频:定义一个二维数组,存储借阅记录。定义多个数组。数据处理时,分装一个函数来实现功能。
2.3 题目名3(2分)
2.3.1 伪代码

定义flag 
输入字符串
for (i = 0 to str[i] != '\n' do
 (第一处为第一个字符是正负号时)
  end if
  if(如果是数字或者小数点的话判断下一位是否是小数点或者数字)
  end if
  else if(负数的判断 前一位是数字还是其他符号)
  else if(正数的判断 数字前一位是不是‘(’)
end for

2.3.2 代码截图
还没有写出来,同学的代码

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	char s[50];
	cin >> s;
	int len = strlen(s),flag = 0;
	for(int i = 0; i < len; i++){
		if((s[i] >= '0' && s[i] <= '9') || s[i] == '.'){
			if((s[i + 1] >= '0' && s[i + 1] <= '9') || s[i + 1] == '.')cout << s[i];
			else cout << s[i] << "\n";
		}
		else if(s[i] == '-' || s[i] == '+'){
			if(s[i - 1] >= '0' && s[i - 1] <= '9')cout << s[i] << "\n" ;
			else cout << s[i];
		}
		else cout << s[i] << "\n";
	}
	return 0;
} 

posted on 2020-12-13 22:25  长安&  阅读(143)  评论(0编辑  收藏  举报

导航