每天进步一点点,坚持带来大改变!!!

1.序列中删除指定数字

牛客网链接:

https://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7?tpId=107&&tqId=33379&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7?tpId=107&&tqId=33379&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

描述

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

数据范围:序列长度和序列中的值都满足 1≤n≤50

输入描述:

第一行输入一个整数(0≤N≤50)。

第二行输入N个整数,输入用空格分隔的N个整数。

第三行输入想要进行删除的一个整数。

输出描述:

输出为一行,删除指定数字之后的序列。

示例1

输入

6

1 2 3 4 5 9

4
输出:1 2 3 5 9

示例2

输入

5

1 2 3 4 6

5

输出:1 2 3 4 6

思路:

定义两个变量,都从数组下标为0的位置开始,i变量遍历整个数组,j变量用来存放不是被删除的元素,当i找到删除的元素之后i继续向后访问,j不加加,当不是要删除的元素的时候,将下标为i的元素存放到j下标,然后j继续加加。

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

2.序列中删除去重

牛客网链接:

https://www.nowcoder.com/practice/6564a2f6e70f4153ad1ffd58b2b28490?tpId=107&&tqId=33380&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/6564a2f6e70f4153ad1ffd58b2b28490?tpId=107&&tqId=33380&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

描述

输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。

输入描述:

输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。

输出描述:

输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。

示例1

输入:

5

10 12 93 12 75

输出:

10 12 93 75

思路:

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

3.有序序列的合并:

牛客网链接:

https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897?tpId=107&&tqId=33381&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897?tpId=107&&tqId=33381&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

描述

输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

数据范围:1≤n,m≤1000  , 序列中的值满足 :0≤val≤30000

输入描述:

输入包含三行,

第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。

第二行包含n个整数,用空格分隔。

第三行包含m个整数,用空格分隔。

输出描述:

输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。

示例1

输入:

5 6

1 3 7 9 22

2 8 10 17 33 44
输出:1 2 3 7 8 9 10 17 22 33 44

思路:

#include<stdio.h>int main()
{int arr1[1000] = { 0 };int arr2[1000] = { 0 };int arr3[2000] = { 0 };int n = 0;int m = 0;scanf("%d%d", &n, &m);int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr1[i]);}for (i = 0; i < m; i++){scanf("%d", &arr2[i]);}i = 0;int j = 0;int k = 0;while (i < n && j < m){if (arr1[i] < arr2[j]){arr3[k++] = arr1[i++];}else{arr3[k++] = arr2[j++];}}if (i == n){for (; j < m; j++){arr3[k++] = arr2[j];}}else{for (; i < n; i++){arr3[k++] = arr1[i];}}for (i = 0; i < n + m; i++){printf("%d ", arr3[i]);}return 0;
}

C语言双指针——经典题型相关推荐

  1. java 品尝饮料,java细节经典题型

    28. 选项中哪一行代码可以替换题目中//add code here 而不产生编译错误?() [java] view plaincopy 1. public abstract class MyClas ...

  2. 计算机书籍-Go语言入门经典SAMS Teach Yourself

    书名:Go语言入门经典 作者:[英]乔治 奥尔波(George Ornbo) 出版社:人民邮电出版社 出版时间:2018年08月 去当当网了解

  3. c语言超级经典400道题目,C语言超级经典400道题目.doc

    C语言超级经典400道题目1.C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符.C.1 2.C语言程序的三种基本结构是____ A.顺序结构,选择结构,循环结构 B.递 ...

  4. C语言成绩abc,C语言常用经典代码:求三角形的面积、把百分制成绩转换为ABC等级制、其两个自然数的最大公约数和最小公倍数...

    C语言 经典常用代码 C语言常用经典代码 求三角形的面积. 把百分制成绩转换为ABC等级制. 其两个自然数的最大公约数和最小公倍数. 求输入n个数的平均值. 求一个数各个位上的数字之和. 求n个数的阶 ...

  5. pwn学习总结(五) —— 堆溢出经典题型整理

    pwn学习总结(五) -- 堆溢出经典题型整理 fastbin + 栈溢出 fastbin + 函数构造 fastbin + 堆执行 fastbin + malloc_hook fastbin + 栈 ...

  6. pwn学习总结(三) —— 栈溢出经典题型整理

    pwn学习总结(三) -- 栈溢出经典题型整理 ret2text ret2shellcode rop ret2libc 使用DynELF实现远程libc泄露 ret2syscall ret2libc ...

  7. c语言上机注意事项,计算机三级(C语言)上机考试题型总结与注意事项(讲解详细)...

    计算机三级(C语言)上机考试题型总结与注意事项(讲解详细) C语言 三级上机考试题型总结与注意事项 按前面的分题型讲解,三级上机考试100道题被分为9大题型.每种题型在题库中占的比例也已经在题型名字后 ...

  8. C语言入门经典材料领走不谢!

    小天从大学开始,便开启资料收集功能.近几年以大数据的飞速发展,计算机科技进入新的发展阶段,再加上日常的深入研究,小天收集整理了丰富的C语言资料,内容涵盖"入门经典","考 ...

  9. c语言入门经典案例,c语言入门经典案例及飞源代码.doc

    c语言入门经典案例及飞源代码 循环控制输出图案 [程序1]题目:输出9*9口诀.1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.2.程序源代码:#include "stdio.h ...

最新文章

  1. iOS 11开发教程(一)
  2. python编程工资-看到抖音上Python工程师晒得工资条,我沉默了......
  3. N 组连续子串最大和
  4. C语言选择排序(解析)
  5. 怎样健身最有效?程序员们可能还需要这些……
  6. 20155303 2016-2017-2 《Java程序设计》第四周学习总结
  7. 深度学习中 epoch,[batch size], iterations概念解释
  8. TQ210——下载总结
  9. 8 年后重登王座,Python 再度成为 TIOBE 年度编程语言
  10. RabbitMQ中7种消息队列和保姆级代码演示!
  11. pymongo 日期类型
  12. sklearn 特征降维利器 —— PCA TSNE
  13. java 中文车牌识别_EasyPR-Java开源中文车牌识别系统工程部署
  14. 调戏木马病毒的正确姿势-基础篇
  15. Android视频桌面,动态桌面开发
  16. CactiEZ V10.1安装及配置
  17. 【干货】火山视频去水印下载使用介绍
  18. 2021-7-19 fact函数求阶乘的用法
  19. 数字文化下的未来柔性团队
  20. 文心日签 | 春来有象,开工大吉

热门文章

  1. 风铃机器码修改器2.2单进程单ID硬件信息用于解除机器码硬件修改大师多开器部分游戏
  2. IDEA 断点:断点失效问题
  3. Onedrive如何同步文件夹
  4. 常见的IM开源服务器
  5. 将项目提交到码云时,异常: remote: [31mIncorrect username or password ( access token )[0m
  6. 移动互联应用开发基础知识简答
  7. Kubernetes源码下载以及go mod依赖解决
  8. Oracle 设置密码复杂度
  9. 穿透代理获取用户真实IP地址
  10. 【linux测试必背| tcpdump】命令行抓包神器 | tcpdump抓取post请求并显示详细参数