当前位置: 首页 > news >正文

C语言,标志法

标志法通常用来检查或者进行过程中一些状态变化。

有一些是为了观察变化,举出一些以往代码的例子:

1.找出一串数字中没有重复出现过的数字

#include <stdio.h>
int main()
{int arr[1000] = { 0 };int n = 0;scanf("%d", &n);int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}int j = 0;for (i = 0; i < n; i++){int flag = 1;for (j = 0; j < n; j++){if (i != j){if (arr[i] == arr[j]){flag = 0;}}}if (flag){printf("%d ",arr[i]);}}return 0;
}

这里的flag就是用来检查是否有相同数字的,如果有相同的数字,就将检查结果判为0,如果没有相同的数字,检查结果就为1。这里便是用flag来观察是否有相同数字的。

2.判断素数

这里的flag用来检测i是否被某个数整除,如果被整除,flag就变成0,一直不被整除,说明i是素数。这里的flag就是用来观察并判断i是否被整除。

有时候标志法还可以进行一些中途的变化,建立一个标志,有时候能完成一些变量的指定变化,省略很多分支。

比如,洛谷题压缩技术2.0

#include <stdio.h>
#include <string.h>
int main()
{char str[200] = { 0 };char arr[200] = { 0 };scanf("%s", arr);int n = strlen(arr);strcat(str, arr);int i = 0;for (i = 2; i <= n; i++){scanf("%s", arr);strcat(str, arr);}printf("%d ", n);char* p = str;char ch = *p;int count = 0;while (*p != '\0'){if (*p == ch){count++;}if (*p != ch){printf("%d ", count);count = 1;ch = *p;}p++;}printf("%d ", count);return 0;
}

这里的ch在起初被赋值为数组的首元素,当连续的元素的值发生变化时,ch就被赋值为变化后的值。

http://www.lryc.cn/news/190251.html

相关文章:

  • 适合自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》
  • 软件设计师学习笔记12-数据库的基本概念+数据库的设计过程+概念设计+逻辑设计
  • distcc分布式编译
  • Java面试题-0919
  • WPF列表性能提高技术
  • 掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(2)
  • 【算法优选】 二分查找专题——贰
  • SQL 的优化
  • 华为云云耀云服务器L实例评测|华为云上的CentOS性能监测与调优指南
  • Go If流程控制与快乐路径原则
  • yolov8 strongSORT多目标跟踪工具箱BOXMOT
  • 如何开发一款跑酷游戏?
  • 使用宝塔面板在Linux上搭建网站,并通过内网穿透实现公网访问
  • Unity可视化Shader工具ASE介绍——6、通过例子说明ASE节点的连接方式
  • VUE3基础知识梳理
  • Java架构师缓存通用设计方案
  • 2023年【危险化学品生产单位安全生产管理人员】及危险化学品生产单位安全生产管理人员模拟考试题
  • 微信小程序 在bindscroll事件中监听scroll-view滚动到底
  • 收银系统商品定价设计思考
  • Kotlin函数作为参数指向不同逻辑
  • 读书笔记—《如何阅读一本书》
  • Kafka数据同步原理详解
  • C++课程总复习
  • 数据结构—顺序表
  • 企业服务器租用对性能有什么要求呢?
  • 2731.移动机器人
  • 相交链表Java
  • 第二章:OSI参考模型与TCP/IP模型
  • 知识图谱04——openGL与ubuntu22.04
  • 如何看待为了省小钱而花费时间