常见代码写法
Stay--hungry
这个作者很懒,什么都没留下…
展开
-
坐标 转化
给定一个长度为A×BA\times BA×B的序列,将其存储为二维数组(从下标1开始存储),序列中第(i−1)×B+(j−1)+1(i - 1)\times B+(j-1)+1(i−1)×B+(j−1)+1个元素为:若从下标0开始存储,则序列中第 i×B+j+1i\times B+j+1i×B+j+1 个元素为:给定一个长度为A×B×CA\times B\times CA×B×C的序列,将其存储为三维数组(从下标1开始存储),序列中第(i−1)×BC+(j−1)×C+(k−1)+1(i - 1)\ti原创 2022-06-21 20:52:32 · 79 阅读 · 0 评论 -
原址 交换
不需要辅助空间,进行两个数之间的交换。原创 2022-06-21 17:44:30 · 61 阅读 · 0 评论 -
子数组的最值
已知数组qqq,求数组mmm,满足:mim_imi是子数组q[i∼n]q[i\sim n]q[i∼n]的最大值(或最小值)。倒着遍历数组qqq,利用递推关系:mi=max{mi+1,qi}m_i=\max\{m_{i+1},q_i\}mi=max{mi+1,qi}如此便以O(n)O(n)O(n)实现了求nnn个子数组的最值。#include <iostream>using namespace std;const int N = 100010;int q[N], m[N];原创 2022-03-30 19:06:19 · 392 阅读 · 0 评论 -
四舍五入输出
大多数情况下,使用printf、setprecision也可以自动实现四舍五入。但由于部分系统、编译器的不同,舍入的方式可能会有所差别,因此使用如下方法更加稳妥。保留小数点后nnn位:int((a + 10n) + 0.5) / 10n.0/*+0.5:如果大于等于0.5就往前进一位,小于0.5就不往前进,然后强制转换到int会向下取整,正好四舍五入到整数.0:代表是浮点运算恩,这样就不会除完是int了*///保留小数点后1位:a = int((a * 10) + 0.5) / 10.0;原创 2021-11-11 19:42:32 · 1077 阅读 · 0 评论 -
最后一个元素后面无空格
for (int i = 0; i < n; i ++){ if (i) cout << ' '; cout << a[i];}原创 2021-11-04 21:17:20 · 476 阅读 · 0 评论 -
数组去重
首先将数组由小到大排序,排好序的数组中的不同元素只有两种情况:第一个元素与前一个元素不同的元素const int N = 1000;int q[N];int main(){ int n; scanf("%d", &n); for (int i = 0; i < n; i ++) scanf("%d", &q[i]); int j = 0; for (int i = 0; i < n; i ++) { if (!i || q[i] != q[i原创 2021-07-17 13:25:02 · 59 阅读 · 0 评论 -
字符串
char str[100];scanf("%s", str);int len = 0;while (str[len])//最后一个元素为'\0' len ++;printf("%d", len);原创 2021-06-30 21:06:56 · 71 阅读 · 0 评论 -
统计数中出现的数字
#include <stdio.h>int main(){ int c; int dig[10] = {0}; while (1) { c = getchar(); if (c == EOF) break; switch(c) { case '0': dig[0] ++; break; case '1': dig[1] ++; break; case '2': dig[2] ++; break; case '3': dig[3] ++; br原创 2021-06-30 20:00:45 · 59 阅读 · 0 评论 -
质数相关计算
1,输出n以内的质数代码一//若n为质数,则n除了1和n本身,便不存在其它因数。即 2 ~ n-1 均不能整除nfor (int i = 2; i <= n; i ++){ for (int j = 2; j < i; j ++)//j作为除数,一个一个枚举判断i能否被其整除 if (i % j == 0) break;//还存在别的因数,说明其不是质数,循环到此结束 if (j == i)//最后的情况就是j==i printf("%d ", i);} 代原创 2021-06-27 22:25:56 · 141 阅读 · 0 评论 -
将数组变为倒序
for (i = 0; i < n/2; i ++)//n/2 { int temp = num[i];; num[i] = num[n - 1 - i]; num[n - 1 - i] = temp; }原创 2021-06-27 20:38:32 · 209 阅读 · 0 评论 -
限定次数的循环
1,写法一while (n -- > 0){ ...}2,写法二for (int i = 0; i < n; i ++)//或 for (int i = 1; i <= n; i ++){ ...}原创 2021-06-27 20:03:28 · 247 阅读 · 0 评论 -
多个数中的最大值
1,写法一int max = n1;if (max < n2) max = n2;if (max < n3) max = n3;2,写法二max = (n1>n2 ? n1:n2) > n3 ? (n1>n2 ? n1:n2) : n3;原创 2021-06-27 19:15:06 · 118 阅读 · 0 评论 -
判断能否整除
1,判断是否为奇数or偶数if (num % 2)//判断是否为奇数{ ...}if (num % 2 != 0)//判断是否为偶数{ ...}2,判断能否被n整除if (num % n != 0){ ...}原创 2021-06-27 18:24:46 · 444 阅读 · 0 评论 -
整型数的平均值(浮点型)
1,方法一 int a, b; scanf("%d%d", &a, &b); //读入的是两个整型数 printf("%f", (a + b) / 2.0);//除以2.0使得整个运算结果为浮点型 //若为printf("%f", (a + b) / 2);无效2,方法二 int a, b; scanf("%d%d", &a, &b); printf("%f", (double)(a + b) / 2);//强制类型转换...原创 2021-06-26 21:59:08 · 229 阅读 · 0 评论 -
获取整数的某些位的数字
1,获取数的最后几位数字amod 10n=最后n位数字a \mod 10^n = 最后n位数字amod10n=最后n位数字int n;scanf("%d", &n); a = n % 10;//获取个位数字 b = n % 100;//获取最后两位数字c = n % 1000;//获取最后三位数字 2,截去数的最后几位数字a÷10n=截去最后n位数字剩下的部分a \div 10^n = 截去最后n位数字剩下的部分a÷10n=截去最后n位数字剩下的部分int n;scanf(原创 2021-06-26 21:16:25 · 579 阅读 · 0 评论 -
常见输入处理
描述求实数的绝对值。输入输入数据有多组,每组占一行,每行包含一个实数。输出对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。输入样例 1123-234.00输出样例 1123.00234.00#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ double m; while (scanf("%lf",原创 2021-05-22 12:51:39 · 202 阅读 · 0 评论 -
处理字符串中字符的标准方式
#include <iostream>using namespace std;unsigned int c_in_str(const char *str, char ch)//函数功能:输出字符串中特定字符的数目//函数运行时不应修改原字符串的值,因此在声明指针str时,前面加const{ int count = 0; while (*str)//字符串常量有内置的结束字符,遇到结尾的结束符,循环结束 { if (*str == ch)原创 2021-05-08 21:39:26 · 74 阅读 · 0 评论 -
数组区间
在对数组元素按顺序进行操作时,可以编写一个函数#include <iostream>using namespace std;const int arrSize = 8;//指定元素区间,通过传递两个指针来完成,一个指针标识数组的开头,另一个指针标识数组的尾部int sum_arr(int *begin, int *end){ int *pt; int total = 0; for (pt = begin; pt != end; pt ++)原创 2021-05-08 21:08:32 · 326 阅读 · 0 评论