鱼C论坛

 找回密码
 立即注册
查看: 3228|回复: 4

[技术交流] 新手必备C学习笔记(持续更新)

[复制链接]
发表于 2013-7-18 14:09:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【冒泡排序法】

#include <stdio.h>
int main(void)
{
        int a[10];
        int i,j,t;       /*这里设了3个变量,其中i控制输入字符的个数,j控制本排序一共要走几趟的次数,t用来交换变量的值的中间参数*/
        printf("input 10 numbers : \n");
        for (i = 0; i < 10; i++)/*用一个简单的for循环来进行输入10个数,分别,一次放入到数组中*/
                scanf("%d", &a);/*之前在格式控制里面加了个空格,但是要特别注意在最后一个数字输入的时候不能直接按回车,要按一个空格,确保流程的完整性,让电脑知道你的工作做完了
        但还是建议不要加空格,以免造成不必要的错误,到时候看都看不出*/
        printf("\n");
        for (j = 0; j < 9; j++) /*10个数字排序,也就是要走九趟,每一趟检验的数字递减,用j来控制走的次数,再内嵌一个for循环,来交换数字的顺序*/               
                for (i = 0; i < 9-j; i++)/*初值i=0就是说明从第一个数开始比较*/
                        if (a > a[i+1])
                        {
                                t = a;
                                a = a[i+1];
                                a[i+1] = t;
                        }
        printf("the sort numbers : \n");
        for (i = 0; i < 10; i++)
                printf("%d ", a);
        printf("\n");
        return 0;

}
/*
======================================
输出结果:


input 10 numbers :
0 1 2 3 4 5 6 7 8 9


the sort numbers :
0 1 2 3 4 5 6 7 8 9
Press any key to continue


======================================
*/


【用指针交换变量的值】
#include <stdio.h>void huhuan(int *i, int *j)/*定义“交换”函数,作用是交换两个函数的值*/{        int t;
        t = *i;/*特别注意:实际上这里的t要和*i,*j相互匹配,因为i是地址,真正的变量是*i。同理,如果是*t的话也是错的*/        *i = *j;/*因为真正期待作用的是变量,记住,一定是单个变量,而不是加任意符号含有特殊意义的字符串*//        *j = t;
        return 0;}int main(void){        int a = 1,b = 2;        huhuan(&a, &b);/*这里一定是&a和&b,因为要和上面的i,j地址变量匹配*//*另外,这里的huhuan函数不返回值,也就不存在把huhuan函数的值赋给任何变量*/        printf("a = %d\nb = %d\n", a, b);        return 0;}/*/*作用:交换两个变量的值。实质:从最本质去考虑,通过交换想未知数一样交换两个变量,而不是单纯的交换两个变量值特点:使用的函数(唯一的一种使用函数来交换值的方法)================================输出结果:
a = 2b = 1
================================*/


错解①:
#include <stdio.h>void huhuan(int a , int b){        int t;
        t = a;        a = b;        b = t;/*这是在没有返回值下的结果造成的,实参的值传递给形参的话就只在本函数内运行,结果并不带出本huhuan函数*/
        return 0;}int main(){        int a = 1;        int b = 2;        huhuan(a,b);        printf("a = %d\nb = %d", a, b);        return 0;}/*=================================输出结果:
a = 1b = 2Press any key to continue
=================================分析:没有改变交换a,b的值的目的,原因是调用函数与主函数之间的局部变量没有任何关系,之间是不会发生混淆的。就算在调用函数之后a,b的值确实参与了huhuan函数的运算,但是由于函数没有返回值,所以到主函数中a,b的值还是没有变,这就相当于用a,b的身份证去做了一次记录,但是本质上他们的一切特征还是没变*/
错解②;
#include <stdio.h>
void huhuan(int *a , int *b){        int *t;
        t = a;        a = b;        b = t;
        return 0;}int main(){        int a = 1;        int b = 2;        huhuan(&a,&b);        printf("a = %d\nb = %d", a, b);        return 0;}/*同上,这里的*t是因为要和上面的定义相对应*/


评分

参与人数 2荣誉 +10 鱼币 +15 贡献 +5 收起 理由
小甲鱼 + 10 + 10 + 5 感谢楼主无私奉献!
Dardy + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-18 15:49:38 | 显示全部楼层
坐等老师更新学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-18 16:09:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-18 18:05:21 | 显示全部楼层
Tcooop 发表于 2013-7-18 16:09
还有的,等有时间一起贴出来

继续,不要断掉,看好老师的笔记,向老师致敬。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-18 21:10:01 | 显示全部楼层
Jany 发表于 2013-7-18 18:05
继续,不要断掉,看好老师的笔记,向老师致敬。

嗯,继续努力ing
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 09:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表