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}

代码如下:

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

 
输出结果为: 
[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$   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java重载遇到泛型

今天被问到一个有意思的问题&#xff0c;大家都知道重载的概念吧&#xff1a;一个类中定义同名的方法&#xff0c;参数表不同&#xff08;参数类型&#xff0c;或者参数个数不通&#xff09;&#xff1b; 但是&#xff0c;如果是下面这个两个方法呢 public static int fn(List&…

wordpress插件制作视频教程【资料分享】

2019独角兽企业重金招聘Python工程师标准>>> 一共5集&#xff0c;每一集15分钟左右&#xff0c;适合入门用哦~ 资料地址&#xff1a; http://wordpresshy.com/create-plugin 分集介绍&#xff1a; 1 【教学大纲】 1.介绍什么是插件&#xff1b; 2.插件的文件结…

Java中遍历HashMap的5种方式

From: https://blog.csdn.net/w605283073/article/details/80708943 本教程将为你展示Java中HashMap的几种典型遍历方式。 如果你使用Java8&#xff0c;由于该版本JDK支持lambda表达式&#xff0c;可以采用第5种方式来遍历。 如果你想使用泛型&#xff0c;可以参考方法3。如…

字符串按照单词为单位逆序排列

我们前面已经写过一个简单字符串逆序排序的方法&#xff0c;这里再开一个字符串排序问题&#xff1a; 给定一个字符串“I love China”&#xff0c;编写程序完成以单词为单位的逆序&#xff0c;如"China love I",并要求不使用第三方变量保存数据&#xff0c;但可以使…

博主故事:博客提升了我在口腔行业的影响力

自从我上次谈了谈个人开设博客的目的一文后&#xff0c;今天就有一位博友发来了感谢留言&#xff0c;他说他的博客让他在国内做牙齿矫正行业的有了一定影响力&#xff0c;下月被请到上海讲课&#xff0c;也有不少民营机构前来挖他&#xff0c;还被邀请参加中国口腔医学界最盛大…

RabbitMQ入门教程——发布/订阅

什么是发布订阅 发布订阅是一种设计模式定义了一对多的依赖关系&#xff0c;让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时&#xff0c;会通知所有的订阅者对象&#xff0c;使他们能够自动更新自己的状态。 为了描述这种模式&#xff0c;我们将会构建…

mybatis枚举自动转换(通用转换处理器实现)

From: https://blog.csdn.net/fighterandknight/article/details/51520595 前言 在上一篇博客&#xff0c;mybatis枚举自动转换实现&#xff0c;已经介绍自动转换的实现步骤&#xff0c;并通过例子告诉大家如何实现枚举的自动转换了。 那么在博客的最后想到&#xff0c;定义一…

linux C 学习---函数指针

我们经常会听到这样的说法&#xff0c;不懂得函数指针就不是真正的C语言高手。我们不管这句话对与否&#xff0c;但是它都从侧面反应出了函数指针的重要性&#xff0c;所以我们还是有必要掌握对函数指针的使用。先来看看函数指针的定义吧。 函数是由执行语句组成的指令序列或者…

如何在MyBatis中优雅的使用枚举

From: https://segmentfault.com/a/1190000010755321 问题 在编码过程中&#xff0c;经常会遇到用某个数值来表示某种状态、类型或者阶段的情况&#xff0c;比如有这样一个枚举&#xff1a; public enum ComputerState {OPEN(10), //开启CLOSE(11), //关闭O…

CSS3与页面布局学习笔记(六)——CSS3新特性(阴影、动画、渐变、变形( transform)、透明、伪元素等)...

一、阴影 1.1、文字阴影 text-shadow<length>①&#xff1a; 第1个长度值用来设置对象的阴影水平偏移值。可以为负值 <length>②&#xff1a; 第2个长度值用来设置对象的阴影垂直偏移值。可以为负值 <length>③&#xff1a; 如果提供了第3个长度值则用来设置…

隐藏nginx 版本号信息

为了安全&#xff0c;想将http请求响应头里的nginx版本号信息隐藏掉&#xff1a; 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server location语句块 server_tokens默认值是on&#xff0c;表示显示版本信息&#xff0c;设置server_tokens值是off&am…

Linux C编程学习--main()函数简析

提到C语言的函数&#xff0c;有太多内容要讲&#xff0c;今天我们要看的是main()函数。 main()函数时程序的入口点&#xff0c;任何程序都要有main()函数&#xff0c;一般大家都怎么写main()函数啊&#xff1f; main(); void main(); void main(void); int main(); int main(vo…

WAS 报错 Font '宋体' is not available to the JVM

今天把WAS迁移到新服务器上&#xff0c;启动应用程序后&#xff0c;有报错内容如下&#xff1a;创建的异常&#xff1a;net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 宋体 is not available to the JVM. See the Javadoc for more details.环境介绍&#x…

解决表字段使用关键字导致Mybatis Generator生成代码异常的解决方案

From: http://blog.itfsw.com/2017/05/23/jiejue-biao-ziduan-shiyong-guanjianzi-daozhi-mybatis-generator-shengcheng-daima-yichang-de-jiejue-fangan/ 在某个项目中遇到这么一个问题&#xff0c;因为原始表结构中某些字段定义使用了MySQL的关键字如match等&#xff0c;在…

用户(三次)登录--作业小编完成

count 0 while count < 3:user input(请输入用户名>>>)pwd input(请输入密码>>>)if user huang and pwd 123:print(欢迎进入黑客帝国)1print(...................)breakelse:print(用户名或密码错误)count count 1 转载于:https://www.cnblogs.com…

从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename...

一、缺省模板参数 回顾前面的文章&#xff0c;都是自己管理stack的内存&#xff0c;无论是链栈还是数组栈&#xff0c;能否借助标准模板容器管理呢&#xff1f;答案是肯定的&#xff0c;只需要多传一个模板参数即可&#xff0c;而且模板参数还可以是缺省的&#xff0c;如下&…

Linux C编程---指针数组简析(二维数组、多级指针)

讲到指针和数组&#xff0c;先给大家看一道例题&#xff1a; 题目&#xff1a;填空练习&#xff08;指向指针的指针&#xff09; 1.程序分析&#xff1a;      2.程序源代码&#xff1a; main() { char *s[]{"man","woman","girl","bo…

使用@Autowired注解警告Field injection is not recommended

From: https://blog.csdn.net/zhangjingao/article/details/81094529 在使用spring框架中的依赖注入注解Autowired时&#xff0c;idea报了一个警告 大部分被警告的代码都是不严谨的地方&#xff0c;所以我深入了解了一下。 被警告的代码如下&#xff1a; Autowired UserDa…

简单的方式优化mysql

参考博客 自己笔记本上向mysql导入txt数据&#xff0c;有一个table导入了将近4个小时&#xff0c;而且多个table之间都是相互之间存在关系的&#xff0c;所以做联合查询的时候你会发现问题会十分的多&#xff0c;我之前联合查询两个表就死机了&#xff0c;所以优化mysql是迫在眉…

9颜色和背景

选择的类名最好描述其中包含的信息类型&#xff0c;而不是想要达到的视觉效果。 一般来说&#xff0c;前景是元素的文本&#xff0c;不过前景还包括元素周围的边框。color属性可以用来设置前景色。color有很多用法&#xff0c;其中最基本的是替换HTML3.2的BODY属性TEXT、LINK、…