题目一

已知数组内容如下 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}

代码如下:

[cpp] view plaincopy
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[] = {1,2,3,4,5,6,7,8,9};
  5. int b[9] = {0};
  6. int *p = a;
  7. int *q = b;
  8. int i,m,n;
  9. printf("请输入要移动的位数:\n");
  10. scanf("%d",&m);
  11. n = m;
  12. for(i = 0; i < m; i++)
  13. {
  14. *q++ = *( p + 9 - n);
  15. n--;
  16. }
  17. for (i = 0;i < 9 - m;i++)
  18. *q++  = *p++;
  19. printf("移动后数组为:\n");
  20. for(i = 0; i < 9;i++)
  21. printf("%d ",b[i]);
  22. printf("\n");
  23. return 0;
  24. }

执行结果如下:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/tmp$ ./zhizhen2
  2. 请输入要移动的位数:
  3. 3
  4. 移动后数组为:
  5. 7 8 9 1 2 3 4 5 6
  6. fs@ubuntu:~/qiang/tmp$ ./zhizhen2
  7. 请输入要移动的位数:
  8. 7
  9. 移动后数组为:
  10. 3 4 5 6 7 8 9 1 2
  11. fs@ubuntu:~/qiang/tmp$

题目二、

输入一个字符串,内有数字和非数字字符,如a123X456  17960? 302tab5876 将其中连续的数字作为一个整数,一次存放到整数型数组a中,例如123放到 a[0],456放到 a[1]中,统计有多少个整数,并输出这些数;

分析:这是一道非常经典的指针编程题,网上有很多解法,有用malloc的,有用sscanf的,找到一个自己能理解的解法也是重要的,下面是博主自己写的程序,希望对大家有所帮助,代码如下:

[cpp] view plaincopy
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, const char *argv[])
  4. {
  5. char b[100];
  6. int  a[100];
  7. memset(a,'\0',100);
  8. char *p = b;
  9. int i = 0;
  10. int j;
  11. int sum = 0;
  12. int count = 0;
  13. int flag = 1;//标志位,遇到数字为0,遇到非数字为1;此处其初始值为1,默认首字符前面还是非数字,不输出整数,主要配合下面的程序
  14. printf("请输入字符串:\n");
  15. gets(b);
  16. while(*p )
  17. {
  18. if(*p <= '9' && *p >= '0')
  19. {
  20. flag = 0;//遇到数字,flag=0
  21. sum = sum*10 + *p++ - '0';//将字符数字转化成整数,此时并不输出。当下一个字符为非数字时,才输出
  22. }
  23. else
  24. {
  25. while(flag == 0)//此时读到非数字字符,判断此时flag,如果此时flag为0.说明上一个字符为数字
  26. {
  27. a[i++] = sum ;//此时将数字输出,赋给a[i],i++
  28. sum = 0;//将sum清零
  29. flag = 1;//非数字字符,flag置1
  30. }
  31. p++;//此时flag为1,没有整数输出,则看下一个字符
  32. }
  33. }
  34. //字符串结束后,会遇到两种情况,一个是最后一个字符为数字,另一种是非数字字符
  35. if(flag == 0)//因为前面的程序中,整数的下一个字符为非数字时,才会输出整数,若最后一个是数字的话,则无法输出,所以这里对最后一个字符进行判断
  36. a[i] = sum;//将最后一个整数输出
  37. else
  38. i--;//此时最后一个字符为非数字,没有整数输出,但i多加了一次,所以此处i--
  39. count = i + 1;//整数个数为i+1
  40. printf("共有%d个整数\n",count);
  41. printf("这些整数是:\na[]=");
  42. for(j = 0; j < i+1; j++)
  43. printf("%d ",a[j]);
  44. printf("\n");
  45. return 0;
  46. }

输出结果为:

[cpp] view plaincopy
  1. fs@ubuntu:~/qiang/tmp$ ./zhizhen1
  2. 请输入字符串:
  3. 123xiao45  ?<er97
  4. 共有3个整数
  5. 这些整数是:
  6. a[]=123 45 97
  7. fs@ubuntu:~/qiang/tmp$ ./zhizhen1
  8. 请输入字符串:
  9. xiao12jian5w4gd67dd
  10. 共有4个整数
  11. 这些整数是:
  12. a[]=12 5 4 67
  13. fs@ubuntu:~/qiang/tmp$

