开发手册 欢迎您!
软件开发者资料库

C语言指针、字符串与二维数组编程实例练习题

指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。本文主要介绍C语言中指针、字符串与二维数组编程实例练习题,以及相关的示例代码。

1、找查子字符串的位置和次数

使用字符串和指针实现在指定字符串中查找子字符串的位置和次数,代码如下,

#include int main(){    void search( char *a, char *b );    char a[] = "wonhero = www.wonhero.com c javap py";    char b[] = "java";    search( a, b );    return(0);}void search( char *a, char *b ){    int alen = strlen( a );    int blen = strlen( b );    int i, j, k, s;    int sum = 0;    for( i = 0; i < alen; i++ )    {        k = i;        s = 0;        for ( j = 0; j < blen; j++ )        {            if ( a[k++] == b[j] )            {                s++;            }else{                break;  /* 退出当前循环 */            }        }        if ( s == blen )        /* 子串出现 */        {            sum++;            printf( "出现位置%d;第%d次\n", i + 1, sum );        }        if ( k == alen )        {            break;        }    }}

2、字符串连接

使用指针将两个字符串进行连接,并且不破坏原始字符串,代码如下,

#includechar *concat(char *s1,char *s2){    char *s,*p,*q;    int len1=0,len2=0;    p=s1;    while(*p!='\0')    {        len1++;p++;    }    p=s2;    while(*p!='\0')    {        len2++;p++;    }    s=q=(char *)malloc(sizeof(len1+len2));    p=s1;    while((*q++=*p++)!='\0');    q--;//q后退到'\0'    p=s2;    while((*q++=*p++)!='\0');    return s;}void main(){    char s1[]="wonhero";    char s2[]="=c java python";    char *s;    s = concat(s1,s2);    printf("%s\n",s);}

3、遍历二维字符串数组

使用指针遍历二维字符串数组,代码如下,

#include char * stringFor(char** str,int size) ;int main(){  int i,len;  char * temp ;  char * a[]={"wonhero","c/c++/c#","javapy","python"}; //1  char ** s = a; //2  printf("%d\n",sizeof(a)/sizeof(a[0]));//4块区域  printf("a[0]=%s\n",a[0]);  printf("*(s+1)=%s\n",*(s+1));  printf("第二行第二个元素*(*(s+1)+2)=%c\n",*(*(s+1)+2));  len =sizeof(a)/sizeof(a[0]);  for( i=0;i

4、二维数组的查找

输入一个整数,在一个二维数组中,判断数组中是否含有该整数。代码如下,

#include int add(int arr[][3], int x, int y, int n)//函数的形参为:数组,行数,列数,还有n。{    int i = 0;//把i赋值为0数组的第一行    int j = y - 1;//把列数赋值给j这里要-1,不-1会越界访问。    while (i<=x && j>=0)    {        if (arr[i][j] < n)//先从第一行的最后一个值来进行比较。如果小于目标值,行数加1.        {            i++;        }        else if (arr[i][j] > n)//如果大于要找的目标值,列数-1。        {            j--;        }        else//相等返回0.        {            return 1;        }    }    return 0;//没找到返回0.}int main(){    int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };//创建一个有序的二维数组    int n = 0;//创建一个变量n    printf("请输入一个需要查找的整数:\n");    scanf("%d", &n);//输入n,代表你想要找的那个数。    printf("%d在arr[3][3]中", n);    if (add(arr, 3, 3, n))    {        printf("存在\n");    }    else    {        printf("不存在\n");    }    return 0;}