首页
登录 | 注册

C_指针练习

1、使用指针,计算num1 + num2

Num1 = 12;

Num2 = 15

 

2N个人排成一圈,从1-3报数,报到3的人退出,问最后留下的人是谁。N从键盘输入

#include

 

int main()

{

     int student[100];

     int str_num, *ptr, counter, del=0;

     int i,flag = 0;

 

     printf("输入学生个数(小于一百):");

     scanf("%d", &str_num);

 

     for(i = 0; i < str_num; i++)

          student[i] = i+1;            /*给学生编号*/

 

     ptr = student;    

     while(str_num - del > 1)

     {

          if(*ptr != 0)

          {

               flag++;

               if(flag == 3)

               {

                    *ptr = 0;           /*删除学生*/

                    flag = 0;

                    del++;

               }

          }

          ptr++;

          if(ptr == (student + str_num))

               ptr = student;

     }

    

     for(i = 0; i < str_num; i++)

          if(student[i] != 0)

               printf("最后学生是%d \n", student[i]);

}

 

3循环移动数组data={1,2,3,4,5,6,7,8,9,0}输入一个数N,数组元素右循环移动N位

#include

 

int main()

{

    int data[]={1,2,3,4,5,6,7,8,9,0};

    int n,i,temp;

    int *ptr;

 

    printf("输入要移动的位数:");

    scanf("%d",&n);

 

    while(n--)

    {

        ptr = data;       /*指针指向数组的首地址*/

        temp = *ptr;

        for(i = 0; i < 9; i++)

        {

            *ptr = *(ptr+1);  /*后一位元素向前移动一位*/

            ptr++;             /*指针后移*/

        }

        *ptr = temp;

    }  

   

 

    for(i = 0; i < 10; i++)

        printf("%d ",data[i]);

    printf("\n");

}

 

 

4、对一个整形数组进行递增排序

#include

#include

#include

 

int main()

{

    int data[10];

    int i, j, temp;

    int *ptr;

 

    printf("产生十个百以内的随机数:\n");

    srand((unsigned)time(NULL));        /*随机种子*/

    for(i = 0; i < 10; i++)

    {

        data[i] = rand() % 100;         /*产生百以内的随机数*/

        printf("%d ", data[i]);

    }

 

    ptr = data ;   

    for(i = 0; i < 9; i++)

    {      

        for(j = i; j < 10; j++)

        {

            if(*(ptr+i) > *(ptr+j))

            {

                temp = *(ptr+i);        /*保存较大的值*/

                *(ptr+i) = *(ptr+j);    /*较小的值前移*/

                *(ptr+j) = temp;        /*较大的值后移*/

            }          

        }

    }

    printf("\n递增排序后的结果:\n");

    for(i = 0; i < 10; i++)

        printf("%d ",data[i]);

    printf("\n");

}

 

5、通过指向指针的指针变量来访问一个二维数组,输出所有元素中的最大值

#include

#include

#include

#define N 3

#define M 4

 

int main()

{

    int data[N][M];

    int i, j, max = 0;

    int *ptr;

    int **p;

    p = &ptr;

 

    printf("产生N*M个百以内的随机数:\n");

    srand((unsigned)time(NULL));        /*随机种子*/

 

    for(i = 0; i < N; i++) 

    {

        for(j = 0; j < M; j++)

        {  

            data[i][j] = rand() % 100;          /*产生百以内的随机数*/

            printf("%2d  ", data[i][j]);

        }

        printf("\n");

    }

 

    for(i = 0; i < N; i++) 

    {      

        for(j = 0; j < M; j++)

        {

            ptr = &data[i][j];

                if(**p > max)

            max = **p;

        }

    }

    printf("%d\n",max);

}

 

一小时——部分:Linux C


相关文章

  • 图解Nginx 中的4级指针
          nginx的所有配置结构体全部放在一个cycle的四级指针中,本文就具体分析一下每级指针究竟指向的是什么,下图表示了这个四级指针每一级的指向,图中虚拟地址模拟了真实地址,ctx指针存的指向虚拟地址为1的数据,图中只列举出core ...
  • 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. 作者:gfree.wind@gmail.com 博客:linux ...
  • 1. 在C++中的详细说明 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库. vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象, 简单地说,vector是 ...
  • 注意,我并不会是百分之一百正确的.例如,一个系统很可能没有/proc文件系统支持,但是大多数系统肯定有.这里我假定你是"随大流的",并有一个典型配置的系统. 什么是符号(Symbols)? 内核符号表(Kernel Sy ...
  • Redis源码解析--NET
        关于Redis资料:     要看原滋原味的请点这里,要看有我参与的山寨货请点这里,当然我也不反对看这里.     在接下来的日子里,我会记录下我对Redis源码的一些认识,首先从Event driven programming l ...
  • 基于 HTML5 OpenLayers3 实现 GIS 电信资源管理系统
    前言 创建地图 初始化地图的操作则是将 Map 放进一个 div 元素中,初始化一个 ol.Map 地图类,这在整个电信资源管理系统中必不可少,然后设置这个类中的各个参数: var mapDiv = document.getElementB ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号