Linux C 指针练习相关推荐

  1. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析

    本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...

  2. Linux C 指针

    指针 所谓指针是Linux C编程语言中的一个对象,它的值直接指向存在电脑存储器中另一个地方的值,能够通过地址找到所需的变量单元. 对指针变量的定义包括三个内容: (1)指针类型说明,即定义变量为一个 ...

  3. linux野指针追踪,一个erlang nif野指针的追踪过程

    概述 最近半年, 经常出现一些奇怪的bug. CPU非常高, 但etop并没有red特别高的进程. 内存占用非常高, 和etop看到的内存不吻合. coredump. 因为erlang层面无法定位问题 ...

  4. linux c 指针 内存 泄漏几种情况

    引言 对于任何使用C语言的人,如果问他们C语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是 ...

  5. linux c 指针数组定义数组长度,C/C++指针数组和 迪士尼源码搭建下载 数组指针...

    迪士尼源码搭建下载[ 指针数组 : 存放指针的数组 其定义抽象为:指向变量的类型 * 数组名称 [数组长度]. int *p[2]; p[0] = NULL; p[1] = NULL; 2. 数组指针 ...

  6. linux c 指针和内存分配内存,linux-C基础系列-内存管理(野指针).md

    野指针概述 野指针通常指的是指针变量中保存的值不会死一个合法的内存地址,但又对其访问.需要注意的是野指针不是空指针,而是指向内存不可用的指针. C语言中对于空指针(NULL)是可以判断出来的,但是野指 ...

  7. linux野指针追踪,【华清远见】野指针和空指针的两个小点

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:吕老师,华清远见嵌入式学院讲师. 大家都知道指针的学习对于c语言学习来说可谓是至关重要的,下面我们来说一下在指针中两种比较特殊的关于指针的概念,野指 ...

  8. linux野指针追踪,论野指针BUG查找方法

    一般raw指针的使用才会容易出现这类问题,使用了指针管理的一般不容易出现因此这里不阐述(shared_ptr unique_ptr)等. 在展开叙述前,我们先看看下面的实现原理和方案: 1.在Unit ...

  9. linux c 指针和内存分配内存,Linux C语言指针与内存学习笔记

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 环境准备 Ubuntu 操作系统.VIM 编辑器.GCC 编译器.GDB调试器. 初始指针 通过两个数的交换引入指针指针 ...

最新文章

  1. Mysql忘记用户密码的解决办法
  2. windows下eclipse远程连接hadoop集群开发mapreduce
  3. C/C++语言变量声明内存分配
  4. Membership学习(三)Membership Providers介绍[xgluxv]
  5. presto集群安装
  6. html 使用百度搜索,百度搜索uzer,进入主页
  7. 42 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活实际成本核算
  8. Congestion Charging Zone 水题
  9. Node.js 系列翻译---console
  10. Python 判断素数(质数)的方法讲解
  11. 基于Spring Boot的个人博客系统的设计与实现 毕业设计-附源码271611
  12. 鹿狩猎 - 认识到许多因素要记住
  13. 第六章 更多监督训练
  14. 知乎:电脑长时间不关机会缩短电脑寿命吗?
  15. 解决VS2008 开发windows mobil及智能设备项目生成速度慢的问题
  16. H5使用微信支付(微信内部浏览器和其他浏览器)
  17. html标签中h4和h5,h5与h4的区别
  18. mmsegmentation教程2:如何修改loss函数、指定训练策略、修改评价指标、指定iterators进行val指标输出
  19. 如何连接etc/eth池,最安全的方法是什么?
  20. Java实现邮箱发送验证码(以QQ邮箱为例)

热门文章

  1. ECharts整合HT#160;for#160;Web的网络拓扑图应用
  2. 安装NTOP网络监控工具(wheezy)
  3. 动态加载JS脚本【转】
  4. 食品安全--牛奶和蛋白质浅谈
  5. 大熊猫卸妆后_您不应错过的6大熊猫行动
  6. leetcode 19. 删除链表的倒数第N个节点(双指针)
  7. leetcode1438. 绝对差不超过限制的最长连续子数组
  8. refract推导_我们如何利用Refract来利用React式编程的力量
  9. webgl 着色器_如何在WebAssembly中使用WebGL着色器
  10. 自学成才翁_仅因为您是自学成才,并不意味着您必须独自学习。