飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11525|回复: 34

[C/C++] 从零开始-C语言入门

[复制链接]
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-10-18 12:14:09 | 显示全部楼层 |阅读模式
    首先下载DEV-C++编译平台,然后就开始咯,!

    先讲解下面简单C语言程序例子:
    C程序由一个main函数组成,
        {        ---函数体开始
        }        ---函数体结束
        ;     ---语句结束
       printf    ---函数名
       \ n       ---换行符
       /*--*/   ---注释


    简单的C语言程序例1:
    -----------------------------------------
    main()
             {
    printf ("*******\n");       /* 字串照原样输出 */
    printf ("* BBI *\n");
    printf ("*******\n");
    system("pause");
             }
    -----------------------------------------
    运行结果:   
                            *******
                            * BBI  *
                            *******

    简单的C语言程序例2:
    ----------------------------------------------
    main()
    {
    int  a, b, c, sum;
         a=10;  b=20;  c=30;
         sum=a+b+c;
         printf("sum=%d\n", sum);  /*  %d是指按十制整数格式输出  */
         system("pause");     
    }
    ----------------------------------------------------         
    简单的C语言程序例3;
    -------------------------------------------------
    main()   /*主函数*/
    {
    int x,y,z;
       scanf("%d,%d",&x,&y); /*  键入两个数,分别赋x,y  */
       z=min(x,y);          /*  调用min函数,将x给x1,y给y1 */
       printf("min is %d\n",z);   
    }

    int min (int x1,int y1)  
    {
    int z1;
    if(x1<y1)
       z1=x1;
    else
       z1=y1;
    return(z1);   
    }
    -------------------------------------------
    看到这里你就可以打开你的编译平台,我们正式进入C语言世界了,!
    如果有心学的话下面最好是每个程序都自己打上一遍,别ctrl+C哦!

         常量
    1.  常量—程序运行过程中其值不变的量
    2.  类型
    (1) 整型常量 : 允许用 10进制, 8进制 (数前加数0), 16进制(数前加数字0和X)

    整型常量程序例子:
    ---------------------------------------------------
    main()
    {
    int a,b,c;  /*定义整型(int) a,b,c*/
       a=10;  b=010;  c=0x10;
          printf("%d,%d,%d",a,b,c);
          system("pause");   
          }
    ----------------------------------------------------
    运行结果: 10 , 8 , 16


    (2) 实型常量:允许用 日常记数法: 如:1999.35 ,-2001.98 和 科学记数法:如:  1.99935e3

    实型常量程序例子:
    ----------------------------------------------------
    main()
    {
    float f;
           f=1999.35;
           printf("%f,%e",f,f );
           /*注意输出格式1个是日常记数法%f,1个是科技记数法%e*/
           system("pause");     
          }
    ----------------------------------------------------
    运行结果 : 1999.35,  1.99935e3

    3)字符常量—用单引号括起来的一个字符或转义字符.
          例:   ‘A’,  ‘o’ , ‘1’,  ‘#’, ‘a’ 等
    \n                       换行
    \t                        横向跳格(即跳到下一个输出区)
    \v                       竖向跳格
    \b                       退格
    \r                        回车
    \f                        走纸换页
    \\                        反斜杠
    \’                        输出单引号
    \ooo                    1--3位八进制所代表的字符
    \xhh                    1--2位十六进制所代表的字符

    字符常量程序例子:
    ------------------------------------------
    main()
    {
    printf("%c,%c,\n",'A','#');
    system("pause");  
          }
    ------------------------------------------
    运行结果: A,#

    (4) 字符串常量---用双引号括起来的一串字符序列.
    例:  “CHINA”,“BBI”,“I  am  a  teacher.” 等
    而 “A” 与 ‘A’  在C语言中是不同的, 前者是字符串常量,                        
    后者是字符常量.

    (5)符号常量
    符号常量程序例子:
    ------------------------------------------
    #define PI 3.1415928
    /* 是符号常量,一般用大写,在该作用域内不可赋其他值  */
    main()
    {
    float r,s;
           scanf("%f",&r);
           s=2*PI*r;
           printf("s=%f\n",s);
    system("pause");   
          }
    ---------------------------------------------
    好处:  若程序里多处出现,该值发生 变化, 仅在 define中作一次修改;

    所有程序在DEVC++里要保存成.C类型的,F9运行..

    好累,就写到啦,
    下次有时间在把变量,运算符及其表达式,函数,循环,判断,指针等等之类的写写,!
    别急于求成,C语言想学好的话,不是一天两天的事,不过C语言是深无底的,!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-24 10:13:50 | 显示全部楼层
    我来跟贴,大家来用malloc动态分配
    #include <stdlib.h>

    void main()
    {
       struct grade                   /* 成绩结构宣告     */
       {
          int math;                   /* 数学成绩         */
          int english;                /* 英文成绩         */
          int computer;               /* 电脑成绩         */
       };
       struct grade *student;         /* 结构阵列变数宣告 */
       int i;
       int num;                       /* 学生人数         */
       int m_sum,e_sum,c_sum;         /* 各科成绩总分变数 */
       float m_ave,e_ave,c_ave;       /* 各科平均成绩变数 */

       m_sum = e_sum = c_sum = 0;     /* 总分初值         */
       printf("请输入学生人数 ==> ");
       scanf("%d",&num);              /* 读取学生人数     */

       student = (struct grade *)     /* 配置记忆体       */
                 malloc(num * sizeof(struct grade));
       if ( !student )                /* 检查指标         */
       {
          printf("内存分配失败! \n");
          exit(1);
       }
       for ( i = 0; i < num; i++ )
       {
          printf("学生编号: %d\n",i + 1);
          printf("请输入数学成绩. ==> ");
          scanf("%d",&student[i].math);     /* 读取数学成绩 */
          m_sum += student[i].math;         /* 计算数学总分 */
          printf("请输入英语成绩. ==> ");
          scanf("%d",&student[i].english);  /* 读取英文成绩 */
          e_sum += student[i].english;      /* 计算英文总分 */
          printf("请输入计算机成绩. ==> ");
          scanf("%d",&student[i].computer); /* 读取电脑成绩 */
          c_sum += student[i].computer;     /* 计算电脑总分 */
       }
       m_ave = (float) m_sum / (float) num; /* 计算数学平均 */
       e_ave = (float) e_sum / (float) num; /* 计算英文平均 */
       c_ave = (float) c_sum / (float) num; /* 计算电脑平均 */
       printf("数学平均成绩: %6.2f \n",m_ave);
       printf("英语平均成绩: %6.2f \n",e_ave);
       printf("计算机平均成绩: %6.2f \n",c_ave);
    }
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2005-10-24 10:40:30 | 显示全部楼层
    好!
    一起完善之!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-25 18:03:34 | 显示全部楼层
    现在写起来怎么这么容易,以前上学时怎么觉得就那么难呢。。。。
    双链表
    #include <stdlib.h>

    struct llist                       /* 串列结构宣告      */
    {
       int num;                       /* 邮寄编号          */
       struct llist *next;             /* 指向下一标签      */
    };
    typedef struct llist node;         /* 定义新型态        */
    typedef node *llink;               /* 定义新型态指标    */

    /* ---------------------------------------- */
    /*  链结串列的列印                          */
    /* ---------------------------------------- */
    void printllist(llink ptr)
    {
       while ( ptr != NULL )          /* 串列走访回路      */
       {
          printf("[%d]",ptr->num);    /* 列印节点资料      */
          ptr = ptr->next;            /* 指向下一节点      */
       }
       printf("\n");                  /* 换行              */
    }

    /* ---------------------------------------- */
    /*  链结串列的建立                          */
    /* ---------------------------------------- */
    llink createllist(int *array,int len)
    {
       llink head;                     /* 串列的开始指标    */
       llink ptr,ptr1;
       int i;

       /* 建立第一个节点 */
       head = ( llink ) malloc(sizeof(node)); /* 配置记忆体 */
       if ( !head )                   /* 检查指标          */
          return NULL;
       head->num = array[0];          /* 建立节点内容      */
       head->next = NULL;             /* 设定指标初值      */
       ptr = head;                    /* 将ptr指向串列开始 */
       for ( i = 1; i < len; i++ )    /* 建立其它节点回路  */
       {
           ptr1 = ( llink ) malloc(sizeof(node));
           if ( !ptr1 )
              return NULL;
           ptr1->num = array[i];      /* 建立节点内容      */
           ptr1->next = NULL;         /* 设定指标初值      */
           ptr->next = ptr1;          /* 连结节点          */
           ptr = ptr->next;           /* 指向下一节点      */
       }
       return head;
    }

    /* ---------------------------------------- */
    /*  链结串列的连结                          */
    /* ---------------------------------------- */
    llink concatllist(llink ptr1,llink ptr2)
    {
       llink ptr;

       ptr = ptr1;                    /* 指向串列1的开始   */
       while ( ptr->next != NULL )    /* 找串列1的结束     */
          ptr = ptr->next;            /* 指向下一节点      */
       ptr->next = ptr2;              /* 连结串列2         */
       return ptr1;
    }

    /* ---------------------------------------- */
    /*  主程式: 连结两个由阵列内容所建立的串列. */
    /* ---------------------------------------- */
    void main()
    {
       int llist1[6] = { 1, 2, 3, 4, 5, 6 };  /* 阵列内容   */
       int llist2[5] = { 8, 19, 13, 24, 35 }; /* 阵列内容   */
       llink ptr,ptr1,ptr2;

       ptr1 = createllist(llist1,6);   /* 建立串列1         */
       if ( ptr1 == NULL )
       {
          printf("记忆体配置失败! \n");
          exit(1);
       }
       ptr2 = createllist(llist2,5);   /* 建立串列2         */
       if ( ptr2 == NULL )
       {
          printf("记忆体配置失败! \n");
          exit(1);
       }
       ptr = concatllist(ptr1,ptr2);  /* 连结两串列        */
       printllist(ptr);               /* 印出连结串列      */
       getch();
    }
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-21 00:47:18 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-25 11:46:07 | 显示全部楼层
    2楼的代码头文件中还需要加入#include <stdio.h>

    代码你们都写了,我就再介绍一二个C/C++的编译器吧.(它们都是Windows界面下的哦)

    1.Win-TC (只能编译C,里面还有例子,比较适合初学者)
    2.C-Free  (可以编译c/c++,写代码时有自动提示,可以免去不少输入错误,功能还不少)

    注:
    1是免费版本,可以直接使用;
    2是共享软件,10元注册费绝对值得,就别去找注册码了,交点钱给作者支持一下也不错)

    [ 本帖最后由 aspirer 于 2006-3-25 03:53 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-4-21 16:23:20 | 显示全部楼层
    原帖由 猫猫 于 2006-3-21 00:47 发表
    版主你好,我用DEV-C++编译后,应该另存为什么格式的来运行以查看结果呢?



    晕什么时候来了个猫猫?
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-4-22 12:09:25 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-4-25 19:39:26 | 显示全部楼层
    老大能否给推荐本书?
    全国计算机等级考试的教程怎么样?
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2018-8-12 16:11
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2006-5-22 14:37:03 | 显示全部楼层
    请问一下用DEV的,在DEV里编C,是不是没有头文件"graphics"的啊????
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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