输入十个整数,按由大到小的顺序排序_输入10个整数按从大到小排序_雪中之豹的博客-程序员宅基地

由于我刚学习C语言,遇到很多的困惑。在这里,希望能得到大家的指导与帮助。我学习的教材是谭浩强主编的《C程序设计》第五版。在学习指针这一章时有一例题(p242页例8.10)用指针法对10个整数按由大到小的顺序排序。 这个题可以用多种方法来实现。

1.直接来实现。也就是不用函数,也不用指针。看代码

#include <stdio.h>
int main()
{
    int a[10];     //定义数组a
    int i,j,t;     //定义三个整型变量
    printf("please enter 10 integer numbers:\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);//给数组赋值
        for(i=0;i<10;i++) //十个数,进行九轮比较
        {
            for(j=i+1;j<10;j++)//第一个数比较九次,依次递减
            {
                if(a[i]<a[j])//如果a[i]<a[j]
                {
                    t=a[i];    //互换位置
                    a[i]=a[j];
                    a[j]=t;
                }
              }
                printf("%4d",a[i]);
        }
                return 0;
}

2.用函数来实现。只用函数,不用指针。看代码:

#include <stdio.h>
int main()
{
    void change(int x[],int n);     //声明函数change
    int a[10],i;
    printf("please enter 10 integer numbers \n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);       //给数组赋值
        change(a,10);           //调用函数change
        printf("The sorted array:\n");
        for(i=0;i<10;i++)
            printf("%4d",a[i]);//排序后的数组
        printf("\n");
        return 0;
}
void change(int x[],int n)//定义change函数
{
    int i,j,t;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        {
    if(x[i]>x[j])    //当x[i]<x[j]
    {
        t=x[i];    //两个数互换位置
        x[i]=x[j];
        x[j]=t;
    }
        }
}

3.用指针来实现。看代码:

#include <stdio.h>
int main()
{
    void change(int x[],int n);//change函数声明
    int a[10],i;
    int *p;
    p=a;                        //使指针变量指向a[0]
    printf("please enter 10 integer numbers:\n");
    for(i=0;i<10;i++)
        scanf("%d",p++);      //输入10个整数
        p=a;                 // 指针变量p重新指向a[0]
    change(p,10);           //调用change函数
    printf("the sorted array:");//输出排序后的10个数组元素
    for(i=0;i<10;i++,p++)
        printf("%4d",*p);
    printf("\n");
}
void change(int x[],int n)//定义change函数,x是形参数组名
{
    int i,j,t;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
    {
        if(x[i]>x[j])     //如果x[i]<x[j]
        {
            t=x[i];      //x[i]与x[j]互换
            x[i]=x[j];
            x[j]=t;
        }
    }
}

我的困惑是这样的,我认为用指针来实现时,教材上在定义函数时用了四个参数,而我这里没有用那么多参数,也同样实现了,我这里有什么错误吗,错在哪里?另外我前面两个哪里有什么问题,请您不吝赐教,谢谢。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46719333/article/details/105723920

智能推荐

RecyclerView/ListView嵌套有EditText控件刷新后防止自动滚动的解决办法_recyclerview上的editext自动滚动_Kevin丶的博客-程序员宅基地

在RecyclerView中,addHeaderView或者footerView后,引入的布局中有EditText控件时,在notifyDataChanged后,往往会自动滚动到焦点处,_recyclerview上的editext自动滚动

有穷自动机到正规文法的转换方法_有穷自动机与正规文法的相互转换_星雨晨曦的博客-程序员宅基地

有穷自动机到正规文法的转换方法给定有穷自动机 M = ( Q ,Σ , f , q 0 , Z )。按照下述方法可以从 M 构造出对应的正规文法G = ( V N , V T , P , S ),使得 L ( M ) = L ( G )。(1 )令 V N = Q , V T = Σ , S = q 0 。(2 )若 f ( A , a ) = B 且 B ∉ Z 时,则将规则 A → aB 加到 P 中。(3 )若 f ( A , a ) = B 且 B ∈ Z 时,则将规则 A → aB |_有穷自动机与正规文法的相互转换

Android adb shell input keyevent code整理_android input keyevent_流浪的猫1712的博客-程序员宅基地

每个数字与keycode对应表如下:0 –&gt; “KEYCODE_UNKNOWN”1 –&gt; “KEYCODE_MENU”2 –&gt; “KEYCODE_SOFT_RIGHT”3 –&gt; “KEYCODE_HOME”4 –&gt; “KEYCODE_BACK”5 –&gt; “KEYCODE_CALL”6 –&gt; “KEYCODE_ENDCALL”7 –&gt; ..._android input keyevent

gradle_zhubinqiang的博客-程序员宅基地

build.gradleapply plugin: 'java'apply plugin: 'war'apply plugin: 'jetty'apply plugin: 'eclipse-wtp'ext { springVersion = '3.2.0.RELEASE' strutsVersion = '2.3.16.1' hibernateVersion = '3.

My English Resume_FlyingDog08的博客-程序员宅基地

Personal Resume☆Basic Information:Name:Liu Pengfei Sex:MaleBirthday:1988-09-03 Education:UndergraduatePolitical Status:Youth League Major

从存储角度看大数据和云计算区别与联系_七O518的博客-程序员宅基地

关于大数据和云计算的关系人们通常会有误解。而且也会把它们混起来说,分别做一句话直白解释就是:云计算就是硬件资源的虚拟化;大数据就是海量数据的高效处理。   虽然上面的一句话解释不是非常的贴切,但是可以帮助你简单的理解二者的区别。另外,如果做一个更形象的解释,云计算相当于我们的计算机和操作系统,将大量的硬件资源虚拟化之后再进行分配使用。   大数据相当于海量数据的“数

随便推点

Google Earth Engine(GEE)——提取点的栅格值(点集合导入和领域统计案例)part2_gee网格数据怎么汇总到省级 .median()_此星光明的博客-程序员宅基地

点集合导入如果要为其提取栅格统计数据的点或多边形存储在本地 shapefile 或 csv 文件中,请首先将数据上传到您的地球引擎资产。矢量文件中的所有列,例如绘图名称,都将通过此过程保留。假设您已准备好 Earth Engine 表资产,将鼠标悬停在资产名称上并单击右侧的箭头,或使用以下代码在脚本中调用它,将资产导入脚本:var pts = ee.FeatureCollection('users/yourUsername/yourAsset');如果您更喜欢动态定义点,您可以使用几何.._gee网格数据怎么汇总到省级 .median()

【ClickHouse】Mysql数据同步 mysql+canal+kafka+ck_ck和mysql同时配置_Learn Forever的博客-程序员宅基地

【ClickHouse】Mysql数据同步 mysql+canal+kafka+ck_ck和mysql同时配置

C++ 的 std::promise 和 std::future_c++ future的坑_ke9Thi4v的博客-程序员宅基地

C++ 的 std::promise 和 std::future文章目录C++ 的 std::promise 和 std::future介绍用法packaged_taskshared_future特殊用法——仅能使用一次的条件变量介绍编写多线程应用时,无法避免的要进行线程间数据同步/通信。std::promise 和 std::future 是 C++ 进行单向数据传递的一种方式。std::..._c++ future的坑

(二)HTML绘制基本表格(学习笔记)_emmet语法写创建表格_L&莫听的博客-程序员宅基地

一、绘制基本表格table主要用于呈现格式化数据。表格是由行和列组成。格式:<table>/*表示一个表格,可能有多行多列*/ <tr> /*代表行*/ <td></td> /*代表每行被分割为若干单元格*/ <td></td> ......... </tr> ..._emmet语法写创建表格

java书籍推荐知乎_【知乎】Java书单-程序员宅基地

有时间主要看看格局之外的书和Java之外的那几本,Java书这么多,我肯定也看不过来,浪潮之巅正在看,挺好的..作者:老刘链接:https://www.zhihu.com/question/29581524/answer/684872838来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Java开发者职业生涯要看的200+本书入门书籍基础书籍多线程与并发网络编程数据结..._java书籍推荐 知乎

Python学习(二):统计词频_Happy__Day的博客-程序员宅基地

为了学习Python,最好还是直接从写代码入手,解决的问题如下:统计英文文章的词频,并按词频从大到小输出。设计Python知识点:文件操作、with ... as ...语句、字典数据结构、字典排序、字符串正则替换代码如下:#coding=utf-8'''Created on 2015年8月15日统计一篇英文文章各个单词出现的词频,并按单次的词频从大到小输出...

推荐文章

热门文章

相关标签