紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2871|回复: 1

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

[复制链接]
冰糖 发表于 2013-6-15 00:02:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
首先下载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语言是深无底的,!





我来跟贴,大家来用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);
}






现在写起来怎么这么容易,以前上学时怎么觉得就那么难呢。。。。
双链表
#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();
}




2楼的代码头文件中还需要加入#include <stdio.h>

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

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

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

2908785909 发表于 2015-4-16 17:48:50 | 显示全部楼层
                  看看                        
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-4-20 16:45 , Processed in 0.515625 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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