| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3802 人关注过本帖
标题:发两个程序,以视今天下午的学习成果,如果你也是初学者,一起加油!!!
取消只看楼主 加入收藏
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
结帖率:0
收藏
 问题点数:0 回复次数:20 
发两个程序,以视今天下午的学习成果,如果你也是初学者,一起加油!!!
本人为了考研最近在猛力的复习C,虽然大二的时候学过点,不过那时候完全是为了过二级,两年过后都还给老师了,而且当时只是死记硬背,没有试着去理解其中的精髓,现在用谭浩强老师的书复习,现在配合着严蔚敏老师的《数据结构》,试着入门,今天下午编写了两个一维数组的简单程序。没有论坛各位大神的水平,现在只求掌握基础,循序渐进,希望各位不要笑话。

1、颠倒数组中元素的顺序:
程序代码:
#include<stdio.h>
void main()
{
    void inv(int *x,int n); 
    int a[10];
    int i,*p;
    printf("The original array:\n");
    for (i=0;i<10;i++) scanf("%d",&a[i]);
    printf("\n");
    inv(a,10);
    printf("The array has been inverted:\n");
    for(p=a;p<(a+10);p++) printf("%d ",*p);
}

void inv(int *x,int n)
{
    int temp,i,j,m=(n-1)/2;
    for(i=0;i<m;i++)
    {
        j=n-1-i;
        temp=*(x+i);
        *(x+i)=*(x+j);
        *(x+j)=temp;
    }
    return;
}


2、对数组元素进行从大到小排序:
程序代码:
#include<stdio.h>
void main()
{
    void sort(int *x);
    int i,*p;
    int a[10];
    for(i=0;i<10;i++) scanf("%d",&a[i]);
    printf("\n");
    sort(a);
    for(p=a;p<(a+10);p++) printf("%d ",*p);
    printf("\n");
}

void sort(int *x)
{
    int i,j,temp;
    for(i=0;i<9;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(*(x+i)<*(x+j))
            {
                temp=*(x+i);
                *(x+i)=*(x+j);
                *(x+j)=temp;
            }
        }
    }
    return;
}


这两个程序是自己编写的,和谭浩强书上的程序略有差别,不过都运行成功了。
我的学习心得是:
1、不要一味的抄书,先理解书上算法的思路,这个很重要,然后根据自己的习惯和爱好编写程序。
2、注重细节,作为初学者,因为不熟练,总会出现编写过程中的语法错误,有时候很难发现,所以当发现错误时(哪怕很细微,例如该用“,”时用了“;”),都应该记录下来,一面下次再犯,减少不必要的修改时间,提高学习效率。
3、结合《数据结构》学习我觉得是很重要的,这门课深刻的讨论数据之间的关系,有助于初学者更好的掌握算法的思路和精髓,让编写过程中的思路更加清晰。

以上是今天的学习心得,希望和正在学习C的同学们交流!
收到的鲜花
  • TonyDeng2012-08-08 15:46 送鲜花  10朵   附言:为你的心得加分
  • demonleer2012-08-09 08:56 送鲜花  10朵   附言:为你的精神鼓掌
搜索更多相关主题的帖子: 元素 笑话 老师 
2012-08-08 15:42
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 2楼 embed_xuel
您的意思是把函数声明放在main函数外边?放在include下边?是吧?
2012-08-08 16:02
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 3楼 zklhp
谢谢哈~呵呵,觉得还挺有意思的,尤其程序运行成功的时候~
2012-08-08 16:02
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 7楼 wnn2025
放是可以放,谭的书上是这样写的,我一开始到是不知道能放外面。

不过听二楼的前辈说了一些,觉得放外面比较好,因为如果程序复杂,涉及到很多函数的调用,放到主函数里面看起来比较凌乱,容易产生错误,还是把所有函数的声明都放在最前面的好。
2012-08-08 17:28
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 13楼 pangding
不好意思这个我不太明白是什么用意。
我知道void代表返回值为空的函数。
int代表返回值为整形的函数。
主函数没有返回值,为什么要改写成int,这有什么好处?如果可以,可否请前辈给小弟讲明白些?

[ 本帖最后由 马也 于 2012-8-8 19:35 编辑 ]
2012-08-08 19:34
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 17楼 ldzy
您的建议很好,谢谢。不过现在看这本是报考学校的指定教材,我是一定要读完的,没多少了。就差数组和结构体了,而且作为入门,我觉得还是可以的,读起来通俗易懂。
书刚看到这,作为第一次编写程序,肯定还有很多东西不规范,这个我会慢慢积累,循序渐进的学习。我现在主要想做的,还是理解C程序编写的方法和思想,打好基础。
各位可能是已经应用于工作的中这方面从业者,我现在还在纠结于指针的一些问题,这个和我现在的水平是不能比的,我现在也在试着归纳总结,尽量归纳出一些固定的,调理清晰的书写方法,关于以后的学习,我是肯定会参考一些更高级的教材的,您如果发现我程序中有什么不好的地方,欢迎批评指正,这是我很好的学习机会,如果您有一些看过的好的教材,可以推荐给我!
2012-08-08 20:29
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 16楼 鱼∞鱼
好的,谢谢!
2012-08-08 20:31
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 20楼 pangding
恩,谢谢这位版主!我清楚了!以后养成这个习惯,十分感谢您细心额回答!
2012-08-09 11:13
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
以下是引用ljzzcm在2012-8-8 23:26:53的发言:

放在mian()上面叫全局变量,不过那种东西虽然方便,不过最好少用。
全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。 使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。在各个函数执行时都可能改变外部变量的值,程序容易出错。因此,要限制使用全局变量。

这位朋友说的这个概念我已经学习到了,全局变量是从定义开始到程序结束都有效的变量。不过前面大家讨论的是函数声明部分,不是定义全局变量吧。在main函数外边声明接下来用到的函数也会占用存储单元么?
2012-08-09 11:17
马也
Rank: 1
等 级:新手上路
帖 子:31
专家分:7
注 册:2012-1-24
收藏
得分:0 
回复 23楼 ljzzcm
关于return;我还有一些没理解的地方,比如,一个函数只是对一个数组做一些排列的操作,并不涉及到返回值,是否还要在程序中写return?。renturn和return 0;有什么区别?
2012-08-09 11:22
快速回复:发两个程序,以视今天下午的学习成果,如果你也是初学者,一起加油!! ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040283 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved