Linux C 指针练习
题目一、
已知数组内容如下 s[] = {1,2,3,4,5,6,7,8,9},输入一个常数 m(1<=m<=9),使得该数组内容顺序后移n个位置。如n = 3时,数组后移3个位置后的内容为{7,8,9,1,2,3,4,5,6}
代码如下:
- #include <stdio.h>
- int main()
- {
- int a[] = {1,2,3,4,5,6,7,8,9};
- int b[9] = {0};
- int *p = a;
- int *q = b;
- int i,m,n;
- printf("请输入要移动的位数:\n");
- scanf("%d",&m);
- n = m;
- for(i = 0; i < m; i++)
- {
- *q++ = *( p + 9 - n);
- n--;
- }
- for (i = 0;i < 9 - m;i++)
- *q++ = *p++;
- printf("移动后数组为:\n");
- for(i = 0; i < 9;i++)
- printf("%d ",b[i]);
- printf("\n");
- return 0;
- }
执行结果如下:
- fs@ubuntu:~/qiang/tmp$ ./zhizhen2
- 请输入要移动的位数:
- 3
- 移动后数组为:
- 7 8 9 1 2 3 4 5 6
- fs@ubuntu:~/qiang/tmp$ ./zhizhen2
- 请输入要移动的位数:
- 7
- 移动后数组为:
- 3 4 5 6 7 8 9 1 2
- fs@ubuntu:~/qiang/tmp$
题目二、
输入一个字符串,内有数字和非数字字符,如a123X456 17960? 302tab5876 将其中连续的数字作为一个整数,一次存放到整数型数组a中,例如123放到 a[0],456放到 a[1]中,统计有多少个整数,并输出这些数;
分析:这是一道非常经典的指针编程题,网上有很多解法,有用malloc的,有用sscanf的,找到一个自己能理解的解法也是重要的,下面是博主自己写的程序,希望对大家有所帮助,代码如下:
- #include <stdio.h>
- #include <string.h>
- int main(int argc, const char *argv[])
- {
- char b[100];
- int a[100];
- memset(a,'\0',100);
- char *p = b;
- int i = 0;
- int j;
- int sum = 0;
- int count = 0;
- int flag = 1;//标志位,遇到数字为0,遇到非数字为1;此处其初始值为1,默认首字符前面还是非数字,不输出整数,主要配合下面的程序
- printf("请输入字符串:\n");
- gets(b);
- while(*p )
- {
- if(*p <= '9' && *p >= '0')
- {
- flag = 0;//遇到数字,flag=0
- sum = sum*10 + *p++ - '0';//将字符数字转化成整数,此时并不输出。当下一个字符为非数字时,才输出
- }
- else
- {
- while(flag == 0)//此时读到非数字字符,判断此时flag,如果此时flag为0.说明上一个字符为数字
- {
- a[i++] = sum ;//此时将数字输出,赋给a[i],i++
- sum = 0;//将sum清零
- flag = 1;//非数字字符,flag置1
- }
- p++;//此时flag为1,没有整数输出,则看下一个字符
- }
- }
- //字符串结束后,会遇到两种情况,一个是最后一个字符为数字,另一种是非数字字符
- if(flag == 0)//因为前面的程序中,整数的下一个字符为非数字时,才会输出整数,若最后一个是数字的话,则无法输出,所以这里对最后一个字符进行判断
- a[i] = sum;//将最后一个整数输出
- else
- i--;//此时最后一个字符为非数字,没有整数输出,但i多加了一次,所以此处i--
- count = i + 1;//整数个数为i+1
- printf("共有%d个整数\n",count);
- printf("这些整数是:\na[]=");
- for(j = 0; j < i+1; j++)
- printf("%d ",a[j]);
- printf("\n");
- return 0;
- }
输出结果为:
- fs@ubuntu:~/qiang/tmp$ ./zhizhen1
- 请输入字符串:
- 123xiao45 ?<er97
- 共有3个整数
- 这些整数是:
- a[]=123 45 97
- fs@ubuntu:~/qiang/tmp$ ./zhizhen1
- 请输入字符串:
- xiao12jian5w4gd67dd
- 共有4个整数
- 这些整数是:
- a[]=12 5 4 67
- fs@ubuntu:~/qiang/tmp$
Linux C 指针练习相关推荐
- linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...
- Linux C 指针
指针 所谓指针是Linux C编程语言中的一个对象,它的值直接指向存在电脑存储器中另一个地方的值,能够通过地址找到所需的变量单元. 对指针变量的定义包括三个内容: (1)指针类型说明,即定义变量为一个 ...
- linux野指针追踪,一个erlang nif野指针的追踪过程
概述 最近半年, 经常出现一些奇怪的bug. CPU非常高, 但etop并没有red特别高的进程. 内存占用非常高, 和etop看到的内存不吻合. coredump. 因为erlang层面无法定位问题 ...
- linux c 指针 内存 泄漏几种情况
引言 对于任何使用C语言的人,如果问他们C语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是 ...
- linux c 指针数组定义数组长度,C/C++指针数组和 迪士尼源码搭建下载 数组指针...
迪士尼源码搭建下载[ 指针数组 : 存放指针的数组 其定义抽象为:指向变量的类型 * 数组名称 [数组长度]. int *p[2]; p[0] = NULL; p[1] = NULL; 2. 数组指针 ...
- linux c 指针和内存分配内存,linux-C基础系列-内存管理(野指针).md
野指针概述 野指针通常指的是指针变量中保存的值不会死一个合法的内存地址,但又对其访问.需要注意的是野指针不是空指针,而是指向内存不可用的指针. C语言中对于空指针(NULL)是可以判断出来的,但是野指 ...
- linux野指针追踪,【华清远见】野指针和空指针的两个小点
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:吕老师,华清远见嵌入式学院讲师. 大家都知道指针的学习对于c语言学习来说可谓是至关重要的,下面我们来说一下在指针中两种比较特殊的关于指针的概念,野指 ...
- linux野指针追踪,论野指针BUG查找方法
一般raw指针的使用才会容易出现这类问题,使用了指针管理的一般不容易出现因此这里不阐述(shared_ptr unique_ptr)等. 在展开叙述前,我们先看看下面的实现原理和方案: 1.在Unit ...
- linux c 指针和内存分配内存,Linux C语言指针与内存学习笔记
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 环境准备 Ubuntu 操作系统.VIM 编辑器.GCC 编译器.GDB调试器. 初始指针 通过两个数的交换引入指针指针 ...
最新文章
- Mysql忘记用户密码的解决办法
- windows下eclipse远程连接hadoop集群开发mapreduce
- C/C++语言变量声明内存分配
- Membership学习(三)Membership Providers介绍[xgluxv]
- presto集群安装
- html 使用百度搜索,百度搜索uzer,进入主页
- 42 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活实际成本核算
- Congestion Charging Zone 水题
- Node.js 系列翻译---console
- Python 判断素数(质数)的方法讲解
- 基于Spring Boot的个人博客系统的设计与实现 毕业设计-附源码271611
- 鹿狩猎 - 认识到许多因素要记住
- 第六章 更多监督训练
- 知乎:电脑长时间不关机会缩短电脑寿命吗?
- 解决VS2008 开发windows mobil及智能设备项目生成速度慢的问题
- H5使用微信支付(微信内部浏览器和其他浏览器)
- html标签中h4和h5,h5与h4的区别
- mmsegmentation教程2:如何修改loss函数、指定训练策略、修改评价指标、指定iterators进行val指标输出
- 如何连接etc/eth池,最安全的方法是什么?
- Java实现邮箱发送验证码(以QQ邮箱为例)
热门文章
- ECharts整合HT#160;for#160;Web的网络拓扑图应用
- 安装NTOP网络监控工具(wheezy)
- 动态加载JS脚本【转】
- 食品安全--牛奶和蛋白质浅谈
- 大熊猫卸妆后_您不应错过的6大熊猫行动
- leetcode 19. 删除链表的倒数第N个节点(双指针)
- leetcode1438. 绝对差不超过限制的最长连续子数组
- refract推导_我们如何利用Refract来利用React式编程的力量
- webgl 着色器_如何在WebAssembly中使用WebGL着色器
- 自学成才翁_仅因为您是自学成才,并不意味着您必须独自学习。