IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 周总结(第一周) -> 正文阅读

[C++知识库]周总结(第一周)

1.我的错题反思:

线性随机键盘、

/*?????? 思路解析:

先输入n,再一次输入第一个、第二个字符串,利用两个for循环,用第一个字符串对第二个字符串依次定位,依次存放再数组中,再依次累加前后项相减项,输出结果。*/

#include <stdio.h>

#include <string.h>

#include <math.h>

int main() {

int n;

char str[1000];……………………存放第一个字符串

char ch[1000];……………………存放第二个字符串

int num[100];…………………………存为定位的地址

int c;

int sum = 0;

int i, j, k, h, l;

scanf("%d", &n);

for (i = 0; i < n; i++) {

sum = 0;

l = 0;

F = 1;

scanf("%s", str);…………………………依次输入两个字符串

scanf("%s", ch);

for (j = 0; j < strlen(ch); j++)………………第二个字符串,用短的作为被定位者

?{

for (k = 0; k < strlen(str); k++)………………利用第一个字符串进行定位

?{

if (ch[j] == str[k])

{

num[l++] = k + 1;………………定位字符的位置,并保存。

}

}

}

(错误项,已改正)

for (h = 1; h < l; h++)………………从第一项开始,避免数组越界,跳过第一项开始。

?{

sum += abs(num[h] - num[h - 1]);

}

printf("%d\n", sum);

}

return 0;

}

反思:

错在累加相减项,原为“for (h = 1; h < l; h++)”未考虑数组的越界,当h=0时“sum += abs(num[0] - num[-1]);”,存在越界值num【-1】,再dev c++上虽然能通过,但在pta上会出现乱码,故改为从第二项开始,跳过第一项,避免了越界。

2.有得:

卖沙,卖沙,三块钱一斤,十块钱三斤

思路:

先利用结构体构建贮存数组,再利用快排对单价进行排序,之后再累加求值

#include <stdio.h>

#include <math.h>

struct shazi ??????????????????????????????????……………………结构体,先命名

{

int zs;???????????????????????????????? …………………………设置变量,总数量

int zj;???????????????????????????????????? …………………………设置变量,总价值

double dj;??????????????????????????????? …………………………设置变量,每种单价

};struct shazi num[1000];??????????????????? …………设置数组num【】???????????????

void QuickSort(struct shazi *num, int xiao, int da)…………调用无参函数

……………………num为结构体类型,必须声明,struct+结构体名称+数组名

比较详解:

本次比较,与原版快排不同,比较的每种沙子的单价,交换的是结构体变量

(本体结构体变量num附带了总价值、总数量、单价)

{????

if (xiao < da) ………………判断是否输入错误

{???? ???

int i = xiao;……………………相当于第一个的下标

int j = da;……………………相当于最后一个的下标

double k = num[xiao].dj;????????????????? ……………………定义最小值为第一个值。

struct shazi p=num[xiao];??????????????? ……………………定义一个结构体变量p

while (i < j)????????????????????????????????? ___快排算法核心

?{

while (i < j && num[j].dj >k)

{

j--;

}

if (i < j)

{

num[i++]= num[j];

}

while (i < j && num[i].dj< k)

{

i++;

}

if (i < j)

{

num[j--] = num[i];

}

}

num[i]= p;

QuickSort(num, xiao, i - 1);………………返回每次最小值

QuickSort(num, i + 1, da);………………返回每次最大值

}????? ??????

}????

int main() {

int n;

int i, j;

int bag;

double sum = 0;

scanf("%d %d", &n, &bag);

for (i = 0; i < n; i++)

?{

scanf("%d %d", &num[i].zs, &num[i].zj);……………………结构体输入格式

num[i].dj = (1.0 * num[i].zj) / (1.0 * num[i].zs);………………强制类型转换int~~double

}

QuickSort(num, 0, n - 1);………………………………调用函数,只用输入函数名

???

for (i = n-1; i >=0; i-- )……………………逆向输出,更改排序为从大到小,优先取大值

{

if (num[i].zs < bag) …………………………简单累加

{

bag -= num[i].zs;

sum += num[i].zj;

}

else

{

sum += bag * num[i].dj;

break;

}

}

printf("%.2lf", sum);

return 0;

}

注意:

本题要求时间较短,所以不能用冒泡算法…………只能用快排之类的短时间排序方法。

快排交换数据,一定是比较沙子的单价,交换沙子的所有变量。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 11:51:56  更:2021-12-05 11:53:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:47:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码