Linux C 指针练习
来源:互联网 发布:mounty11 for mac 编辑:程序博客网 时间:2024/04/28 09:00
题目一、
已知数组内容如下 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=0sum = 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+1printf("共有%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$
1 0
- Linux C 指针练习
- Linux C 指针练习
- C 函数指针练习
- c和指针练习
- 【c基础练习】指针
- C语言 指针操作练习
- C语言指针练习1
- C语言指针练习2
- C语言指针的练习
- c语言之指针练习
- c 语言指针练习<一>
- c 语言指针练习<二>
- c函数和指针练习
- C和指针-编程练习
- Linux C 函数练习
- Linux C 函数练习
- linux C 练习一
- 《c和指针》第十二章单链表练习
- Python学习实践----比较字典中是否有相同键值的方法之一
- BZOJ2223: [Coci 2009]PATULJCI&&BZOJ3524: [Poi2014]Couriers
- 杭电acm1264
- Ext.js5含网格的表单(并且点击网格的时候,信息会传递到表单中,包括Radio的值)(32)
- awk 输出值到多个变量
- Linux C 指针练习
- JavaException_处理异常
- 杭电1269迷宫城堡(二维并查集过)
- UIScrollView
- LeetCode 020 Valid Parentheses
- 通过反射获取类中的属性,并且将类中的属性名称以及对应的值赋给另一个类中的对象
- scipy中的包及其作用
- 【C#学习】——集合和数组
- 深度剖析Struts2中值栈的概念