文档章节

指针第一次练习

i
 imcarl
发布于 2014/12/27 21:50
字数 835
阅读 79
收藏 0

1.实现功能:输入3个整数,按数值由小到大的顺序输出。

 

方法一:只编写主函数,利用指针指向三个变量,不修改原变量的值,通过修改指针的指向实现输出顺序的改变。

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int* ap=&a,*bp=&b,*cp=&c;
    int *temp;
    if(*ap>*bp)
    {
        temp=ap;
        ap=bp;
        bp=temp;
    }
    if(*ap>*cp)
    {
        temp=ap;
        ap=cp;
        cp=temp;
    }
    if(*bp>*cp)
    {
        temp=bp;
        bp=cp;
        cp=temp;
    }
    printf("%d,%d,%d",*ap,*bp,*cp);
}


方法二:只编写主函数,通过指针修改变量的值实现数据顺序的改变。

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int* ap=&a,*bp=&b,*cp=&c;
    int temp;
    if(*ap>*bp)
    {
        temp=*ap;
        *ap=*bp;
        *bp=temp;
    }
    if(*ap>*cp)
    {
        temp=*ap;
        *ap=*cp;
        *cp=temp;
    }
    if(*bp>*cp)
    {
        temp=*bp;
        *bp=*cp;
        *cp=temp;
    }
    printf("%d,%d,%d",*ap,*bp,*cp);
}

方法三:编写排序函数,函数需要传入三个参数,通过调用排序函数实现数据交换。

#include<stdio.h>
void BubbleSort(int *ap,int *bp,int *cp)
{
    int temp;
    if(*ap>*bp)
    {
        temp=*ap;
        *ap=*bp;
        *bp=temp;
    }
    if(*ap>*cp)
    {
        temp=*ap;
        *ap=*cp;
        *cp=temp;
    }
    if(*bp>*cp)
    {
        temp=*bp;
        *bp=*cp;
        *cp=temp;
    }
}

int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    BubbleSort(&a,&b,&c);
    printf("%d %d %d",a,b,c);
}



方法四:编写排序函数,函数只实现两个数的排序,通过多次调用函数来实现三个数的排序。

#include<stdio.h>
void BubbleSort(int *ap,int *bp)
{
    int temp;
        temp=*ap;
        *ap=*bp;
        *bp=temp;
}

int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b) BubbleSort(&a,&b);
    if(a>c) BubbleSort(&a,&c);
    if(b>c) BubbleSort(&b,&c);
    printf("%d %d %d",a,b,c);
}

2.改写冒泡排序程序,通过函数调用实现冒泡排序,利用指针实现排序功能。

#include<stdio.h>
void bubble_sort(int* a,int n)//n为数组a的元素个数
{
    int i,j,temp;
    for(j=0;j<n-1;j++)
        for(i=0;i<n-1-j;i++)
        {
            if(a[i]>a[i+1])//数组元素大小按升序排列
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
        }
}
int main()
{
    int number[8]={95,45,15,78,84,51,24,12};
    int i;
    bubble_sort(number,8);
    for(i=0;i<8;i++)
    {
        printf("%d ",number[i]);
    }
    printf("\n");
}

3.编写程序,利用数组名加角标的形式实现一个3*3整型矩阵的转置。

#include<stdio.h>

int main()

{

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

    int b[3][3];

    int i,j;

   printf("change before:\n");

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

    {

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

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

       printf("\n");

    }

 

 

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

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

           b[j][i]=a[i][j];

 

 

   printf("change after:\n");

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

    {

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

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

       printf("\n");

    }

}

4.编写程序,利用指向整型变量的指针(列指针)实现3*3整型矩阵的转置。

#include<stdio.h>

int main()
{
    int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    int *p=a[0];
    int i,j,temp;
    for(i=0;i<3;i++)
        for(j=0;j<i;j++)
        {
          temp=*(p+i*3+j);
          *(p+i*3+j)=*(p+j*3+i);
          *(p+j*3+i)=temp;
        }
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            printf("%d  ",a[i][j]);
        printf("\n");
    }
}

5.编写程序,利用指向数组的指针(行指针)实现3*3整型矩阵的转置。

#include<stdio.h>
void transpose(int(*p)[3],int(*q)[3])
{
    int i,j;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            *(*(q+j)+i)=*(*(p+i)+j);
}

int main()
{
    int b[3][3],j,i;
    int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    transpose(a,b);
    printf("Transpose of matrix:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            printf("%4d",b[i][j]);
        printf("\n");
    }
}




© 著作权归作者所有

共有 人打赏支持
i
粉丝 0
博文 8
码字总数 4882
作品 0
东城
私信 提问
[iOS]C语言知识点系列视频整理

C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循环结构(while{}) C语言技...

浩浩老师
2015/10/13
38
0
C++字符串分割方法总结

在一些编程练习中,经常会对字符串进行处理,往往处理之前都会对字符串进行分割来提取各部分信息。在C++中虽然没有像python那样提供split这样直接的字符串分割函数,但也有一些其他的方法能够...

xinyuexy
2017/11/27
0
0
C语言自学完备手册(32)——文件

版权声明: https://blog.csdn.net/lfdfhl/article/details/83752060 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–o...

谷哥的小弟
2018/11/10
0
0
C++学习笔记(四)

前言 本篇是《C++ Primer》的学习笔记,以及自己尝试实现数据结构Vector的部分功能,借此练习动态数组操作,同时介绍一种使用VS 2013进行内存泄露检测的方法。 动态数组 1、申请动态数组 默认...

初雪之音
2016/01/15
44
0
整合Spring Hibernate时 this.getSession() 报空指针异常

小弟弟是新人,今天早上练习Spring-Hibernate整合 写DAO 时 this.getSession():报空指针异常 搞了4个小时了还是没搞定,各位大侠帮帮忙。这个是项目图 这个是User.hbm.xml配置: 这个是schem...

关二爷
2012/09/13
7.5K
7

没有更多内容

加载失败,请刷新页面

加载更多

Hibernate SQLite方言

以下代码有参考过github上国外某位大佬的,在发文的最新稳定版Hibernate上是可用的,有时间再仔细分析一下 import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.S...

CHONGCHEN
今天
3
0
CentOS 7 MariaDB搭建主从服务器

本文编写环境为CentOS7。确保关闭SELinux,关闭防火墙或者防打开指定端口。具体信息如下 #master[root@promote ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [r...

白豆腐徐长卿
今天
10
0
介绍python中运算符优先级

下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部...

问题终结者
今天
3
0
Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
10
0
SpringSecurity认证流程源码级详解

SpringSecurity认证流程源码级详解 认证流程说明 认证结果如何在多个请求之间共享 获取认证用户信息

chendom
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部